From 05ef38f7d9f912f8613d56764aa93c85e3365bbc Mon Sep 17 00:00:00 2001 From: lukaslw Date: Thu, 1 May 2014 16:40:12 +0200 Subject: PRINCE: getLightX, getLightY, getShadowScale fix --- engines/prince/prince.cpp | 2 +- engines/prince/script.cpp | 20 +++++++++++++++++++- engines/prince/script.h | 6 +++--- 3 files changed, 23 insertions(+), 5 deletions(-) (limited to 'engines/prince') diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp index 61d1ce5ef5..7bb51411f1 100644 --- a/engines/prince/prince.cpp +++ b/engines/prince/prince.cpp @@ -291,7 +291,7 @@ bool PrinceEngine::loadLocation(uint16 locationNr) { _mainHero->_lightX = _script->getLightX(_locationNr); _mainHero->_lightY = _script->getLightY(_locationNr); debug("lightX: %d", _mainHero->_lightX); - debug("lightY: %d", _mainHero->_lightX); + debug("lightY: %d", _mainHero->_lightY); _mainHero->setShadowScale(_script->getShadowScale(_locationNr)); _mobList.clear(); diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp index 264d5bbae2..5070236c72 100644 --- a/engines/prince/script.cpp +++ b/engines/prince/script.cpp @@ -132,7 +132,7 @@ bool Script::loadFromStream(Common::SeekableReadStream &stream) { return false; stream.read(_data, _dataSize); - + Common::MemoryReadStream scriptDataStream(_data, _dataSize); scriptDataStream.seek(getRoomTableOffset()+64); debug("room table offset %d", scriptDataStream.pos()); @@ -142,6 +142,24 @@ bool Script::loadFromStream(Common::SeekableReadStream &stream) { return true; } +int16 Script::getLightX(int locationNr) { + Common::MemoryReadStream readS(_data, _dataSize); + readS.seek(4*15 + locationNr*8); + return readS.readSint16LE(); +} + +int16 Script::getLightY(int locationNr) { + Common::MemoryReadStream readS(_data, _dataSize); + readS.seek(4*15 + locationNr*8 + 2); + return readS.readSint16LE(); +} + +int32 Script::getShadowScale(int locationNr) { + Common::MemoryReadStream readS(_data, _dataSize); + readS.seek(4*15 + locationNr*8 + 4); + return readS.readSint32LE(); +} + InterpreterFlags::InterpreterFlags() { resetAllFlags(); } diff --git a/engines/prince/script.h b/engines/prince/script.h index 2a3bb64245..4d3c822ad6 100644 --- a/engines/prince/script.h +++ b/engines/prince/script.h @@ -90,9 +90,9 @@ public: // Some magic numbers for now, data stored in header uint32 getRoomTableOffset() { return read(0); } uint32 getStartGameOffset() { return read(4); } - int8 getLightX(int locationNr) { return read(4*15 + locationNr*8); } - int8 getLightY(int locationNr) { return read(4*15 + locationNr*8 + 2); } - uint16 getShadowScale(int locationNr) { return read(4*15 + locationNr*8 + 4); } + int16 getLightX(int locationNr); + int16 getLightY(int locationNr); + int32 getShadowScale(int locationNr); const char *getString(uint32 offset) { return (const char *)(&_data[offset]); -- cgit v1.2.3