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

#include <Overlays.h>

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

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

 OverlayList ()
 
void ToFile ()
 
void FromFile (void *data_mm6, void *data_mm7, void *data_mm8)
 
bool FromFileTxt (const char *Args)
 
void InitializeSprites ()
 

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

unsigned int uNumOverlays
 
struct OverlayDescpOverlays
 

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

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

Конструктор(ы)

◆ OverlayList()

OverlayList::OverlayList ( )
inline

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

55  : //----- (00458474)
56  uNumOverlays(0),
57  pOverlays(nullptr) {}

Методы

◆ ToFile()

void OverlayList::ToFile ( )

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

106  {
107  FILE *v2; // eax@1
108  // FILE *v3; // edi@1
109 
110  v2 = fopen("data\\doverlay.bin", "wb");
111  // v3 = v2;
112  if (!v2) Error("Unable to save doverlay.bin!");
113  fwrite(this, 4, 1, v2);
114  fwrite(this->pOverlays, 8, this->uNumOverlays, v2);
115  fclose(v2);
116 }

Перекрестные ссылки pOverlays и uNumOverlays.

◆ FromFile()

void OverlayList::FromFile ( void data_mm6,
void data_mm7,
void data_mm8 
)

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

119  {
120  uint num_mm6_overlays = data_mm6 ? *(int *)data_mm6 : 0,
121  num_mm7_overlays = data_mm7 ? *(int *)data_mm7 : 0,
122  num_mm8_overlays = data_mm8 ? *(int *)data_mm8 : 0;
123 
124  uNumOverlays = num_mm6_overlays + num_mm7_overlays + num_mm8_overlays;
125  Assert(uNumOverlays);
126  Assert(!num_mm8_overlays);
127 
128  pOverlays = (OverlayDesc *)malloc(uNumOverlays * sizeof(OverlayDesc));
129  memcpy(pOverlays, (char *)data_mm7 + 4,
130  num_mm7_overlays * sizeof(OverlayDesc));
131  memcpy(pOverlays + num_mm7_overlays, (char *)data_mm6 + 4,
132  num_mm6_overlays * sizeof(OverlayDesc));
133  memcpy(pOverlays + num_mm6_overlays + num_mm7_overlays,
134  (char *)data_mm8 + 4, num_mm8_overlays * sizeof(OverlayDesc));
135 }

Перекрестные ссылки pOverlays и uNumOverlays.

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

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

◆ FromFileTxt()

bool OverlayList::FromFileTxt ( const char *  Args)

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

138  {
139  __int32 v3; // edi@1
140  FILE *v4; // eax@1
141  unsigned int v5; // esi@3
142  void *v7; // eax@9
143  // FILE *v8; // ST0C_4@11
144  char *i; // eax@11
145  char Buf; // [sp+10h] [bp-2F0h]@3
146  FrameTableTxtLine v18; // [sp+204h] [bp-FCh]@4
147  FrameTableTxtLine v19; // [sp+280h] [bp-80h]@4
148  FILE *File; // [sp+2FCh] [bp-4h]@1
149  unsigned int Argsa; // [sp+308h] [bp+8h]@3
150 
151  free(this->pOverlays);
152  v3 = 0;
153  this->pOverlays = nullptr;
154  this->uNumOverlays = 0;
155  v4 = fopen(Args, "r");
156  File = v4;
157  if (!v4) Error("ObjectDescriptionList::load - Unable to open file: %s.");
158 
159  v5 = 0;
160  Argsa = 0;
161  if (fgets(&Buf, 490, v4)) {
162  do {
163  *strchr(&Buf, 10) = 0;
164  memcpy(&v19, txt_file_frametable_parser(&Buf, &v18), sizeof(v19));
165  if (v19.uPropCount && *v19.pProperties[0] != 47) ++Argsa;
166  } while (fgets(&Buf, 490, File));
167  v5 = Argsa;
168  v3 = 0;
169  }
170  this->uNumOverlays = v5;
171  v7 = malloc(sizeof(OverlayDesc) * v5);
172  this->pOverlays = (OverlayDesc *)v7;
173  if (v7 == NULL)
174  Error("OverlayDescriptionList::load - Out of Memory!");
175 
176  memset(v7, v3, sizeof(OverlayDesc) * this->uNumOverlays);
177  // v8 = File;
178  this->uNumOverlays = v3;
179  fseek(File, v3, v3);
180  for (i = fgets(&Buf, 490, File); i; i = fgets(&Buf, 490, File)) {
181  *strchr(&Buf, 10) = 0;
182  memcpy(&v19, txt_file_frametable_parser(&Buf, &v18), sizeof(v19));
183  if (v19.uPropCount && *v19.pProperties[0] != 47) {
184  this->pOverlays[this->uNumOverlays].uOverlayID =
185  atoi(v19.pProperties[0]);
186  if (_stricmp(v19.pProperties[1], "center")) {
187  if (!_stricmp(v19.pProperties[1], "transparent"))
188  this->pOverlays[this->uNumOverlays].uOverlayType = 2;
189  else
190  this->pOverlays[this->uNumOverlays].uOverlayType = 1;
191  } else {
192  this->pOverlays[this->uNumOverlays].uOverlayType = 0;
193  }
194  this->pOverlays[this->uNumOverlays++].uSpriteFramesetID =
196  }
197  }
198  fclose(File);
199  return 1;
200 }

