view Chest.h @ 1121:72eb21a62633

sacrifice working
author zipi
date Thu, 30 May 2013 20:25:50 +0100
parents 39eaa6b00141
children 0dbf6c4dd029
line wrap: on
line source

#pragma once




/*  348 */
enum CHEST_FLAGS
{
  CHEST_TRAPPED = 0x1,
  CHEST_ITEMS_PLACED = 0x2,
  CHEST_OPENED = 0x4,
};



#pragma pack(push, 1)
struct ChestDesc
{
  char pName[32];
  char uWidth;
  char uHeight;
  __int16 uTextureID;
};
#pragma pack(pop)



#pragma pack(push, 1)
struct ChestList
{
  inline ChestList():  //----- (00458438)
    uNumChests(0), pChests(nullptr)
  {}

  void ToFile();
  void FromFile(void *pSerialized);
  int FromFileTxt(const char *Args);


  unsigned int uNumChests;
  struct ChestDesc *pChests;
};
#pragma pack(pop)



/*   65 */
#pragma pack(push, 1)
struct Chest //0x14cc
{
  inline bool Initialized() const    {return (uFlags & CHEST_ITEMS_PLACED) != 0;}
  inline void SetInitialized(bool b) {if (b) uFlags |= CHEST_ITEMS_PLACED; else uFlags &= ~CHEST_ITEMS_PLACED;}
  inline bool Trapped() const        {return (uFlags & CHEST_TRAPPED) != 0;}

  static bool CanPlaceItemAt(signed int a1, int a2, signed int uChestID);
  static int CountChestItems(signed int uChestID);
  static int PutItemInChest(int a1, ItemGen *a2, signed int uChestID);
  static void PlaceItemAt(unsigned int put_cell_pos, unsigned int uItemIdx, signed int uChestID);
  static void PlaceItems(signed int uChestID);
  static bool Open(signed int uChestID);
  static void DrawChestUI(signed int uChestID);
  static void ToggleFlag(signed int uChestID, unsigned __int16 uFlag, unsigned int bToggle);

  unsigned __int16 uChestBitmapID; //0
  unsigned __int16 uFlags; //2
  struct ItemGen igChestItems[140]; //4
  signed __int16 pInventoryIndices[140]; //0x13b4
};
#pragma pack(pop)

void __fastcall sub_420B13(int a1, int a2);


extern size_t uNumChests; // idb
extern struct ChestList *pChestList;
extern Chest pChests[20];