From acf9ac241eb1d23d435643f0d0ff2c04d78945d9 Mon Sep 17 00:00:00 2001 From: lukaslw Date: Thu, 1 May 2014 18:50:20 +0200 Subject: PRINCE: Proper memory reading for lightX, lightY, shadowScale --- engines/prince/script.h | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'engines/prince/script.h') diff --git a/engines/prince/script.h b/engines/prince/script.h index 4d3c822ad6..f21df1d717 100644 --- a/engines/prince/script.h +++ b/engines/prince/script.h @@ -42,7 +42,6 @@ namespace Detail { template <> inline uint8 LittleEndianReader(void *data) { return *(uint8*)(data); } template <> inline uint16 LittleEndianReader(void *data) { return READ_LE_UINT16(data); } template <> inline uint32 LittleEndianReader(void *data) { return READ_LE_UINT32(data); } - template <> inline int8 LittleEndianReader(void *data) { return *(int8*)(data); } } class Room { @@ -79,6 +78,29 @@ public: Script(); ~Script(); + struct ScriptInfo { + int rooms; + int startGame; + int restoreGame; + int stdExamine; + int stdPickup; + int stdUse; + int stdOpen; + int stdClose; + int stdTalk; + int stdGive; + int usdCode; + int invObjExam; + int invObjUse; + int invObjUU; + int stdUseItem; + int lightSources; + int specRout; + int invObjGive; + int stdGiveItem; + int goTester; + }; + bool loadFromStream(Common::SeekableReadStream &stream); template @@ -87,9 +109,8 @@ public: return Detail::LittleEndianReader(&_data[address]); } - // Some magic numbers for now, data stored in header - uint32 getRoomTableOffset() { return read(0); } - uint32 getStartGameOffset() { return read(4); } + //uint32 getRoomTableOffset(); + uint32 getStartGameOffset(); int16 getLightX(int locationNr); int16 getLightY(int locationNr); int32 getShadowScale(int locationNr); @@ -102,6 +123,7 @@ private: uint8 *_data; uint32 _dataSize; Common::Array _roomList; + ScriptInfo _scriptInfo; }; class InterpreterFlags { -- cgit v1.2.3