Permalink
Browse files

MUTATIONOFJB: Add support of IFPIGGY command.

  • Loading branch information...
LubomirR authored and sev- committed Mar 11, 2018
1 parent ae979a8 commit 523f973e0a4ba16b278d546da9267a693924f957
@@ -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";
}

}

@@ -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
@@ -153,6 +153,7 @@ struct GameData {

uint8 _currentScene;
Inventory _inventory;
Common::String _currentAPK;
private:
Scene _scenes[45];

@@ -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 \
@@ -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,

0 comments on commit 523f973

Please sign in to comment.