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

#include <ObjectList.h>

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

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

 ObjectList ()
 
void FromFile (void *data_mm6, void *data_mm7, void *data_mm8)
 
void InitializeSprites ()
 
void InitializeColors ()
 
unsigned int ObjectIDByItemID (unsigned int uItemID)
 

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

struct ObjectDescpObjects
 

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

unsigned int uNumObjects
 

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

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

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

◆ ObjectList()

ObjectList::ObjectList ( )
inline

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

43 : uNumObjects(0), pObjects(nullptr) {}

Методы

◆ FromFile()

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

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

55  {
56  static_assert(sizeof(ObjectDesc_mm6) == 52, "Wrong type size");
57  static_assert(sizeof(ObjectDesc) == 56, "Wrong type size");
58 
59  unsigned int num_mm6_objs = data_mm6 ? *(uint32_t*)data_mm6 : 0;
60  unsigned int num_mm7_objs = data_mm7 ? *(uint32_t*)data_mm7 : 0;
61  unsigned int num_mm8_objs = data_mm8 ? *(uint32_t*)data_mm8 : 0;
62 
63  uNumObjects = num_mm6_objs + num_mm7_objs + num_mm8_objs;
64  assert(uNumObjects != 0);
65  assert(num_mm8_objs == 0);
66 
67  pObjects = (ObjectDesc*)malloc(uNumObjects * sizeof(ObjectDesc));
68  memcpy(pObjects, (char*)data_mm7 + 4, num_mm7_objs * sizeof(ObjectDesc));
69  for (unsigned int i = 0; i < num_mm6_objs; ++i) {
70  auto src = (ObjectDesc_mm6 *)((char *)data_mm6 + 4) + i;
71  ObjectDesc *dst = &pObjects[num_mm7_objs + i];
72  memcpy(dst->field_0, src->field_0, sizeof(dst->field_0));
73  dst->uObjectID = src->uObjectID;
74  dst->uRadius = src->uRadius;
75  dst->uHeight = src->uHeight;
76  dst->uFlags = src->uFlags;
77  dst->uSpriteID = src->uSpriteID;
78  dst->uLifetime = src->uLifetime;
79  dst->uParticleTrailColor = src->uParticleTrailColor;
80  dst->uSpeed = src->uSpeed;
81  dst->uParticleTrailColorR = src->uParticleTrailColorR;
82  dst->uParticleTrailColorG = src->uParticleTrailColorG;
83  dst->uParticleTrailColorB = src->uParticleTrailColorB;
84  dst->field_35_clr = src->field_35_clr;
85  dst->field_36_clr = 0;
86  dst->field_37_clr = 0;
87  }
88 }

Перекрестные ссылки pObjects и uNumObjects.

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

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

◆ InitializeSprites()

void ObjectList::InitializeSprites ( )

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

20  {
21  for (unsigned int i = 0; i < uNumObjects; ++i) {
23  }
24 }

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

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

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

◆ InitializeColors()

void ObjectList::InitializeColors ( )

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

26  {
27  for (unsigned int i = 0; i < pObjectList->uNumObjects; ++i) {
29  ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorB) |
30  ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorG << 8) |
31  ((unsigned int)pObjectList->pObjects[i].uParticleTrailColorR << 16);
32  }
33 }

Перекрестные ссылки pObjectList, pObjects, uNumObjects, ObjectDesc::uParticleTrailColor, ObjectDesc::uParticleTrailColorB, ObjectDesc::uParticleTrailColorG и ObjectDesc::uParticleTrailColorR.

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

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

◆ ObjectIDByItemID()

unsigned int ObjectList::ObjectIDByItemID ( unsigned int  uItemID)

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

7  {
8  unsigned int res = 0;
9 
10  for (unsigned int i = 0; i < uNumObjects; i++) {
11  if (uItemID == pObjects[i].uObjectID) {
12  res = i;
13  break;
14  }
15  }
16 
17  return res;
18 }

Перекрестные ссылки pObjects и uNumObjects.

Используется в CastSpellInfoHelpers::_427E01_cast_spell(), Player::_42FA66_do_explosive_impact(), _46BFFA_update_spell_fx(), _493938_regenerate(), Actor::AI_RangedAttack(), SpriteObject::Create_Splash_Object(), Engine::DropHeldItem(), EventCastSpell(), Actor::Explode(), Actor::GetObjDescId(), IndoorLocation::Load(), Chest::Open(), MapInfo::SpawnRandomTreasure(), Party::sub_421B2C_PlaceInInventory_or_DropPickedItem(), SpriteObject::sub_42F7EB_DropItemAt() и sub_450521_ProllyDropItemAt().

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

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

◆ uNumObjects

unsigned int ObjectList::uNumObjects
protected

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

Используется в FromFile(), InitializeColors(), InitializeSprites() и ObjectIDByItemID().

◆ pObjects


Объявления и описания членов классов находятся в файлах:
pSpriteFrameTable
struct SpriteFrameTable * pSpriteFrameTable
Definition: Sprites.cpp:22
ObjectDesc
Definition: ObjectList.h:20
ObjectDesc::uParticleTrailColor
uint32_t uParticleTrailColor
Definition: ObjectList.h:30
src
GLenum src
Definition: SDL_opengl_glext.h:1740
ObjectDesc_mm6
Definition: ObjectList.cpp:36
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1740
SpriteFrameTable::InitializeSprite
void InitializeSprite(signed int uSpriteID)
Definition: Sprites.cpp:46
ObjectDesc::uParticleTrailColorB
uint8_t uParticleTrailColorB
Definition: ObjectList.h:34
ObjectDesc::uParticleTrailColorG
uint8_t uParticleTrailColorG
Definition: ObjectList.h:33
ObjectList::uNumObjects
unsigned int uNumObjects
Definition: ObjectList.h:51
ObjectList::pObjects
struct ObjectDesc * pObjects
Definition: ObjectList.h:54
ObjectDesc::uParticleTrailColorR
uint8_t uParticleTrailColorR
Definition: ObjectList.h:32
res
GLuint res
Definition: SDL_opengl_glext.h:7940
uint32_t
unsigned __int32 uint32_t
Definition: SDL_config.h:39
pObjectList
struct ObjectList * pObjectList
Definition: ObjectList.cpp:5