diff options
-rw-r--r-- | engines/mutationofjb/commands/changecommand.cpp | 3 | ||||
-rw-r--r-- | engines/mutationofjb/commands/ifcommand.cpp | 2 | ||||
-rw-r--r-- | engines/mutationofjb/game.cpp | 5 | ||||
-rw-r--r-- | engines/mutationofjb/game.h | 22 |
4 files changed, 24 insertions, 8 deletions
diff --git a/engines/mutationofjb/commands/changecommand.cpp b/engines/mutationofjb/commands/changecommand.cpp index e9bb9cc2e6..e4699ebb74 100644 --- a/engines/mutationofjb/commands/changecommand.cpp +++ b/engines/mutationofjb/commands/changecommand.cpp @@ -195,8 +195,9 @@ bool ChangeSceneCommandParser::parse(const Common::String &line, ScriptParseCont } int ChangeCommandParser::parseInteger(const char *val, ChangeCommand::ChangeOperation &op) { + op = ChangeCommand::SetValue; + if (!val || !(*val)) { - op = ChangeCommand::SetValue; return 0; } diff --git a/engines/mutationofjb/commands/ifcommand.cpp b/engines/mutationofjb/commands/ifcommand.cpp index 0643c3e161..a2816c7edd 100644 --- a/engines/mutationofjb/commands/ifcommand.cpp +++ b/engines/mutationofjb/commands/ifcommand.cpp @@ -64,7 +64,7 @@ bool IfCommandParser::parse(const Common::String &line, ScriptParseContext &pars } const char *const cstr = line.c_str(); - const char tag = cstr[2]; + const char tag = cstr[2] == ' ' ? 0 : cstr[2]; const uint8 sceneId = atoi(cstr + 3); const uint8 objectId = atoi(cstr + 6); const uint8 value = atoi(cstr + 9); diff --git a/engines/mutationofjb/game.cpp b/engines/mutationofjb/game.cpp index 15fbd033fb..c79f8d95b1 100644 --- a/engines/mutationofjb/game.cpp +++ b/engines/mutationofjb/game.cpp @@ -92,7 +92,7 @@ bool Static::loadFromStream(Common::ReadStream &stream) { } bool Bitmap::loadFromStream(Common::ReadStream &stream) { - _unknown = stream.readByte(); + _frame = stream.readByte(); _isVisible = stream.readByte(); _x1 = stream.readUint16LE(); _y1 = stream.readByte(); @@ -133,8 +133,7 @@ bool Scene::loadFromStream(Common::ReadStream &stream) { _bitmaps[i].loadFromStream(stream); } - _obstacleY1 = stream.readByte(); - _unknown386 = stream.readByte(); + _obstacleY1 = stream.readUint16LE(); _palRotStart = stream.readByte(); _palRotEnd = stream.readByte(); _palRotPeriod = stream.readByte(); diff --git a/engines/mutationofjb/game.h b/engines/mutationofjb/game.h index 77e336f024..550be2efc8 100644 --- a/engines/mutationofjb/game.h +++ b/engines/mutationofjb/game.h @@ -35,16 +35,33 @@ namespace MutationOfJB { static const uint8 MAX_STR_LENGTH = 0x14; struct Door { + /* + Door name. + Can be empty - deactivates door completely. + */ char _name[MAX_STR_LENGTH + 1]; + /* + Scene ID where the door leads. + Can be 0 - you can hover your mouse over it, but clicking it doesn't do anything (unless scripted). + */ uint8 _destSceneId; + /* X coordinate for player's position after going through the door. */ uint16 _destX; + /* Y coordinate for player's position after going through the door. */ uint16 _destY; + /* X coordinate of the door rectangle. */ uint16 _x; + /* Y coordinate of the door rectangle. */ uint8 _y; + /* Width of the door rectangle. */ uint16 _width; + /* Height of the door rectangle. */ uint8 _height; + /* X coordinate for position towards player will walk after clicking the door. */ uint16 _walkToX; + /* Y coordinate for position towards player will walk after clicking the door. */ uint8 _walkToY; + /* Unknown for now - likely not even used. */ uint8 _SP; bool loadFromStream(Common::ReadStream &stream); @@ -84,7 +101,7 @@ struct Static { }; struct Bitmap { - uint8 _unknown; + uint8 _frame; uint8 _isVisible; uint16 _x1; uint8 _y1; @@ -118,8 +135,7 @@ struct Scene { Bitmap _bitmaps[10]; - uint8 _obstacleY1; - uint8 _unknown386; + uint16 _obstacleY1; uint8 _palRotStart; uint8 _palRotEnd; uint8 _palRotPeriod; |