Перекрестные ссылки SpriteFrameTable::FastFindSprite(), pOverlays, FrameTableTxtLine::pProperties, pSpriteFrameTable, txt_file_frametable_parser(), uNumOverlays, OverlayDesc::uOverlayID, OverlayDesc::uOverlayType, FrameTableTxtLine::uPropCount и OverlayDesc::uSpriteFramesetID.

+ Граф вызовов:

◆ InitializeSprites()

void OverlayList::InitializeSprites ( )

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

100  {
101  for (uint i = 0; i < uNumOverlays; ++i)
103 }

Перекрестные ссылки SpriteFrameTable::InitializeSprite(), pOverlays, pSpriteFrameTable, uNumOverlays и OverlayDesc::uSpriteFramesetID.

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

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

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

◆ uNumOverlays

unsigned int OverlayList::uNumOverlays

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

Используется в OtherOverlayList::_4418B6(), FromFile(), FromFileTxt(), InitializeSprites() и ToFile().

◆ pOverlays

struct OverlayDesc* OverlayList::pOverlays

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

Используется в OtherOverlayList::_4418B6(), _441A4E_overlay_on_portrait(), FromFile(), FromFileTxt(), InitializeSprites() и ToFile().


Объявления и описания членов структур находятся в файлах:
OverlayDesc::uOverlayID
uint16_t uOverlayID
Definition: Overlays.h:45
FrameTableTxtLine::uPropCount
int uPropCount
Definition: FrameTableInc.h:12
FrameTableTxtLine::pProperties
const char * pProperties[30]
Definition: FrameTableInc.h:13
OverlayDesc
Definition: Overlays.h:44
pSpriteFrameTable
struct SpriteFrameTable * pSpriteFrameTable
Definition: Sprites.cpp:22
OverlayDesc::uSpriteFramesetID
uint16_t uSpriteFramesetID
Definition: Overlays.h:47
OverlayDesc::uOverlayType
uint16_t uOverlayType
Definition: Overlays.h:46
SpriteFrameTable::InitializeSprite
void InitializeSprite(signed int uSpriteID)
Definition: Sprites.cpp:46
txt_file_frametable_parser
FrameTableTxtLine * txt_file_frametable_parser(const char *str_to_parse, FrameTableTxtLine *tokens_table)
Definition: FrameTableInc.cpp:8
SpriteFrameTable::FastFindSprite
int FastFindSprite(const char *pSpriteName)
Definition: Sprites.cpp:243
v2
GLfloat GLfloat GLfloat v2
Definition: SDL_opengl_glext.h:695
uint
unsigned int uint
Definition: MM7.h:4
v3
GLfloat GLfloat GLfloat GLfloat v3
Definition: SDL_opengl_glext.h:696
OverlayList::uNumOverlays
unsigned int uNumOverlays
Definition: Overlays.h:64
OverlayList::pOverlays
struct OverlayDesc * pOverlays
Definition: Overlays.h:65
FrameTableTxtLine
Definition: FrameTableInc.h:11