diff options
Diffstat (limited to 'queen/structs.h')
| -rw-r--r-- | queen/structs.h | 95 |
1 files changed, 71 insertions, 24 deletions
diff --git a/queen/structs.h b/queen/structs.h index 68f9bf1573..8e52641bd7 100644 --- a/queen/structs.h +++ b/queen/structs.h @@ -29,14 +29,21 @@ namespace Queen { struct Box { int16 x1, y1, x2, y2; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { x1 = (int16)READ_BE_UINT16(ptr); ptr += 2; y1 = (int16)READ_BE_UINT16(ptr); ptr += 2; x2 = (int16)READ_BE_UINT16(ptr); ptr += 2; y2 = (int16)READ_BE_UINT16(ptr); ptr += 2; } - void writeTo(byte *&ptr) { + void readFromLE(byte *&ptr) { + x1 = (int16)READ_LE_UINT16(ptr); ptr += 2; + y1 = (int16)READ_LE_UINT16(ptr); ptr += 2; + x2 = (int16)READ_LE_UINT16(ptr); ptr += 2; + y2 = (int16)READ_LE_UINT16(ptr); ptr += 2; + } + + void writeToBE(byte *&ptr) { WRITE_BE_UINT16(ptr, x1); ptr += 2; WRITE_BE_UINT16(ptr, y1); ptr += 2; WRITE_BE_UINT16(ptr, x2); ptr += 2; @@ -71,17 +78,25 @@ struct Area { //! entry in ObjectData, object lying in this area uint16 object; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { mapNeighbours = (int16)READ_BE_UINT16(ptr); ptr += 2; - box.readFrom(ptr); + box.readFromBE(ptr); bottomScaleFactor = READ_BE_UINT16(ptr); ptr += 2; topScaleFactor = READ_BE_UINT16(ptr); ptr += 2; object = READ_BE_UINT16(ptr); ptr += 2; } - void writeTo(byte *&ptr) { + void readFromLE(byte *&ptr) { + mapNeighbours = (int16)READ_LE_UINT16(ptr); ptr += 2; + box.readFromLE(ptr); + bottomScaleFactor = READ_LE_UINT16(ptr); ptr += 2; + topScaleFactor = READ_LE_UINT16(ptr); ptr += 2; + object = READ_LE_UINT16(ptr); ptr += 2; + } + + void writeToBE(byte *&ptr) { WRITE_BE_UINT16(ptr, mapNeighbours); ptr += 2; - box.writeTo(ptr); + box.writeToBE(ptr); WRITE_BE_UINT16(ptr, bottomScaleFactor); ptr += 2; WRITE_BE_UINT16(ptr, topScaleFactor); ptr += 2; WRITE_BE_UINT16(ptr, object); ptr += 2; @@ -113,13 +128,19 @@ struct WalkOffData { //! coordinates to reach uint16 x, y; - void readFrom(byte *& ptr) { + void readFromBE(byte *&ptr) { entryObj = (int16)READ_BE_UINT16(ptr); ptr += 2; x = READ_BE_UINT16(ptr); ptr += 2; y = READ_BE_UINT16(ptr); ptr += 2; } - void writeTo(byte *&ptr) { + void readFromLE(byte *&ptr) { + entryObj = (int16)READ_LE_UINT16(ptr); ptr += 2; + x = READ_LE_UINT16(ptr); ptr += 2; + y = READ_LE_UINT16(ptr); ptr += 2; + } + + void writeToBE(byte *&ptr) { WRITE_BE_UINT16(ptr, entryObj); ptr += 2; WRITE_BE_UINT16(ptr, x); ptr += 2; WRITE_BE_UINT16(ptr, y); ptr += 2; @@ -155,7 +176,7 @@ struct GraphicData { //! moving speed of object uint16 speed; - void readFrom(byte *& ptr) { + void readFromBE(byte *&ptr) { x = READ_BE_UINT16(ptr); ptr += 2; y = READ_BE_UINT16(ptr); ptr += 2; firstFrame = (int16)READ_BE_UINT16(ptr); ptr += 2; @@ -221,7 +242,7 @@ struct ObjectData { */ int16 image; - void readFrom(byte *& ptr) { + void readFromBE(byte *&ptr) { name = (int16)READ_BE_UINT16(ptr); ptr += 2; x = READ_BE_UINT16(ptr); ptr += 2; y = READ_BE_UINT16(ptr); ptr += 2; @@ -231,8 +252,19 @@ struct ObjectData { state = READ_BE_UINT16(ptr); ptr += 2; image = (int16)READ_BE_UINT16(ptr); ptr += 2; } + + void readFromLE(byte *&ptr) { + name = (int16)READ_LE_UINT16(ptr); ptr += 2; + x = READ_LE_UINT16(ptr); ptr += 2; + y = READ_LE_UINT16(ptr); ptr += 2; + description = READ_LE_UINT16(ptr); ptr += 2; + entryObj = (int16)READ_LE_UINT16(ptr); ptr += 2; + room = READ_LE_UINT16(ptr); ptr += 2; + state = READ_LE_UINT16(ptr); ptr += 2; + image = (int16)READ_LE_UINT16(ptr); ptr += 2; + } - void writeTo(byte *&ptr) { + void writeToBE(byte *&ptr) { WRITE_BE_UINT16(ptr, name); ptr += 2; WRITE_BE_UINT16(ptr, x); ptr += 2; WRITE_BE_UINT16(ptr, y); ptr += 2; @@ -279,7 +311,7 @@ struct ObjectDescription { //! last description number used (in order to avoid re-using it) uint16 lastSeenNumber; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { object = READ_BE_UINT16(ptr); ptr += 2; type = READ_BE_UINT16(ptr); ptr += 2; lastDescription = READ_BE_UINT16(ptr); ptr += 2; @@ -300,7 +332,7 @@ struct ItemData { //! entry in OBJECT_DESCR (>0 if available) int16 sfxDescription; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { name = (int16)READ_BE_UINT16(ptr); ptr += 2; description = READ_BE_UINT16(ptr); ptr += 2; state = READ_BE_UINT16(ptr); ptr += 2; @@ -308,7 +340,15 @@ struct ItemData { sfxDescription = (int16)READ_BE_UINT16(ptr); ptr += 2; } - void writeTo(byte *&ptr) { + void readFromLE(byte *&ptr) { + name = (int16)READ_LE_UINT16(ptr); ptr += 2; + description = READ_LE_UINT16(ptr); ptr += 2; + state = READ_LE_UINT16(ptr); ptr += 2; + frame = READ_LE_UINT16(ptr); ptr += 2; + sfxDescription = (int16)READ_LE_UINT16(ptr); ptr += 2; + } + + void writeToBE(byte *&ptr) { WRITE_BE_UINT16(ptr, name); ptr += 2; WRITE_BE_UINT16(ptr, description); ptr += 2; WRITE_BE_UINT16(ptr, state); ptr += 2; @@ -340,7 +380,7 @@ struct ActorData { //! entry in ACTOR_FILE uint16 actorFile; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { room = (int16)READ_BE_UINT16(ptr); ptr += 2; bobNum = (int16)READ_BE_UINT16(ptr); ptr += 2; name = READ_BE_UINT16(ptr); ptr += 2; @@ -385,7 +425,7 @@ struct CmdListData { //! special section to execute (refer to execute.c l.423-451) int16 specialSection; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { verb = (Verb)READ_BE_UINT16(ptr); ptr += 2; nounObj1 = (int16)READ_BE_UINT16(ptr); ptr += 2; nounObj2 = (int16)READ_BE_UINT16(ptr); ptr += 2; @@ -412,7 +452,7 @@ struct CmdArea { //! room in which the area must be changed uint16 room; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { id = (int16)READ_BE_UINT16(ptr); ptr += 2; area = (int16)READ_BE_UINT16(ptr); ptr += 2; room = READ_BE_UINT16(ptr); ptr += 2; @@ -428,7 +468,7 @@ struct CmdObject { //! >0: copy from srcObj, 0: nothing, -1: delete dstObj int16 srcObj; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { id = (int16)READ_BE_UINT16(ptr); ptr += 2; dstObj = (int16)READ_BE_UINT16(ptr); ptr += 2; srcObj = (int16)READ_BE_UINT16(ptr); ptr += 2; @@ -444,7 +484,7 @@ struct CmdInventory { //! >0: valid int16 srcItem; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { id = (int16)READ_BE_UINT16(ptr); ptr += 2; dstItem = (int16)READ_BE_UINT16(ptr); ptr += 2; srcItem = (int16)READ_BE_UINT16(ptr); ptr += 2; @@ -459,7 +499,7 @@ struct CmdGameState { int16 gameStateValue; uint16 speakValue; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { id = (int16)READ_BE_UINT16(ptr); ptr += 2; gameStateSlot = (int16)READ_BE_UINT16(ptr); ptr += 2; gameStateValue = (int16)READ_BE_UINT16(ptr); ptr += 2; @@ -490,7 +530,7 @@ struct FurnitureData { */ int16 gameStateValue; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { room = (int16)READ_BE_UINT16(ptr); ptr += 2; gameStateValue = (int16)READ_BE_UINT16(ptr); ptr += 2; } @@ -502,7 +542,7 @@ struct GraphicAnim { int16 frame; uint16 speed; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { keyFrame = (int16)READ_BE_UINT16(ptr); ptr += 2; frame = (int16)READ_BE_UINT16(ptr); ptr += 2; speed = READ_BE_UINT16(ptr); ptr += 2; @@ -532,14 +572,21 @@ struct TalkSelected { bool hasTalkedTo; int16 values[4]; - void readFrom(byte *&ptr) { + void readFromBE(byte *&ptr) { hasTalkedTo = READ_BE_UINT16(ptr) != 0; ptr += 2; for (int i = 0; i < 4; i++) { values[i] = (int16)READ_BE_UINT16(ptr); ptr += 2; } } - void writeTo(byte *&ptr) { + void readFromLE(byte *&ptr) { + hasTalkedTo = READ_LE_UINT16(ptr) != 0; ptr += 2; + for (int i = 0; i < 4; i++) { + values[i] = (int16)READ_LE_UINT16(ptr); ptr += 2; + } + } + + void writeToBE(byte *&ptr) { WRITE_BE_UINT16(ptr, (uint16)hasTalkedTo); ptr += 2; for (int i = 0; i < 4; i++) { WRITE_BE_UINT16(ptr, values[i]); ptr += 2; |
