World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Структура MapStats

#include <MapInfo.h>

+ Граф связей класса MapStats:

Открытые члены

void Initialize ()
 
MAP_TYPE GetMapInfo (const String &Str2)
 
int sub_410D99_get_map_index (int a1)
 

Открытые атрибуты

MapInfo pInfos [77]
 
unsigned int uNumMaps
 

Подробное описание

См. определение в файле MapInfo.h строка 75

Методы

◆ Initialize()

void MapStats::Initialize ( )

См. определение в файле MapInfo.cpp строка 47

47  {
48  String pMapStatsTXT = (char*)pEvents_LOD->LoadCompressedTexture("MapStats.txt");
49  std::stringstream stream(pMapStatsTXT);
50  String tmpString;
51  std::getline(stream, tmpString);
52  std::getline(stream, tmpString);
53  std::getline(stream, tmpString);
54 
55  char work_str[32];
56  int work_str_pos;
57  int work_str_len;
58 
59  size_t i = 1;
60  while (!stream.eof()) {
61  std::getline(stream, tmpString);
62  std::stringstream line(tmpString);
63  size_t decode_step = 0;
64  while (!line.eof()) {
65  std::getline(line, tmpString, '\t');
66  char test_string[1024];
67  strcpy(test_string, tmpString.c_str());
68  switch (decode_step) {
69  case 1:
70  pInfos[i].pName = RemoveQuotes(test_string); // randoms crashes here
71  break;
72  case 2:
73  pInfos[i].pFilename = MakeLower(RemoveQuotes(test_string));
74  break;
75  case 3:
76  pInfos[i].uNumResets = atoi(test_string);
77  break;
78  case 4:
79  pInfos[i].uFirstVisitedAt = atoi(test_string);
80  break;
81  case 5:
82  pInfos[i]._per = atoi(test_string);
83  break;
84  case 6:
85  pInfos[i].uRespawnIntervalDays = atoi(test_string);
86  break;
87  case 7:
88  pInfos[i]._alert_days = atoi(test_string);
89  break;
90  case 8:
91  pInfos[i]._steal_perm = atoi(test_string);
92  break;
93  case 9:
94  pInfos[i].LockX5 = atoi(test_string);
95  break;
96  case 10:
97  pInfos[i].Trap_D20 = atoi(test_string);
98  break;
99  case 11:
100  pInfos[i].Treasure_prob = atoi(test_string);
101  break;
102  case 12:
103  pInfos[i].Encounter_percent = atoi(test_string);
104  break;
105  case 13:
106  pInfos[i].EncM1percent = atoi(test_string);
107  break;
108  case 14:
109  pInfos[i].EncM2percent = atoi(test_string);
110  break;
111  case 15:
112  pInfos[i].EncM3percent = atoi(test_string);
113  break;
114  case 16:
116  break;
117  case 18:
118  pInfos[i].Dif_M1 = atoi(test_string);
119  break;
120  case 19:
123  strcpy(work_str, test_string);
124  work_str_pos = 0;
125  work_str_len = strlen(work_str);
126  if (work_str_len) {
127  while (work_str[work_str_pos] != '-') {
128  ++work_str_pos;
129  if (work_str_pos >= work_str_len) break;
130  }
131  work_str[work_str_pos] = 0;
132  pInfos[i].uEncounterMonster1AtLeast = atoi(work_str);
133  if (work_str_pos < work_str_len)
134  pInfos[i].uEncounterMonster1AtMost = atoi(&work_str[work_str_pos + 1]);
135  else
137  }
138  break;
139  case 20:
141  break;
142  case 22:
143  pInfos[i].Dif_M2 = atoi(test_string);
144  break;
145  case 23:
148  strcpy(work_str, test_string);
149  work_str_pos = 0;
150  work_str_len = strlen(work_str);
151  if (work_str_len) {
152  while (work_str[work_str_pos] != '-') {
153  ++work_str_pos;
154  if (work_str_pos >= work_str_len) break;
155  }
156  work_str[work_str_pos] = 0;
157  pInfos[i].uEncounterMonster2AtLeast = atoi(work_str);
158  if (work_str_pos < work_str_len)
159  pInfos[i].uEncounterMonster2AtMost = atoi(&work_str[work_str_pos + 1]);
160  else
162  }
163  break;
164  case 24:
166  break;
167  case 26:
168  pInfos[i].Dif_M3 = atoi(test_string);
169  break;
170  case 27:
173  strcpy(work_str, test_string);
174  work_str_pos = 0;
175  work_str_len = strlen(work_str);
176  if (work_str_len) {
177  while (work_str[work_str_pos] != '-') {
178  ++work_str_pos;
179  if (work_str_pos >= work_str_len) break;
180  }
181  work_str[work_str_pos] = 0;
182  pInfos[i].uEncounterMonster3AtLeast = atoi(work_str);
183  if (work_str_pos < work_str_len)
184  pInfos[i].uEncounterMonster3AtMost = atoi(&work_str[work_str_pos + 1]);
185  else
187  }
188  break;
189  case 28:
190  pInfos[i].uRedbookTrackID = atoi(test_string);
191  break;
192  case 29: {
193  pInfos[i].uEAXEnv = 0xff;
194  for (int j = 0; j < 25; j++) {
195  if (!strcmp(test_string, location_type[j])) {
196  pInfos[i].uEAXEnv = j;
197  break;
198  }
199  }
200  if (pInfos[i].uEAXEnv == 0xff) {
201  pInfos[i].uEAXEnv = 26;
202  }
203  } break;
204  }
205  decode_step++;
206  }
207  i++;
208  }
209 
210  uNumMaps = i - 1;
211 }

