Permalink
Browse files

MUTATIONOFJB: Implement inventory commands.

  • Loading branch information...
LubomirR committed Mar 8, 2018
1 parent 73484a5 commit 8a25e494df8a317a528ad81f7837695827b001b4
@@ -0,0 +1,52 @@
/* 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/additemcommand.h"
#include "mutationofjb/game.h"

/*
"ADDITEM" " " <item>
Adds item to inventory.
*/

namespace MutationOfJB {

bool AddItemCommandParser::parse(const Common::String &line, ScriptParseContext &, Command *&command) {
if (!line.hasPrefix("ADDITEM") || line.size() < 9) {
return false;
}

command = new AddItemCommand(line.c_str() + 8);
return true;
}

Command::ExecuteResult AddItemCommand::execute(GameData &gameData) {
gameData._inventory.addItem(_item);
return Finished;
}

Common::String AddItemCommand::debugString() const {
return Common::String::format("ADDITEM '%s'", _item.c_str());
}

}
@@ -0,0 +1,50 @@
/* 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_ADDITEMCOMMAND_H
#define MUTATIONOFJB_ADDITEMCOMMAND_H

#include "mutationofjb/commands/seqcommand.h"
#include "common/str.h"

namespace MutationOfJB {

class AddItemCommandParser : public SeqCommandParser {
public:
AddItemCommandParser() {}

virtual bool parse(const Common::String &line, ScriptParseContext &parseCtx, Command *&command);
};

class AddItemCommand : public SeqCommand {
public:
AddItemCommand(const Common::String &item) : _item(item) {}

virtual ExecuteResult execute(GameData &gameData) override;
virtual Common::String debugString() const override;
private:
Common::String _item;
};

}

#endif
@@ -0,0 +1,52 @@
/* 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/removeallitemscommand.h"
#include "mutationofjb/game.h"

/*
"DELALLITEMS"
Removes all items from inventory.
*/

namespace MutationOfJB {

bool RemoveAllItemsCommandParser::parse(const Common::String &line, ScriptParseContext &, Command *&command) {
if (line != "DELALLITEMS") {
return false;
}

command = new RemoveAllItemsCommand();
return true;
}

Command::ExecuteResult RemoveAllItemsCommand::execute(GameData &gameData) {
gameData._inventory.removeAllItems();
return Finished;
}

Common::String RemoveAllItemsCommand::debugString() const {
return "DELALLITEM";
}

}
@@ -0,0 +1,48 @@
/* 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_REMOVEALLITEMSCOMMAND_H
#define MUTATIONOFJB_REMOVEALLITEMSCOMMAND_H

#include "mutationofjb/commands/seqcommand.h"

namespace MutationOfJB {

class RemoveAllItemsCommandParser : public SeqCommandParser {
public:
RemoveAllItemsCommandParser() {}

virtual bool parse(const Common::String &line, ScriptParseContext &parseCtx, Command *&command);
};

class RemoveAllItemsCommand : public SeqCommand {
public:
RemoveAllItemsCommand() {}

virtual ExecuteResult execute(GameData &gameData) override;
virtual Common::String debugString() const override;
private:
};

}

#endif
@@ -0,0 +1,52 @@
/* 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/removeitemcommand.h"
#include "mutationofjb/game.h"

/*
"DELITEM" " " <item>
Removes item from inventory.
*/

namespace MutationOfJB {

bool RemoveItemCommandParser::parse(const Common::String &line, ScriptParseContext &, Command *&command) {
if (!line.hasPrefix("DELITEM") || line.size() < 9) {
return false;
}

command = new RemoveItemCommand(line.c_str() + 8);
return true;
}

Command::ExecuteResult RemoveItemCommand::execute(GameData &gameData) {
gameData._inventory.removeItem(_item);
return Finished;
}

Common::String RemoveItemCommand::debugString() const {
return Common::String::format("DELITEM '%s'", _item.c_str());
}

}
@@ -0,0 +1,50 @@
/* 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_REMOVEITEMCOMMAND_H
#define MUTATIONOFJB_REMOVEITEMCOMMAND_H

#include "mutationofjb/commands/seqcommand.h"
#include "common/str.h"

namespace MutationOfJB {

class RemoveItemCommandParser : public SeqCommandParser {
public:
RemoveItemCommandParser() {}

virtual bool parse(const Common::String &line, ScriptParseContext &parseCtx, Command *&command);
};

class RemoveItemCommand : public SeqCommand {
public:
RemoveItemCommand(const Common::String &item) : _item(item) {}

virtual ExecuteResult execute(GameData &gameData) override;
virtual Common::String debugString() const override;
private:
Common::String _item;
};

}

#endif
@@ -1,11 +1,14 @@
MODULE := engines/mutationofjb

MODULE_OBJS := \
commands/additemcommand.o \
commands/changecommand.o \
commands/command.o \
commands/conditionalcommand.o \
commands/endblockcommand.o \
commands/ifcommand.o \
commands/removeallitemscommand.o \
commands/removeitemcommand.o \
commands/saycommand.o \
commands/seqcommand.o \
debug.o \

0 comments on commit 8a25e49

Please sign in to comment.