World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Chest.h
См. документацию.
1 #pragma once
2 
3 #include <vector>
4 
5 #include "Engine/Objects/Items.h"
6 #include "Engine/Strings.h"
7 
8 enum CHEST_FLAGS {
9  CHEST_TRAPPED = 0x1,
11  CHEST_OPENED = 0x4,
12 };
13 
14 struct ChestDesc {
15  explicit ChestDesc(struct ChestDesc_mm7 *pChest);
16 
18  unsigned int uWidth;
19  unsigned int uHeight;
20  unsigned int uTextureID;
21 };
22 
23 class ChestList {
24  public:
25  ChestList() {}
26 
27  void FromFile(void *data_mm6, void *data_mm7, void *data_mm8);
28 
29  public:
30  std::vector<ChestDesc> vChests;
31 };
32 
33 /* 65 */
34 #pragma pack(push, 1)
35 struct Chest { // 0x14cc
36  inline bool Initialized() const {
37  return (uFlags & CHEST_ITEMS_PLACED) != 0;
38  }
39  inline void SetInitialized(bool b) {
40  if (b)
42  else
44  }
45  inline bool Trapped() const { return (uFlags & CHEST_TRAPPED) != 0; }
46 
47  static bool CanPlaceItemAt(int a1, int a2, int uChestID);
48  static int CountChestItems(int uChestID);
49  static int PutItemInChest(int a1, struct ItemGen *a2, int uChestID);
50  static void PlaceItemAt(unsigned int put_cell_pos, unsigned int uItemIdx, int uChestID);
51  static void PlaceItems(int uChestID);
52  static bool Open(int uChestID);
53  static void ToggleFlag(int uChestID, uint16_t uFlag, unsigned int bToggle);
55  static void OnChestLeftClick();
56  static void GrabItem(bool all = false);
57 
60  struct ItemGen igChestItems[140]; // 4
61  int16_t pInventoryIndices[140]; // 0x13b4 why is this a short?
62 };
63 #pragma pack(pop)
64 
67 
68 char *ChestsSerialize(char *pData);
69 char *ChestsDeserialize(char *pData);
70 
71 extern ChestList *pChestList;
72 extern std::vector<Chest> vChests;
uint16_t
unsigned __int16 uint16_t
Definition: SDL_config.h:37
RemoveItemAtChestIndex
void RemoveItemAtChestIndex(int index)
Definition: Chest.cpp:513
ChestDesc::ChestDesc
ChestDesc(struct ChestDesc_mm7 *pChest)
Definition: Chest.cpp:450
Chest::SetInitialized
void SetInitialized(bool b)
Definition: Chest.h:39
Chest::GrabItem
static void GrabItem(bool all=false)
Definition: Chest.cpp:580
int16_t
signed __int16 int16_t
Definition: SDL_config.h:36
Chest::Initialized
bool Initialized() const
Definition: Chest.h:36
Chest::igChestItems
struct ItemGen igChestItems[140]
Definition: Chest.h:60
Items.h
Chest::CountChestItems
static int CountChestItems(int uChestID)
Definition: Chest.cpp:289
Chest::PlaceItems
static void PlaceItems(int uChestID)
Definition: Chest.cpp:391
Chest::uFlags
uint16_t uFlags
Definition: Chest.h:59
ChestDesc_mm7
Definition: Chest.cpp:442
GenerateItemsInChest
void GenerateItemsInChest()
Definition: Chest.cpp:631
Chest::PlaceItemAt
static void PlaceItemAt(unsigned int put_cell_pos, unsigned int uItemIdx, int uChestID)
Definition: Chest.cpp:362
ChestsDeserialize
char * ChestsDeserialize(char *pData)
Definition: Chest.cpp:500
Chest::OnChestLeftClick
static void OnChestLeftClick()
Definition: Chest.cpp:537
Chest::PutItemInChest
static int PutItemInChest(int a1, struct ItemGen *a2, int uChestID)
Definition: Chest.cpp:309
index
GLuint index
Definition: SDL_opengl_glext.h:663
ChestDesc::uHeight
unsigned int uHeight
Definition: Chest.h:19
Chest::ToggleFlag
static void ToggleFlag(int uChestID, uint16_t uFlag, unsigned int bToggle)
Definition: Chest.cpp:432
pChestList
ChestList * pChestList
Definition: Chest.cpp:38
ChestList::ChestList
ChestList()
Definition: Chest.h:25
ChestDesc
Definition: Chest.h:14
ChestsSerialize
char * ChestsSerialize(char *pData)
Definition: Chest.cpp:486
ChestDesc::sName
String sName
Definition: Chest.h:17
Chest::uChestBitmapID
uint16_t uChestBitmapID
Definition: Chest.h:58
vChests
std::vector< Chest > vChests
Definition: Chest.cpp:39
Chest::Trapped
bool Trapped() const
Definition: Chest.h:45
ChestDesc::uTextureID
unsigned int uTextureID
Definition: Chest.h:20
Chest::Open
static bool Open(int uChestID)
Definition: Chest.cpp:41
b
GLboolean GLboolean GLboolean b
Definition: SDL_opengl_glext.h:1112
ChestList
Definition: Chest.h:23
CHEST_ITEMS_PLACED
@ CHEST_ITEMS_PLACED
Definition: Chest.h:10
Chest::ChestUI_WritePointedObjectStatusString
static bool ChestUI_WritePointedObjectStatusString()
Definition: Chest.cpp:175
Chest::CanPlaceItemAt
static bool CanPlaceItemAt(int a1, int a2, int uChestID)
Definition: Chest.cpp:266
ChestList::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: Chest.cpp:457
CHEST_TRAPPED
@ CHEST_TRAPPED
Definition: Chest.h:9
Chest
Definition: Chest.h:35
Chest::pInventoryIndices
int16_t pInventoryIndices[140]
Definition: Chest.h:61
ItemGen
Definition: Items.h:263
CHEST_OPENED
@ CHEST_OPENED
Definition: Chest.h:11
ChestDesc::uWidth
unsigned int uWidth
Definition: Chest.h:18
String
std::string String
Definition: Strings.h:10
CHEST_FLAGS
CHEST_FLAGS
Definition: Chest.h:8
ChestList::vChests
std::vector< ChestDesc > vChests
Definition: Chest.h:30
Strings.h