Перекрестные ссылки MapInfo::_alert_days, MapInfo::_per, MapInfo::_steal_perm, MapInfo::Dif_M1, MapInfo::Dif_M2, MapInfo::Dif_M3, MapInfo::EncM1percent, MapInfo::EncM2percent, MapInfo::EncM3percent, MapInfo::Encounter_percent, LOD::File::LoadCompressedTexture(), location_type, MapInfo::LockX5, MakeLower(), MapInfo::pEncounterMonster1Texture, MapInfo::pEncounterMonster2Texture, MapInfo::pEncounterMonster3Texture, pEvents_LOD, MapInfo::pFilename, pInfos, MapInfo::pName, RemoveQuotes(), MapInfo::Trap_D20, MapInfo::Treasure_prob, MapInfo::uEAXEnv, MapInfo::uEncounterMonster1AtLeast, MapInfo::uEncounterMonster1AtMost, MapInfo::uEncounterMonster2AtLeast, MapInfo::uEncounterMonster2AtMost, MapInfo::uEncounterMonster3AtLeast, MapInfo::uEncounterMonster3AtMost, MapInfo::uFirstVisitedAt, uNumMaps, MapInfo::uNumResets, MapInfo::uRedbookTrackID и MapInfo::uRespawnIntervalDays.

Используется в ItemsTable::Initialize().

+ Граф вызовов:
+ Граф вызова функции:

◆ GetMapInfo()

MAP_TYPE MapStats::GetMapInfo ( const String Str2)

См. определение в файле MapInfo.cpp строка 225

225  {
226  Assert(uNumMaps >= 2);
227 
228  String map_name = MakeLower(Str2);
229 
230  for (uint i = 1; i < uNumMaps; ++i) {
231  if (pInfos[i].pFilename == map_name) {
232  return (MAP_TYPE)i;
233  }
234  }
235 
236  Error("Map not found!");
237  return (MAP_TYPE)-1;
238 }

Перекрестные ссылки MakeLower(), pInfos и uNumMaps.

Используется в Engine::_461103_load_level_sub(), BuildDialogueString(), DoPrepareWorld(), Application::Game::EventLoop(), SpriteObject::ExplosionTraps(), GameUI_GetMinimapHintText(), GenerateItemsInChest(), GUIWindow_Transition::GUIWindow_Transition(), GUIWindow_Travel::GUIWindow_Travel(), ODM_LoadAndInitialize(), Chest::Open(), PlayLevelMusic(), PrepareToLoadBLV(), OutdoorLocation::SetFog(), Actor::StealFrom(), sub_448CF4_spawn_monsters(), UI_DrawSaveLoad(), UIShop_Buy_Identify_Repair(), GUIWindow_CalendarBook::Update(), GUIWindow_MapBook::Update(), GUIWindow_Travel::Update() и GUIWindow_Transition::Update().

+ Граф вызовов:
+ Граф вызова функции:

◆ sub_410D99_get_map_index()

int MapStats::sub_410D99_get_map_index ( int  a1)

См. определение в файле MapInfo.cpp строка 213

213  {
215 
216  for (int i = 1; i <= pMapStats->uNumMaps; i++) {
217  if (pMapStats->pInfos[i].pFilename == name) {
218  return i;
219  }
220  }
221  Error("Map not found");
222  return -1;
223 }

Перекрестные ссылки LOD::File::GetSubNodeName(), MapInfo::pFilename, pGames_LOD, pInfos, pMapStats и uNumMaps.

Используется в Application::Game::EventLoop() и GUIWindow_LloydsBook::Update().

+ Граф вызовов:
+ Граф вызова функции:

