/** GDevelop - Inventory Extension Copyright (c) 2008-2016 Florian Rival (Florian.Rival@gmail.com) This project is released under the MIT License. */ #include "GDCpp/Extensions/ExtensionBase.h" #include "InventoryTools.h" #include void DeclareInventoryExtension(gd::PlatformExtension& extension) { extension.SetExtensionInformation( "Inventory", _("Inventory"), _("Provides actions and conditions to add an inventory to your game, " "with items in memory."), "Florian Rival", "Open source (MIT License)") .SetExtensionHelpPath("all-features/inventory"); #if defined(GD_IDE_ONLY) extension .AddAction("Add", _("Add an item"), _("Add an item in an inventory."), _("Add a _PARAM2_ to inventory _PARAM1_"), _("Inventories"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .SetFunctionName("InventoryTools::Add") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddAction("Remove", _("Remove an item"), _("Remove an item from an inventory."), _("Remove a _PARAM2_ from inventory _PARAM1_"), _("Inventories"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .SetFunctionName("InventoryTools::Remove") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddCondition("Count", _("Item count"), _("Compare the number of an item in an inventory."), _("the count of _PARAM2_ in _PARAM1_"), _("Inventories"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .UseStandardRelationalOperatorParameters("number") .SetFunctionName("InventoryTools::Count") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddCondition("Has", _("Has an item"), _("Check if at least one of the specified items is in the " "inventory."), _("Inventory _PARAM1_ contains a _PARAM2_"), _("Inventories"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .SetFunctionName("InventoryTools::Has") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddAction("SetMaximum", _("Set a maximum count for an item"), _("Set the maximum number of the specified item that can be " "added in the inventory. By default, the number allowed for " "each item is unlimited."), _("Set the maximum count for _PARAM2_ in inventory _PARAM1_ " "to _PARAM3_"), _("Inventories"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .AddParameter("expression", _("Maximum count")) .SetFunctionName("InventoryTools::SetMaximum") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddAction("SetUnlimited", _("Set unlimited count for an item"), _("Allow an unlimited amount of an object to be in an " "inventory. This is the case by default for each item."), _("Allow an unlimited count of _PARAM2_ in inventory " "_PARAM1_: _PARAM3_"), _("Inventories"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .AddParameter("yesorno", _("Allow an unlimited amount?")) .SetFunctionName("InventoryTools::SetUnlimited") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddCondition("IsFull", _("Item full"), _("Check if an item has reached its maximum number allowed " "in the inventory."), _("Inventory _PARAM1_ is full of _PARAM2_"), _("Inventories"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .SetFunctionName("InventoryTools::Has") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddAction("Equip", _("Equip an item"), _("Mark an item as being equipped. If the item count is 0, it " "won't be marked as equipped."), _("Set _PARAM2_ as equipped in inventory _PARAM1_: _PARAM3_"), _("Inventories"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .AddParameter("yesorno", _("Equip?")) .SetFunctionName("InventoryTools::Equip") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddCondition("IsEquipped", _("Item equipped"), _("Check if an item is equipped."), _("_PARAM2_ is equipped in inventory _PARAM1_"), _("Inventories"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .SetFunctionName("InventoryTools::IsEquipped") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddAction("SerializeToVariable", _("Save an inventory in a scene variable"), _("Save all the items of the inventory in a scene variable, so that " "it can be restored later."), _("Save inventory _PARAM1_ in variable _PARAM2_"), _("Inventories/Variables"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("scenevar", _("Scene variable")) .SetFunctionName("InventoryTools::SerializeToVariable") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddAction("UnserializeFromVariable", _("Load an inventory from a scene variable"), _("Load the content of the inventory from a scene variable."), _("Load inventory _PARAM1_ from variable _PARAM2_"), _("Inventories/Variables"), "CppPlatform/Extensions/Inventoryicon24.png", "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("scenevar", _("Scene variable")) .SetFunctionName("InventoryTools::UnserializeFromVariable") .SetIncludeFile("Inventory/InventoryTools.h"); extension .AddExpression("Count", _("Item count"), _("Get the number of an item in the inventory"), _("Inventory"), "CppPlatform/Extensions/Inventoryicon16.png") .AddCodeOnlyParameter("currentScene", "") .AddParameter("string", _("Inventory name")) .AddParameter("string", _("Item name")) .SetFunctionName("InventoryTools::Count") .SetIncludeFile("Inventory/InventoryTools.h"); #endif } /** * \brief This class declares information about the extension. */ class InventoryCppExtension : public ExtensionBase { public: /** * Constructor of an extension declares everything the extension contains: * objects, actions, conditions and expressions. */ InventoryCppExtension() { DeclareInventoryExtension(*this); GD_COMPLETE_EXTENSION_COMPILATION_INFORMATION(); }; virtual void SceneLoaded(RuntimeScene& scene) override { #if defined(GD_IDE_ONLY) InventoryTools::ClearAll(scene); #endif } }; #if defined(ANDROID) extern "C" ExtensionBase* CreateGDCppInventoryExtension() { return new InventoryCppExtension; } #elif !defined(EMSCRIPTEN) /** * Used by GDevelop to create the extension class * -- Do not need to be modified. -- */ extern "C" ExtensionBase* GD_EXTENSION_API CreateGDExtension() { return new InventoryCppExtension; } #endif