pandemonium_engine/modules/entity_spell_system/spell_enums.h

302 lines
11 KiB
C++

#ifndef SPELL_ENUMS_H
#define SPELL_ENUMS_H
/*************************************************************************/
/* spell_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"
class SpellEnums : public Object {
GDCLASS(SpellEnums, Object);
public:
static const String BINDING_STRING_SPELL_TYPES;
static const String BINDING_STRING_SPELL_CATEGORY;
static const String BINDING_STRING_TRIGGER_EVENTS;
static const String BINDING_STRING_DAMAGE_TYPES;
static const String BINDING_STRING_AURA_TYPES;
static const String BINDING_STRING_AURA_FLAG_TYPES;
static const String BINDING_STRING_COLLIDER_TYPE;
static const String BINDING_STRING_TARGET_TYPE;
static const String BINDING_STRING_TRIGGER_TYPE;
static const String BINDING_STRING_TRIGGER_NOTIFICATION_TYPE;
static const String BINDING_STRING_NOTIFICATION_AURAS;
static const String BINDING_STRING_NOTIFICATION_DAMAGES;
static const String BINDING_STRING_NOTIFICATION_HEALS;
static const String BINDING_STRING_NOTIFICATION_CASTS;
enum DamageType {
DAMAGE_TYPE_NONE = 0,
DAMAGE_TYPE_MELEE = 1 << 0,
DAMAGE_TYPE_HOLY = 1 << 1,
DAMAGE_TYPE_SHADOW = 1 << 2,
DAMAGE_TYPE_NATURE = 1 << 3,
DAMAGE_TYPE_FIRE = 1 << 4,
DAMAGE_TYPE_FROST = 1 << 5,
DAMAGE_TYPE_LIGHTNING = 1 << 6,
DAMAGE_TYPE_CHAOS = 1 << 7,
};
enum SpellCategory {
SPELL_CATEGORY_NORMAL = 0,
SPELL_CATEGORY_ALCHEMY = 1,
SPELL_CATEGORY_COOKING = 2,
SPELL_CATEGORY_ENGINEERING = 3,
SPELL_CATEGORY_CRAFTING = 4,
SPELL_CATEGORY_HIDDEN = 5,
SPELL_CATEGORY_DEVELOPMENT = 6,
};
enum SpellType {
SPELL_TYPE_NONE = 0,
SPELL_TYPE_MELEE = 1 << 0,
SPELL_TYPE_HOLY = 1 << 1,
SPELL_TYPE_SHADOW = 1 << 2,
SPELL_TYPE_NATURE = 1 << 3,
SPELL_TYPE_FIRE = 1 << 4,
SPELL_TYPE_FROST = 1 << 5,
SPELL_TYPE_LIGHTNING = 1 << 6,
SPELL_TYPE_CHAOS = 1 << 7,
};
enum AuraType {
AURA_TYPE_NONE = 0,
AURA_TYPE_MAGIC = 1 << 0,
AURA_TYPE_POISON = 1 << 1,
AURA_TYPE_PHYSICAL = 1 << 2,
AURA_TYPE_CURSE = 1 << 3,
AURA_TYPE_BLEED = 1 << 4,
AURA_TYPE_TALENT = 1 << 5,
AURA_TYPE_SKILL = 1 << 6,
};
enum ColliderType {
COLLIDER_TYPE_NONE = 0,
COLLIDER_TYPE_SPHERE,
COLLIDER_TYPE_BOX
};
enum TargetType {
TARGET_TYPE_NONE = 0,
TARGET_TYPE_NODE,
TARGET_TYPE_BONE_ID,
TARGET_TYPE_COORDS,
};
enum TriggerType {
TRIGGER_TYPE_NONE = 0,
TRIGGER_TYPE_PERCENT,
TRIGGER_TYPE_PPM,
};
enum TriggerNotificationType {
TRIGGER_NOTIFICATION_TYPE_AURA = 0,
TRIGGER_NOTIFICATION_TYPE_DAMAGE,
TRIGGER_NOTIFICATION_TYPE_HEAL,
TRIGGER_NOTIFICATION_TYPE_CAST,
TRIGGER_NOTIFICATION_TYPE_DEATH,
TRIGGER_NOTIFICATION_TYPE_COOLDOWN_ADDED,
TRIGGER_NOTIFICATION_TYPE_COOLDOWN_REMOVED,
TRIGGER_NOTIFICATION_TYPE_CATEGORY_COOLDOWN_ADDED,
TRIGGER_NOTIFICATION_TYPE_CATEGORY_COOLDOWN_REMOVED,
TRIGGER_NOTIFICATION_TYPE_GCD_STARTED,
TRIGGER_NOTIFICATION_TYPE_GCD_FINISHED,
TRIGGER_NOTIFICATION_TYPE_XP_GAINED,
TRIGGER_NOTIFICATION_TYPE_CLASS_LEVELUP,
TRIGGER_NOTIFICATION_TYPE_CHARACTER_LEVELUP,
TRIGGER_NOTIFICATION_TYPE_ENTITY_RESOURCE_ADDED,
TRIGGER_NOTIFICATION_TYPE_ENTITY_RESOURCE_REMOVED,
TRIGGER_NOTIFICATION_TYPE_AURA_CUSTOM,
TRIGGER_NOTIFICATION_TYPE_DAMAGE_CUSTOM,
TRIGGER_NOTIFICATION_TYPE_HEAL_CUSTOM,
TRIGGER_NOTIFICATION_TYPE_CAST_CUSTOM,
TRIGGER_NOTIFICATION_TYPE_CUSTOM,
};
enum {
NOTIFICATION_AURA_BEFORE_APPLIED = 0,
NOTIFICATION_AURA_AFTER_APPLIED,
NOTIFICATION_AURA_APPLIED,
NOTIFICATION_AURA_ADDED,
NOTIFICATION_AURA_REMOVED,
NOTIFICATION_AURA_REFRESHED,
};
enum {
NOTIFICATION_DAMAGE_BEFORE_HIT = 0,
NOTIFICATION_DAMAGE_HIT,
NOTIFICATION_DAMAGE_BEFORE_DAMAGE,
NOTIFICATION_DAMAGE_RECEIVE,
NOTIFICATION_DAMAGE_DEALT_DAMAGE,
NOTIFICATION_DAMAGE_DAMAGE_DEALT,
NOTIFICATION_DAMAGE_DAMAGE,
};
enum {
NOTIFICATION_HEAL_BEFORE_HIT = 0,
NOTIFICATION_HEAL_BEFORE_HEAL,
NOTIFICATION_HEAL_RECEIVE,
NOTIFICATION_HEAL_DEALT_HEAL,
NOTIFICATION_HEAL_HEAL_DEALT,
};
enum {
NOTIFICATION_CAST_BEFORE = 0,
NOTIFICATION_CAST_BEFORE_CAST_TARGET,
NOTIFICATION_CAST_FINISHED_TARGET,
NOTIFICATION_CAST_FINISHED,
NOTIFICATION_CAST_STARTED,
NOTIFICATION_CAST_FAILED,
NOTIFICATION_CAST_SUCCESS,
NOTIFICATION_CAST_INTERRUPTED,
NOTIFICATION_CAST_DELAYED,
};
SpellEnums() {}
protected:
static void _bind_methods() {
BIND_ENUM_CONSTANT(DAMAGE_TYPE_NONE);
BIND_ENUM_CONSTANT(DAMAGE_TYPE_MELEE);
BIND_ENUM_CONSTANT(DAMAGE_TYPE_HOLY);
BIND_ENUM_CONSTANT(DAMAGE_TYPE_SHADOW);
BIND_ENUM_CONSTANT(DAMAGE_TYPE_NATURE);
BIND_ENUM_CONSTANT(DAMAGE_TYPE_FIRE);
BIND_ENUM_CONSTANT(DAMAGE_TYPE_FROST);
BIND_ENUM_CONSTANT(DAMAGE_TYPE_LIGHTNING);
BIND_ENUM_CONSTANT(DAMAGE_TYPE_CHAOS);
BIND_ENUM_CONSTANT(SPELL_CATEGORY_NORMAL);
BIND_ENUM_CONSTANT(SPELL_CATEGORY_ALCHEMY);
BIND_ENUM_CONSTANT(SPELL_CATEGORY_COOKING);
BIND_ENUM_CONSTANT(SPELL_CATEGORY_ENGINEERING);
BIND_ENUM_CONSTANT(SPELL_CATEGORY_CRAFTING);
BIND_ENUM_CONSTANT(SPELL_CATEGORY_HIDDEN);
BIND_ENUM_CONSTANT(SPELL_CATEGORY_DEVELOPMENT);
BIND_ENUM_CONSTANT(SPELL_TYPE_NONE);
BIND_ENUM_CONSTANT(SPELL_TYPE_MELEE);
BIND_ENUM_CONSTANT(SPELL_TYPE_HOLY);
BIND_ENUM_CONSTANT(SPELL_TYPE_SHADOW);
BIND_ENUM_CONSTANT(SPELL_TYPE_NATURE);
BIND_ENUM_CONSTANT(SPELL_TYPE_FIRE);
BIND_ENUM_CONSTANT(SPELL_TYPE_FROST);
BIND_ENUM_CONSTANT(SPELL_TYPE_LIGHTNING);
BIND_ENUM_CONSTANT(SPELL_TYPE_CHAOS);
BIND_ENUM_CONSTANT(AURA_TYPE_NONE);
BIND_ENUM_CONSTANT(AURA_TYPE_MAGIC);
BIND_ENUM_CONSTANT(AURA_TYPE_POISON);
BIND_ENUM_CONSTANT(AURA_TYPE_PHYSICAL);
BIND_ENUM_CONSTANT(AURA_TYPE_CURSE);
BIND_ENUM_CONSTANT(AURA_TYPE_BLEED);
BIND_ENUM_CONSTANT(AURA_TYPE_TALENT);
BIND_ENUM_CONSTANT(AURA_TYPE_SKILL);
BIND_ENUM_CONSTANT(COLLIDER_TYPE_NONE);
BIND_ENUM_CONSTANT(COLLIDER_TYPE_SPHERE);
BIND_ENUM_CONSTANT(COLLIDER_TYPE_BOX);
BIND_ENUM_CONSTANT(TARGET_TYPE_NONE);
BIND_ENUM_CONSTANT(TARGET_TYPE_NODE);
BIND_ENUM_CONSTANT(TARGET_TYPE_BONE_ID);
BIND_ENUM_CONSTANT(TARGET_TYPE_COORDS);
BIND_ENUM_CONSTANT(TRIGGER_TYPE_NONE);
BIND_ENUM_CONSTANT(TRIGGER_TYPE_PERCENT);
BIND_ENUM_CONSTANT(TRIGGER_TYPE_PPM);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_AURA);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_DAMAGE);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_HEAL);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_CAST);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_DEATH);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_COOLDOWN_ADDED);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_COOLDOWN_REMOVED);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_CATEGORY_COOLDOWN_ADDED);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_CATEGORY_COOLDOWN_REMOVED);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_GCD_STARTED);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_GCD_FINISHED);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_XP_GAINED);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_CLASS_LEVELUP);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_CHARACTER_LEVELUP);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_ENTITY_RESOURCE_ADDED);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_ENTITY_RESOURCE_REMOVED);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_AURA_CUSTOM);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_DAMAGE_CUSTOM);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_HEAL_CUSTOM);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_CAST_CUSTOM);
BIND_ENUM_CONSTANT(TRIGGER_NOTIFICATION_TYPE_CUSTOM);
BIND_CONSTANT(NOTIFICATION_AURA_BEFORE_APPLIED);
BIND_CONSTANT(NOTIFICATION_AURA_AFTER_APPLIED);
BIND_CONSTANT(NOTIFICATION_AURA_APPLIED);
BIND_CONSTANT(NOTIFICATION_AURA_ADDED);
BIND_CONSTANT(NOTIFICATION_AURA_REMOVED);
BIND_CONSTANT(NOTIFICATION_AURA_REFRESHED);
BIND_CONSTANT(NOTIFICATION_DAMAGE_BEFORE_HIT);
BIND_CONSTANT(NOTIFICATION_DAMAGE_HIT);
BIND_CONSTANT(NOTIFICATION_DAMAGE_BEFORE_DAMAGE);
BIND_CONSTANT(NOTIFICATION_DAMAGE_RECEIVE);
BIND_CONSTANT(NOTIFICATION_DAMAGE_DEALT_DAMAGE);
BIND_CONSTANT(NOTIFICATION_DAMAGE_DAMAGE_DEALT);
BIND_CONSTANT(NOTIFICATION_HEAL_BEFORE_HIT);
BIND_CONSTANT(NOTIFICATION_HEAL_BEFORE_HEAL);
BIND_CONSTANT(NOTIFICATION_HEAL_RECEIVE);
BIND_CONSTANT(NOTIFICATION_HEAL_DEALT_HEAL);
BIND_CONSTANT(NOTIFICATION_HEAL_HEAL_DEALT);
BIND_CONSTANT(NOTIFICATION_CAST_BEFORE);
BIND_CONSTANT(NOTIFICATION_CAST_BEFORE_CAST_TARGET);
BIND_CONSTANT(NOTIFICATION_CAST_FINISHED_TARGET);
BIND_CONSTANT(NOTIFICATION_CAST_FINISHED);
BIND_CONSTANT(NOTIFICATION_CAST_STARTED);
BIND_CONSTANT(NOTIFICATION_CAST_FAILED);
BIND_CONSTANT(NOTIFICATION_CAST_SUCCESS);
BIND_CONSTANT(NOTIFICATION_CAST_INTERRUPTED);
BIND_CONSTANT(NOTIFICATION_CAST_DELAYED);
}
};
VARIANT_ENUM_CAST(SpellEnums::SpellType);
VARIANT_ENUM_CAST(SpellEnums::SpellCategory);
VARIANT_ENUM_CAST(SpellEnums::DamageType);
VARIANT_ENUM_CAST(SpellEnums::AuraType);
VARIANT_ENUM_CAST(SpellEnums::ColliderType);
VARIANT_ENUM_CAST(SpellEnums::TargetType);
VARIANT_ENUM_CAST(SpellEnums::TriggerNotificationType);
VARIANT_ENUM_CAST(SpellEnums::TriggerType);
#endif