21 #ifndef PELROCK_ROOM_H 22 #define PELROCK_ROOM_H 30 const int kRoomStructSize = 104;
32 #define PERSIST_TEMP 1 33 #define PERSIST_PERM 2 34 #define PERSIST_BOTH 3 40 void clearTalkingAnims();
42 void clearRoomStickerPixels();
43 void loadRoomMetadata(
Common::File *roomFile,
int roomNumber);
52 void loadRoomTalkingAnimations(
int roomNumber);
53 void getPalette(
Common::File *roomFile,
int roomOffset, byte *palette);
54 void getBackground(
Common::File *roomFile,
int roomOffset, byte *background);
55 void loadWaterPaletteRemap();
58 void addSticker(
int stickerId,
int persist = PERSIST_BOTH);
59 void addStickerToRoom(byte room,
int stickerId,
int persist = PERSIST_BOTH);
61 void removeSticker(
int stickerId);
62 void removeStickerFromRoom(byte room,
int stickerId);
64 bool hasSticker(
int index);
65 bool hasSticker(byte room,
int index);
67 void changeExit(byte index,
bool enabled,
int persist = PERSIST_BOTH);
68 void changeExit(byte room, byte index,
bool enabled,
int persist = PERSIST_BOTH);
70 void disableExit(byte index,
int persist = PERSIST_BOTH);
71 void disableExit(byte room, byte index,
int persist = PERSIST_BOTH);
72 void enableExit(byte index,
int persist = PERSIST_BOTH);
73 void enableExit(byte room, byte index,
int persist = PERSIST_BOTH);
75 void changeWalkBox(
WalkBox walkbox,
int persist = PERSIST_BOTH);
76 void changeWalkbox(byte room,
WalkBox walkbox,
int persist = PERSIST_BOTH);
78 void changeHotSpot(
HotSpot hotspot,
int persist = PERSIST_BOTH);
79 void changeHotspot(byte room,
HotSpot hotspot,
int persist = PERSIST_BOTH);
81 void disableSprite(byte spriteIndex,
int persist = PERSIST_BOTH);
82 void disableSprite(byte roomNumber, byte spriteIndex,
int persist = PERSIST_BOTH);
83 void enableSprite(byte spriteIndex, byte zOrder,
int persist = PERSIST_BOTH);
84 void enableSprite(byte roomNumber, byte spriteIndex, byte zOrder,
int persist = PERSIST_BOTH);
88 void enableHotspot(
HotSpot *hotspot,
int persist = PERSIST_BOTH);
89 void enableHotspot(byte room,
HotSpot *hotspot,
int persist = PERSIST_BOTH);
91 void disableHotspot(
HotSpot *hotspot,
int persist = PERSIST_BOTH);
92 void disableHotspot(byte room,
HotSpot *hotspot,
int persist = PERSIST_BOTH);
94 void moveHotspot(
HotSpot *hotspot, int16 newX, int16 newY,
int persist = PERSIST_BOTH);
95 void moveHotspot(byte room,
HotSpot *hotspot, int16 newX, int16 newY,
int persist = PERSIST_BOTH);
96 void setActionMask(
HotSpot *hotspot, byte actionMask,
int persist = PERSIST_BOTH);
98 void addWalkbox(
WalkBox walkbox,
int persist = PERSIST_BOTH);
99 void addWalkbox(byte room,
WalkBox walkbox,
int persist = PERSIST_BOTH);
101 void applyDisabledChoices(byte roomNumber, byte *conversationData,
size_t conversationDataSize);
102 void applyDisabledChoice(
ResetEntry entry, byte *conversationData,
size_t conversationDataSize);
108 bool isPickableByExtra(uint16 extra);
110 Sprite *findSpriteByIndex(byte index);
111 Sprite *findSpriteByExtra(int16 extra);
112 HotSpot *findHotspotByIndex(byte index);
113 HotSpot *findHotspotByExtra(uint16 extra);
114 PaletteAnim *getPaletteAnimForRoom(
int roomNumber);
116 byte _currentRoomNumber = 0;
117 int _prevRoomNumber = -1;
126 byte *_pixelsShadows =
nullptr;
127 byte _roomPalette[768];
128 byte _paletteRemaps[5][256];
129 byte _musicTrack = 0;
133 byte *_conversationData =
nullptr;
134 size_t _conversationDataSize = 0;
137 uint32 _conversationOffset;
141 void loadAnimationPixelData(
Common::File *roomFile,
int roomOffset, byte *&buffer,
size_t &outSize);
142 void loadRoomAnimations(byte *pixelData,
size_t pixelDataSize, byte *data,
size_t size);
143 void loadHotspots(byte *data,
size_t size);
144 void loadExits(byte *data,
size_t size);
146 void loadWalkboxes(byte *data,
size_t size);
148 void loadConversationData(byte *pair12data,
size_t pair12size, uint32 startPos,
size_t &outConversationDataSize, byte *&outConversationData);
149 void resetConversationStates(byte roomNumber, byte *conversationData,
size_t conversationDataSize);
150 void resetMetadataDefaults(byte room, byte *&data,
size_t size);
152 byte *loadShadowMap(
int roomNumber);
153 void loadRemaps(
int roomNumber);
155 byte loadMusicTrackForRoom(
Common::File *roomFile,
int roomOffset);
158 byte *_resetData =
nullptr;
Definition: algorithm.h:29