From dae522f63c05029298da1694038af9b24655ac05 Mon Sep 17 00:00:00 2001 From: Ľubomír Remák Date: Thu, 8 Mar 2018 22:04:11 +0100 Subject: MUTATIONOFJB: Implement inventory commands. --- engines/mutationofjb/commands/additemcommand.cpp | 52 ++++++++++++++++++++++ engines/mutationofjb/commands/additemcommand.h | 50 +++++++++++++++++++++ .../commands/removeallitemscommand.cpp | 52 ++++++++++++++++++++++ .../mutationofjb/commands/removeallitemscommand.h | 48 ++++++++++++++++++++ .../mutationofjb/commands/removeitemcommand.cpp | 52 ++++++++++++++++++++++ engines/mutationofjb/commands/removeitemcommand.h | 50 +++++++++++++++++++++ engines/mutationofjb/module.mk | 3 ++ 7 files changed, 307 insertions(+) create mode 100644 engines/mutationofjb/commands/additemcommand.cpp create mode 100644 engines/mutationofjb/commands/additemcommand.h create mode 100644 engines/mutationofjb/commands/removeallitemscommand.cpp create mode 100644 engines/mutationofjb/commands/removeallitemscommand.h create mode 100644 engines/mutationofjb/commands/removeitemcommand.cpp create mode 100644 engines/mutationofjb/commands/removeitemcommand.h (limited to 'engines/mutationofjb') diff --git a/engines/mutationofjb/commands/additemcommand.cpp b/engines/mutationofjb/commands/additemcommand.cpp new file mode 100644 index 0000000000..b0c7d21f28 --- /dev/null +++ b/engines/mutationofjb/commands/additemcommand.cpp @@ -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" " " + + 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()); +} + +} diff --git a/engines/mutationofjb/commands/additemcommand.h b/engines/mutationofjb/commands/additemcommand.h new file mode 100644 index 0000000000..cb4c131d0f --- /dev/null +++ b/engines/mutationofjb/commands/additemcommand.h @@ -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 diff --git a/engines/mutationofjb/commands/removeallitemscommand.cpp b/engines/mutationofjb/commands/removeallitemscommand.cpp new file mode 100644 index 0000000000..8c6309f46c --- /dev/null +++ b/engines/mutationofjb/commands/removeallitemscommand.cpp @@ -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"; +} + +} diff --git a/engines/mutationofjb/commands/removeallitemscommand.h b/engines/mutationofjb/commands/removeallitemscommand.h new file mode 100644 index 0000000000..166aed8b3b --- /dev/null +++ b/engines/mutationofjb/commands/removeallitemscommand.h @@ -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 diff --git a/engines/mutationofjb/commands/removeitemcommand.cpp b/engines/mutationofjb/commands/removeitemcommand.cpp new file mode 100644 index 0000000000..c6aad0e6e8 --- /dev/null +++ b/engines/mutationofjb/commands/removeitemcommand.cpp @@ -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" " " + + 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()); +} + +} diff --git a/engines/mutationofjb/commands/removeitemcommand.h b/engines/mutationofjb/commands/removeitemcommand.h new file mode 100644 index 0000000000..452a3b2ff5 --- /dev/null +++ b/engines/mutationofjb/commands/removeitemcommand.h @@ -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 diff --git a/engines/mutationofjb/module.mk b/engines/mutationofjb/module.mk index f719ae0ced..27c4f4b084 100644 --- a/engines/mutationofjb/module.mk +++ b/engines/mutationofjb/module.mk @@ -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 \ -- cgit v1.2.3