Skip to content

Commit

Permalink
MUTATIONOFJB: Add support of IFPIGGY command.
Browse files Browse the repository at this point in the history
  • Loading branch information
LubomirR authored and sev- committed Aug 25, 2018
1 parent ae979a8 commit 523f973
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 0 deletions.
71 changes: 71 additions & 0 deletions engines/mutationofjb/commands/ifpiggycommand.cpp
Original file line number Diff line number Diff line change
@@ -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";
}

}

49 changes: 49 additions & 0 deletions engines/mutationofjb/commands/ifpiggycommand.h
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions engines/mutationofjb/game.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ struct GameData {

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

Expand Down
1 change: 1 addition & 0 deletions engines/mutationofjb/module.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
2 changes: 2 additions & 0 deletions engines/mutationofjb/script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -40,6 +41,7 @@ namespace MutationOfJB {

static CommandParser **getParsers() {
static CommandParser *parsers[] = {
new IfPiggyCommandParser,
new IfItemCommandParser,
new IfCommandParser,
new EndBlockCommandParser,
Expand Down

0 comments on commit 523f973

Please sign in to comment.