diff --git a/SCsub b/SCsub index 4b91b46..7e9b849 100644 --- a/SCsub +++ b/SCsub @@ -7,6 +7,9 @@ module_env = env.Clone() if os.path.isdir('../mesh_data_resource'): module_env.Append(CPPDEFINES=['MESH_DATA_RESOURCE_PRESENT']) +if os.path.isdir('../props'): + module_env.Append(CPPDEFINES=['PROPS_PRESENT']) + sources = [ "register_types.cpp", @@ -119,6 +122,8 @@ sources = [ "database/ess_resource_db_folders.cpp", "editor/ess_editor_plugin.cpp", + + "props/prop_data_entity.cpp", ] if ARGUMENTS.get('custom_modules_shared', 'no') == 'yes': diff --git a/config.py b/config.py index 05247a6..fe8ab91 100644 --- a/config.py +++ b/config.py @@ -102,6 +102,8 @@ def get_doc_classes(): "SpellEnums", "ESSEntitySpawner", + + "PropDataEntity", ] def get_doc_path(): diff --git a/props/prop_data_entity.cpp b/props/prop_data_entity.cpp new file mode 100644 index 0000000..f47157d --- /dev/null +++ b/props/prop_data_entity.cpp @@ -0,0 +1,58 @@ +/* +Copyright (c) 2019-2020 Péter Magyar + +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 "prop_data_entity.h" + +#if PROPS_PRESENT + +Ref PropDataEntity::get_entity_data() const { + return _entity_data; +} +void PropDataEntity::set_entity_data(const Ref &value) { + _entity_data = value; +} + +int PropDataEntity::get_level() const { + return _level; +} +void PropDataEntity::set_level(const int value) { + _level = value; +} + +PropDataEntity::PropDataEntity() { + _level = 1; +} +PropDataEntity::~PropDataEntity() { + _entity_data.unref(); +} + +void PropDataEntity::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_entity_data"), &PropDataEntity::get_entity_data); + ClassDB::bind_method(D_METHOD("set_entity_data", "value"), &PropDataEntity::set_entity_data); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "entity_data", PROPERTY_HINT_RESOURCE_TYPE, "EntityData"), "set_entity_data", "get_entity_data"); + + ClassDB::bind_method(D_METHOD("get_level"), &PropDataEntity::get_level); + ClassDB::bind_method(D_METHOD("set_level", "value"), &PropDataEntity::set_level); + ADD_PROPERTY(PropertyInfo(Variant::INT, "level"), "set_level", "get_level"); +} + +#endif \ No newline at end of file diff --git a/props/prop_data_entity.h b/props/prop_data_entity.h new file mode 100644 index 0000000..7926b5c --- /dev/null +++ b/props/prop_data_entity.h @@ -0,0 +1,55 @@ +/* +Copyright (c) 2019-2020 Péter Magyar + +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. +*/ + +#ifndef PROP_DATA_ENTITY_H +#define PROP_DATA_ENTITY_H + +#if PROPS_PRESENT + +#include "../../props/props/prop_data_entry.h" + +#include "../entities/data/entity_data.h" + +class PropDataEntity : public PropDataEntry { + GDCLASS(PropDataEntity, PropDataEntry); + +public: + Ref get_entity_data() const; + void set_entity_data(const Ref &value); + + int get_level() const; + void set_level(const int value); + + PropDataEntity(); + ~PropDataEntity(); + +protected: + static void _bind_methods(); + +private: + int _level; + Ref _entity_data; +}; + +#endif + +#endif diff --git a/register_types.cpp b/register_types.cpp index 4578a2b..d080a0d 100644 --- a/register_types.cpp +++ b/register_types.cpp @@ -132,10 +132,18 @@ SOFTWARE. #include "database/ess_resource_db_map.h" #include "database/ess_resource_db_static.h" +#if PROPS_PRESENT +#include "props/prop_data_entity.h" +#endif + static ESS *entity_data_manager = NULL; static ProfileManager *profile_manager = NULL; void register_entity_spell_system_types() { +#if PROPS_PRESENT + ClassDB::register_class(); +#endif + ClassDB::register_class(); //data