aboutsummaryrefslogtreecommitdiff
path: root/libs/game_bethesda/src/gamebryo/gamebryomoddatacontent.h
blob: be023318ab3e60121e2d8dcadc9390eceb321e96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#ifndef GAMEBRYO_MODDATACONTENT_H
#define GAMEBRYO_MODDATACONTENT_H

#include <ifiletree.h>
#include <moddatacontent.h>

namespace MOBase
{
class IGameFeatures;
}

/**
 * @brief ModDataContent for GameBryo games.
 *
 */
class GamebryoModDataContent : public MOBase::ModDataContent
{
protected:
  /**
   * Note: These are used to index m_Enabled so should have standard
   * enum values, not custom ones.
   */
  enum EContent
  {
    CONTENT_PLUGIN,
    CONTENT_OPTIONAL,
    CONTENT_TEXTURE,
    CONTENT_MESH,
    CONTENT_BSA,
    CONTENT_INTERFACE,
    CONTENT_SOUND,
    CONTENT_SCRIPT,
    CONTENT_SKSE,
    CONTENT_SKSE_FILES,
    CONTENT_SKYPROC,
    CONTENT_MCM,
    CONTENT_INI,
    CONTENT_FACEGEN,
    CONTENT_MODGROUP
  };

  /**
   * This is the first value that can be used for game-specific contents.
   */
  constexpr static auto CONTENT_NEXT_VALUE = CONTENT_MODGROUP + 1;

public:
  /**
   *
   */
  GamebryoModDataContent(const MOBase::IGameFeatures* gameFeatures);

  /**
   * @return the list of all possible contents for the corresponding game.
   */
  virtual std::vector<Content> getAllContents() const override;

  /**
   * @brief Retrieve the list of contents in the given tree.
   *
   * @param fileTree The tree corresponding to the mod to retrieve contents for.
   *
   * @return the IDs of the content in the given tree.
   */
  virtual std::vector<int>
  getContentsFor(std::shared_ptr<const MOBase::IFileTree> fileTree) const override;

protected:
  MOBase::IGameFeatures const* const m_GameFeatures;

  // List of enabled contents:
  std::vector<bool> m_Enabled;
};

#endif  // GAMEBRYO_MODDATACONTENT_H