Данные класса

◆ pInfos

◆ uNumMaps

unsigned int MapStats::uNumMaps

См. определение в файле MapInfo.h строка 80

Используется в Application::Game::EventLoop(), GetMapInfo(), Initialize() и sub_410D99_get_map_index().


Объявления и описания членов структур находятся в файлах:
MapInfo::EncM2percent
char EncM2percent
Definition: MapInfo.h:55
MapInfo::_alert_days
int _alert_days
Definition: MapInfo.h:46
RemoveQuotes
char * RemoveQuotes(char *str)
Definition: Strings.h:17
MapStats::pInfos
MapInfo pInfos[77]
Definition: MapInfo.h:79
MapInfo::pEncounterMonster1Texture
String pEncounterMonster1Texture
Definition: MapInfo.h:40
LOD::File::LoadCompressedTexture
void * LoadCompressedTexture(const String &pContainer, size_t *data_size=nullptr)
Definition: LOD.cpp:921
MapInfo::uEncounterMonster2AtMost
uint8_t uEncounterMonster2AtMost
Definition: MapInfo.h:62
MapInfo::_per
int _per
Definition: MapInfo.h:48
MapInfo::uEncounterMonster3AtMost
uint8_t uEncounterMonster3AtMost
Definition: MapInfo.h:65
MapInfo::Trap_D20
char Trap_D20
Definition: MapInfo.h:51
MapInfo::EncM3percent
char EncM3percent
Definition: MapInfo.h:56
MapInfo::uEncounterMonster1AtMost
uint8_t uEncounterMonster1AtMost
Definition: MapInfo.h:59
pMapStats
struct MapStats * pMapStats
Definition: mm7_data.cpp:20
MapInfo::LockX5
char LockX5
Definition: MapInfo.h:50
MapInfo::EncM1percent
char EncM1percent
Definition: MapInfo.h:54
MapInfo::Dif_M3
char Dif_M3
Definition: MapInfo.h:63
MapInfo::uEncounterMonster3AtLeast
uint8_t uEncounterMonster3AtLeast
Definition: MapInfo.h:64
MapInfo::Dif_M1
char Dif_M1
Definition: MapInfo.h:57
location_type
const char * location_type[]
Definition: MapInfo.cpp:18
MapStats::uNumMaps
unsigned int uNumMaps
Definition: MapInfo.h:80
MapInfo::uFirstVisitedAt
unsigned int uFirstVisitedAt
Definition: MapInfo.h:44
MapInfo::uEncounterMonster1AtLeast
uint8_t uEncounterMonster1AtLeast
Definition: MapInfo.h:58
MapInfo::pName
String pName
Definition: MapInfo.h:38
MapInfo::uEncounterMonster2AtLeast
uint8_t uEncounterMonster2AtLeast
Definition: MapInfo.h:61
pGames_LOD
LOD::File * pGames_LOD
Definition: LOD.cpp:25
stream
EGLStreamKHR stream
Definition: SDL_egl.h:1082
pEvents_LOD
LODFile_IconsBitmaps * pEvents_LOD
Definition: LOD.cpp:10
MapInfo::uEAXEnv
uint8_t uEAXEnv
Definition: MapInfo.h:70
MapInfo::Dif_M2
char Dif_M2
Definition: MapInfo.h:60
MapInfo::pEncounterMonster3Texture
String pEncounterMonster3Texture
Definition: MapInfo.h:42
MapInfo::uRedbookTrackID
uint8_t uRedbookTrackID
Definition: MapInfo.h:69
name
EGLImageKHR EGLint * name
Definition: SDL_egl.h:1497
MAP_TYPE
MAP_TYPE
Definition: MapInfo.h:5
MapInfo::Encounter_percent
char Encounter_percent
Definition: MapInfo.h:53
uint
unsigned int uint
Definition: MM7.h:4
MapInfo::_steal_perm
int _steal_perm
Definition: MapInfo.h:47
LOD::File::GetSubNodeName
String GetSubNodeName(size_t index) const
Definition: LOD.h:71
MakeLower
String MakeLower(const String &text)
Definition: Strings.cpp:43
MapInfo::pFilename
String pFilename
Definition: MapInfo.h:39
MapInfo::uRespawnIntervalDays
unsigned int uRespawnIntervalDays
Definition: MapInfo.h:45
MapInfo::Treasure_prob
char Treasure_prob
Definition: MapInfo.h:52
MapInfo::uNumResets
unsigned int uNumResets
Definition: MapInfo.h:43
String
std::string String
Definition: Strings.h:10
MapInfo::pEncounterMonster2Texture
String pEncounterMonster2Texture
Definition: MapInfo.h:41