World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Класс DecorationList

#include <DecorationList.h>

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

 DecorationList ()
 
void ToFile ()
 
void FromFile (void *data_mm6, void *data_mm7, void *data_mm8)
 
void InitializeDecorationSprite (unsigned int uDecID)
 
uint16_t GetDecorIdByName (const char *pName)
 
DecorationDescGetDecoration (unsigned int index)
 

Защищенные данные

std::vector< DecorationDescpDecorations
 

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

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

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

◆ DecorationList()

DecorationList::DecorationList ( )
inline

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

59 {}

Методы

◆ ToFile()

void DecorationList::ToFile ( )

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

49  {
50  FILE *file = fopen("data\\ddeclist.bin", "wb");
51  if (file == nullptr) {
52  Error("Unable to save ddeclist.bin!", 0);
53  }
54 
55  fwrite(this, 4, 1, file);
56  fwrite(&pDecorations[0], sizeof(DecorationDesc), pDecorations.size(), file);
57  fclose(file);
58 }

Перекрестные ссылки pDecorations.

◆ FromFile()

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

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

14  {
15  size_t num_mm6_decs = data_mm6 ? *(uint32_t*)data_mm6 : 0;
16  size_t num_mm7_decs = data_mm7 ? *(uint32_t*)data_mm7 : 0;
17  size_t num_mm8_decs = data_mm8 ? *(uint32_t*)data_mm8 : 0;
18 
19  size_t uNumDecorations = num_mm6_decs + num_mm7_decs + num_mm8_decs;
20  Assert(uNumDecorations);
21  Assert(!num_mm8_decs);
22 
23  DecorationDesc *decors = (DecorationDesc*)((char*)data_mm7 + 4);
24  for (size_t i = 0; i < num_mm7_decs; i++) {
25  pDecorations.push_back(decors[i]);
26  }
27 
28  DecorationDesc_mm6 *decors_mm6 = (DecorationDesc_mm6*)((char*)data_mm6 + 4);
29  for (size_t i = 0; i < num_mm6_decs; ++i) {
30  DecorationDesc decor;
31  memcpy(&decor, &decors_mm6[i], sizeof(DecorationDesc_mm6));
32  decor.uColoredLightRed = 255;
33  decor.uColoredLightGreen = 255;
34  decor.uColoredLightBlue = 255;
35  decor.__padding = 255;
36  pDecorations.push_back(decor);
37  }
38 
39  DecorationDesc *decors_mm8 = (DecorationDesc*)((char*)data_mm8 + 4);
40  for (size_t i = 0; i < num_mm8_decs; i++) {
41  pDecorations.push_back(decors_mm8[i]);
42  }
43 }

Перекрестные ссылки DecorationDesc::__padding, pDecorations, DecorationDesc::uColoredLightBlue, DecorationDesc::uColoredLightGreen и DecorationDesc::uColoredLightRed.

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

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

◆ InitializeDecorationSprite()

void DecorationList::InitializeDecorationSprite ( unsigned int  uDecID)

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

45  {
46  pSpriteFrameTable->InitializeSprite(this->pDecorations[uDecID].uSpriteID);
47 }

Перекрестные ссылки SpriteFrameTable::InitializeSprite(), pDecorations и pSpriteFrameTable.

Используется в OutdoorLocation::PrepareDecorations(), PrepareToLoadBLV() и SetDecorationSprite().

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

◆ GetDecorIdByName()

uint16_t DecorationList::GetDecorIdByName ( const char *  pName)

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

60  {
61  if (pName && pDecorations.size() > 1) {
62  for (uint uID = 1; uID < pDecorations.size(); ++uID) {
63  if (!_stricmp(pName, pDecorations[uID].pName)) return uID;
64  }
65  }
66 
67  return 0;
68 }

Перекрестные ссылки pDecorations.

Используется в init_event_triggers(), OutdoorLocation::Load(), IndoorLocation::Load(), SetDecorationSprite() и TeleportToStartingPoint().

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

◆ GetDecoration()

DecorationDesc* DecorationList::GetDecoration ( unsigned int  index)
inline

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

65  {
66  return &pDecorations[index];
67  }

Перекрестные ссылки pDecorations.

Используется в _46E0B2_collide_against_decorations(), _46E26D_collide_against_sprites(), GameUI_WritePointedObjectStatusString(), Engine::OnGameViewportClick(), Chest::Open(), OutdoorLocation::PrepareDecorations(), IndoorLocation::PrepareDecorationsRenderList_BLV(), RenderOpenGL::PrepareDecorationsRenderList_ODM(), Render::PrepareDecorationsRenderList_ODM(), PrepareToLoadBLV() и PrepareToLoadODM().

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

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

◆ pDecorations

std::vector<DecorationDesc> DecorationList::pDecorations
protected

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

Используется в FromFile(), GetDecoration(), GetDecorIdByName(), InitializeDecorationSprite() и ToFile().


Объявления и описания членов классов находятся в файлах:
pSpriteFrameTable
struct SpriteFrameTable * pSpriteFrameTable
Definition: Sprites.cpp:22
DecorationDesc::uColoredLightRed
uint8_t uColoredLightRed
Definition: DecorationList.h:50
DecorationList::pDecorations
std::vector< DecorationDesc > pDecorations
Definition: DecorationList.h:70
index
GLuint index
Definition: SDL_opengl_glext.h:663
SpriteFrameTable::InitializeSprite
void InitializeSprite(signed int uSpriteID)
Definition: Sprites.cpp:46
uint
unsigned int uint
Definition: MM7.h:4
DecorationDesc_mm6
Definition: DecorationList.h:25
DecorationDesc
Definition: DecorationList.h:49
DecorationDesc::__padding
char __padding
Definition: DecorationList.h:53
DecorationDesc::uColoredLightBlue
uint8_t uColoredLightBlue
Definition: DecorationList.h:52
uint32_t
unsigned __int32 uint32_t
Definition: SDL_config.h:39
DecorationDesc::uColoredLightGreen
uint8_t uColoredLightGreen
Definition: DecorationList.h:51