This repository was archived by the owner on Jul 19, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathstandalonegameinfo.h
143 lines (95 loc) · 4.33 KB
/
standalonegameinfo.h
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
* This file is part of the random scenario generator for Disciples 2.
* (https://github.com/VladimirMakeev/D2RSG)
* Copyright (C) 2023 Vladimir Makeev.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "gameinfo.h"
#include <filesystem>
namespace rsg {
// Game interface for standalone generator builds
class StandaloneGameInfo final : public GameInfo
{
public:
StandaloneGameInfo(const std::filesystem::path& gameFolderPath);
~StandaloneGameInfo() override = default;
const UnitsInfo& getUnits() const override;
const UnitInfoArray& getLeaders() const override;
const UnitInfoArray& getSoldiers() const override;
int getMinLeaderValue() const override;
int getMaxLeaderValue() const override;
int getMinSoldierValue() const override;
int getMaxSoldierValue() const override;
const ItemsInfo& getItemsInfo() const override;
const ItemInfoArray& getItems() const override;
const ItemInfoArray& getItems(ItemType itemType) const override;
const SpellsInfo& getSpellsInfo() const override;
const SpellInfoArray& getSpells() const override;
const SpellInfoArray& getSpells(SpellType spellType) const override;
const LandmarksInfo& getLandmarksInfo() const override;
const LandmarkInfoArray& getLandmarks(LandmarkType landmarkType) const override;
const LandmarkInfoArray& getLandmarks(RaceType raceType) const override;
const LandmarkInfoArray& getMountainLandmarks() const override;
const RacesInfo& getRacesInfo() const override;
const RaceInfo& getRaceInfo(RaceType raceType) const override;
const char* getGlobalText(const CMidgardID& textId) const override;
const char* getEditorInterfaceText(const CMidgardID& textId) const override;
const CityNames& getCityNames() const override;
const SiteTexts& getMercenaryTexts() const override;
const SiteTexts& getMageTexts() const override;
const SiteTexts& getMerchantTexts() const override;
const SiteTexts& getRuinTexts() const override;
const SiteTexts& getTrainerTexts() const override;
private:
bool readGameInfo(const std::filesystem::path& gameFolderPath);
bool readUnitsInfo(const std::filesystem::path& globalsFolderPath);
bool readItemsInfo(const std::filesystem::path& globalsFolderPath);
bool readSpellsInfo(const std::filesystem::path& globalsFolderPath);
bool readLandmarksInfo(const std::filesystem::path& globalsFolderPath);
bool readRacesInfo(const std::filesystem::path& globalsFolderPath);
bool readGlobalTexts(const std::filesystem::path& globalsFolderPath);
bool readEditorInterfaceTexts(const std::filesystem::path& interfFolderPath);
bool readCityNames(const std::filesystem::path& scenDataFolderPath);
bool readSiteTexts(const std::filesystem::path& scenDataFolderPath);
const char* getText(const TextsInfo& texts, const CMidgardID& textId) const;
UnitsInfo unitsInfo{};
UnitInfoArray leaders{};
UnitInfoArray soldiers{};
int minLeaderValue{};
int maxLeaderValue{};
int minSoldierValue{};
int maxSoldierValue{};
ItemsInfo itemsInfo;
ItemInfoArray allItems;
std::map<ItemType, ItemInfoArray> itemsByType;
SpellsInfo spellsInfo;
SpellInfoArray allSpells;
std::map<SpellType, SpellInfoArray> spellsByType;
LandmarksInfo landmarksInfo;
std::map<LandmarkType, LandmarkInfoArray> landmarksByType;
std::map<RaceType, LandmarkInfoArray> landmarksByRace;
LandmarkInfoArray mountainLandmarks;
RacesInfo racesInfo;
TextsInfo globalTexts;
TextsInfo editorInterfaceTexts;
CityNames cityNames;
SiteTexts mercenaryTexts;
SiteTexts mageTexts;
SiteTexts merchantTexts;
SiteTexts ruinTexts;
SiteTexts trainerTexts;
};
} // namespace rsg