#ifndef ITEM_ENUMS_H #define ITEM_ENUMS_H /*************************************************************************/ /* item_enums.h */ /*************************************************************************/ /* This file is part of: */ /* PANDEMONIUM ENGINE */ /* https://github.com/Relintai/pandemonium_engine */ /*************************************************************************/ /* Copyright (c) 2022-present Péter Magyar. */ /* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ /* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ /* "Software"), to deal in the Software without restriction, including */ /* without limitation the rights to use, copy, modify, merge, publish, */ /* distribute, sublicense, and/or sell copies of the Software, and to */ /* permit persons to whom the Software is furnished to do so, subject to */ /* the following conditions: */ /* */ /* The above copyright notice and this permission notice shall be */ /* included in all copies or substantial portions of the Software. */ /* */ /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ #include "core/object/object.h" #include "core/string/ustring.h" class ItemEnums : public Object { GDCLASS(ItemEnums, Object); public: static const String BINDING_STRING_RARITY; static const String BINDING_STRING_RARITY_FLAG; static const String BINDING_STRING_ITEM_TYPE; static const String BINDING_STRING_ITEM_TYPE_FLAGS; static const String BINDING_STRING_ITEM_SUB_TYPE; static const String BINDING_STRING_ITEM_SUB_SUB_TYPE; static const String BINDING_STRING_ARMOR_TYPE; enum ItemRarity { ITEM_RARITY_NONE = 0, ITEM_RARITY_COMMON = 1, ITEM_RARITY_UNCOMMON = 2, ITEM_RARITY_SUPERIOR = 3, ITEM_RARITY_HEROIC = 4, ITEM_RARITY_MYTHIC = 5, ITEM_RARITY_ARTIFACT = 6, }; enum ItemRarityFlag { ITEM_RARITY_FLAG_NONE = 0, ITEM_RARITY_FLAG_COMMON = 1 << 0, ITEM_RARITY_FLAG_UNCOMMON = 1 << 1, ITEM_RARITY_FLAG_SUPERIOR = 1 << 2, ITEM_RARITY_FLAG_HEROIC = 1 << 3, ITEM_RARITY_FLAG_MYTHIC = 1 << 4, ITEM_RARITY_FLAG_ARTIFACT = 1 << 5, }; enum ItemType { ITEM_TYPE_NONE = 0, ITEM_TYPE_EQUIPMENT = 1 << 0, ITEM_TYPE_POTION = 1 << 1, ITEM_TYPE_HERB = 1 << 2, ITEM_TYPE_ORE = 1 << 3, ITEM_TYPE_GEMSTONE = 1 << 4, ITEM_TYPE_FOOD = 1 << 5, ITEM_TYPE_ALCHEMY = 1 << 6, ITEM_TYPE_ENGINEERING = 1 << 7, ITEM_TYPE_ENCHANTING = 1 << 8, ITEM_TYPE_TAILORING = 1 << 9, ITEM_TYPE_RECIPE = 1 << 10, ITEM_TYPE_CURRENCY = 1 << 11, ITEM_TYPE_BAG = 1 << 12, }; enum ItemSubtype { ITEM_SUB_TYPE_NONE = 0, ITEM_SUB_TYPE_SWORD, ITEM_SUB_TYPE_AXE, ITEM_SUB_TYPE_MACE, ITEM_SUB_TYPE_DAGGER, ITEM_SUB_TYPE_BOW, ITEM_SUB_TYPE_CROSSBOW, ITEM_SUB_TYPE_GUN, ITEM_SUB_TYPE_WAND, ITEM_SUB_TYPE_QUEST_ITEM, }; enum ItemSubSubtype { ITEM_SUB_SUB_TYPE_NONE, ITEM_SUB_SUB_TYPE_TWO_HAND, ITEM_SUB_SUB_TYPE_ONE_HAND, ITEM_SUB_SUB_TYPE_LEFT_HAND, ITEM_SUB_SUB_TYPE_RIGHT_HAND }; enum ArmorType { ARMOR_TYPE_NONE = 0, ARMOR_TYPE_CLOTH = 1, ARMOR_TYPE_LEATHER = 2, ARMOR_TYPE_MAIL = 3, ARMOR_TYPE_PLATE = 4, ARMOR_TYPE_MAX = 5, }; static String get_equip_slot_string(int slot); static String get_armor_type_string(int type); ItemEnums() {} protected: static void _bind_methods() { BIND_ENUM_CONSTANT(ITEM_RARITY_NONE); BIND_ENUM_CONSTANT(ITEM_RARITY_COMMON); BIND_ENUM_CONSTANT(ITEM_RARITY_UNCOMMON); BIND_ENUM_CONSTANT(ITEM_RARITY_SUPERIOR); BIND_ENUM_CONSTANT(ITEM_RARITY_HEROIC); BIND_ENUM_CONSTANT(ITEM_RARITY_MYTHIC); BIND_ENUM_CONSTANT(ITEM_RARITY_ARTIFACT); BIND_ENUM_CONSTANT(ITEM_RARITY_FLAG_NONE); BIND_ENUM_CONSTANT(ITEM_RARITY_FLAG_COMMON); BIND_ENUM_CONSTANT(ITEM_RARITY_FLAG_UNCOMMON); BIND_ENUM_CONSTANT(ITEM_RARITY_FLAG_SUPERIOR); BIND_ENUM_CONSTANT(ITEM_RARITY_FLAG_HEROIC); BIND_ENUM_CONSTANT(ITEM_RARITY_FLAG_MYTHIC); BIND_ENUM_CONSTANT(ITEM_RARITY_FLAG_ARTIFACT); BIND_ENUM_CONSTANT(ITEM_TYPE_NONE); BIND_ENUM_CONSTANT(ITEM_TYPE_EQUIPMENT); BIND_ENUM_CONSTANT(ITEM_TYPE_POTION); BIND_ENUM_CONSTANT(ITEM_TYPE_HERB); BIND_ENUM_CONSTANT(ITEM_TYPE_ORE); BIND_ENUM_CONSTANT(ITEM_TYPE_GEMSTONE); BIND_ENUM_CONSTANT(ITEM_TYPE_FOOD); BIND_ENUM_CONSTANT(ITEM_TYPE_ALCHEMY); BIND_ENUM_CONSTANT(ITEM_TYPE_ENGINEERING); BIND_ENUM_CONSTANT(ITEM_TYPE_ENCHANTING); BIND_ENUM_CONSTANT(ITEM_TYPE_TAILORING); BIND_ENUM_CONSTANT(ITEM_TYPE_RECIPE); BIND_ENUM_CONSTANT(ITEM_TYPE_CURRENCY); BIND_ENUM_CONSTANT(ITEM_TYPE_BAG); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_NONE); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_SWORD); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_AXE); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_MACE); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_DAGGER); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_BOW); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_CROSSBOW); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_GUN); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_WAND); BIND_ENUM_CONSTANT(ITEM_SUB_TYPE_QUEST_ITEM); BIND_ENUM_CONSTANT(ITEM_SUB_SUB_TYPE_NONE); BIND_ENUM_CONSTANT(ITEM_SUB_SUB_TYPE_TWO_HAND); BIND_ENUM_CONSTANT(ITEM_SUB_SUB_TYPE_ONE_HAND); BIND_ENUM_CONSTANT(ITEM_SUB_SUB_TYPE_LEFT_HAND); BIND_ENUM_CONSTANT(ITEM_SUB_SUB_TYPE_RIGHT_HAND); BIND_ENUM_CONSTANT(ARMOR_TYPE_NONE); BIND_ENUM_CONSTANT(ARMOR_TYPE_CLOTH); BIND_ENUM_CONSTANT(ARMOR_TYPE_LEATHER); BIND_ENUM_CONSTANT(ARMOR_TYPE_MAIL); BIND_ENUM_CONSTANT(ARMOR_TYPE_PLATE); BIND_ENUM_CONSTANT(ARMOR_TYPE_MAX); } }; VARIANT_ENUM_CAST(ItemEnums::ItemRarity); VARIANT_ENUM_CAST(ItemEnums::ItemRarityFlag); VARIANT_ENUM_CAST(ItemEnums::ItemType); VARIANT_ENUM_CAST(ItemEnums::ItemSubtype); VARIANT_ENUM_CAST(ItemEnums::ItemSubSubtype); VARIANT_ENUM_CAST(ItemEnums::ArmorType); #endif