diff options
author | Ľubomír Remák | 2018-03-11 20:12:57 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2018-08-25 23:12:01 +0200 |
commit | 523f973e0a4ba16b278d546da9267a693924f957 (patch) | |
tree | 125802578f214f7aecd66866a3090fb6c340764d | |
parent | ae979a831091e04797f19d0c80210d745cd60f62 (diff) | |
download | scummvm-rg350-523f973e0a4ba16b278d546da9267a693924f957.tar.gz scummvm-rg350-523f973e0a4ba16b278d546da9267a693924f957.tar.bz2 scummvm-rg350-523f973e0a4ba16b278d546da9267a693924f957.zip |
MUTATIONOFJB: Add support of IFPIGGY command.
-rw-r--r-- | engines/mutationofjb/commands/ifpiggycommand.cpp | 71 | ||||
-rw-r--r-- | engines/mutationofjb/commands/ifpiggycommand.h | 49 | ||||
-rw-r--r-- | engines/mutationofjb/game.h | 1 | ||||
-rw-r--r-- | engines/mutationofjb/module.mk | 1 | ||||
-rw-r--r-- | engines/mutationofjb/script.cpp | 2 |
5 files changed, 124 insertions, 0 deletions
diff --git a/engines/mutationofjb/commands/ifpiggycommand.cpp b/engines/mutationofjb/commands/ifpiggycommand.cpp new file mode 100644 index 0000000000..2ecd437611 --- /dev/null +++ b/engines/mutationofjb/commands/ifpiggycommand.cpp @@ -0,0 +1,71 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "mutationofjb/commands/ifpiggycommand.h" +#include "mutationofjb/game.h" +#include "mutationofjb/script.h" +#include "mutationofjb/util.h" +#include "common/str.h" +#include "common/translation.h" + +/* + "IFPIGGY" + + IFPIGGY command tests whether current loaded APK file (character animation) is "piggy.apk". + If it is, execution continues to the next line. + Otherwise execution continues after first "#ELSE" or "=ELSE". + + Please note that this does not work like you are used to from saner languages. + IFPIGGY does not have any blocks. It only searches for first #ELSE, so you can have stuff like: + IFPIGGY + IFITEM someitem + #ELSE + ... + This is effectively logical AND. +*/ + +namespace MutationOfJB { + +bool IfPiggyCommandParser::parse(const Common::String &line, ScriptParseContext &, Command *&command) { + if (line != "IFPIGGY") { + return false; + } + + _lastTag = 0; + command = new IfPiggyCommand(); + + return true; +} + + +Command::ExecuteResult IfPiggyCommand::execute(GameData &gameData) { + _cachedResult = gameData._currentAPK == "piggy.apk"; + + return Finished; +} + +Common::String IfPiggyCommand::debugString() const { + return "IFPIGGY"; +} + +} + diff --git a/engines/mutationofjb/commands/ifpiggycommand.h b/engines/mutationofjb/commands/ifpiggycommand.h new file mode 100644 index 0000000000..3fb68267c4 --- /dev/null +++ b/engines/mutationofjb/commands/ifpiggycommand.h @@ -0,0 +1,49 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef MUTATIONOFJB_IFPIGGYCOMMAND_H +#define MUTATIONOFJB_IFPIGGYCOMMAND_H + +#include "mutationofjb/commands/conditionalcommand.h" +#include "common/scummsys.h" +#include "common/str.h" + +namespace MutationOfJB { + +class ScriptParseContext; + +class IfPiggyCommandParser : public ConditionalCommandParser { +public: + virtual bool parse(const Common::String &line, ScriptParseContext &parseCtx, Command *&command); +}; + +class IfPiggyCommand : public ConditionalCommand { +public: + virtual ExecuteResult execute(GameData &gameData) override; + virtual Common::String debugString() const; + +private: +}; + +} + +#endif diff --git a/engines/mutationofjb/game.h b/engines/mutationofjb/game.h index 26f4d3823d..6eafc79e4a 100644 --- a/engines/mutationofjb/game.h +++ b/engines/mutationofjb/game.h @@ -153,6 +153,7 @@ public: uint8 _currentScene; Inventory _inventory; + Common::String _currentAPK; private: Scene _scenes[45]; diff --git a/engines/mutationofjb/module.mk b/engines/mutationofjb/module.mk index 0dfe130c28..e66a4c8ee3 100644 --- a/engines/mutationofjb/module.mk +++ b/engines/mutationofjb/module.mk @@ -8,6 +8,7 @@ MODULE_OBJS := \ commands/endblockcommand.o \ commands/ifcommand.o \ commands/ifitemcommand.o \ + commands/ifpiggycommand.o \ commands/removeallitemscommand.o \ commands/removeitemcommand.o \ commands/saycommand.o \ diff --git a/engines/mutationofjb/script.cpp b/engines/mutationofjb/script.cpp index c959f0f8cf..771a9908bf 100644 --- a/engines/mutationofjb/script.cpp +++ b/engines/mutationofjb/script.cpp @@ -29,6 +29,7 @@ #include "mutationofjb/commands/command.h" #include "mutationofjb/commands/ifcommand.h" #include "mutationofjb/commands/ifitemcommand.h" +#include "mutationofjb/commands/ifpiggycommand.h" #include "mutationofjb/commands/endblockcommand.h" #include "mutationofjb/commands/changecommand.h" #include "mutationofjb/commands/saycommand.h" @@ -40,6 +41,7 @@ namespace MutationOfJB { static CommandParser **getParsers() { static CommandParser *parsers[] = { + new IfPiggyCommandParser, new IfItemCommandParser, new IfCommandParser, new EndBlockCommandParser, |