aboutsummaryrefslogtreecommitdiff
path: root/libs/basic_games_native/src/gamedefs.h
blob: bda93eb3194037a88f3f55f676e42d5f5e8289d7 (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
#ifndef GAMEDEFS_H
#define GAMEDEFS_H

#include <uibase/iplugingame.h>

#include <QList>
#include <QString>
#include <QStringList>

#include <vector>

struct GameDefinition {
  // Plugin metadata
  QString pluginName;
  QString author;
  QString version;  // parsed as VersionInfo string

  // Game identity
  QString gameName;
  QString gameShortName;
  QStringList validShortNames;

  // Store IDs
  QList<int> steamAppIds;
  QList<int> gogAppIds;
  QStringList epicAppIds;

  // Executables
  QString binaryName;
  QString launcherName;

  // Nexus
  QString gameNexusName;
  int nexusGameId = 0;

  // Directories (may contain %DOCUMENTS%, %USERPROFILE%, %GAME_PATH%,
  // %GAME_DOCUMENTS%)
  QString dataDirectory;
  QString documentsDirectory;
  QString savesDirectory;
  QString saveExtension;

  // Configuration
  QStringList iniFiles;
  QString supportURL;

  // Load order / sorting
  MOBase::IPluginGame::LoadOrderMechanism loadOrderMechanism =
      MOBase::IPluginGame::LoadOrderMechanism::None;
  MOBase::IPluginGame::SortMechanism sortMechanism =
      MOBase::IPluginGame::SortMechanism::NONE;

  // Plugins
  QStringList primaryPlugins;
  QStringList dlcPlugins;
};

// Returns the complete list of all game definitions
const std::vector<GameDefinition>& allGameDefinitions();

#endif  // GAMEDEFS_H