mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-05-07 22:31:39 +02:00
Fix small issues, and model re-generation.
This commit is contained in:
parent
e57b8ec27a
commit
6c1c5eca46
@ -1357,6 +1357,12 @@ void Entity::cequip_success(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
_c_bag->add_item_at(bag_slot, old_equipped_item);
|
||||
setc_equip_slot(equip_slot, old_bag_item);
|
||||
|
||||
if (old_equipped_item.is_valid())
|
||||
cdeapply_item(old_equipped_item);
|
||||
|
||||
if (old_bag_item.is_valid())
|
||||
capply_item(old_bag_item);
|
||||
|
||||
con_equip_success(equip_slot, old_bag_item, old_equipped_item, bag_slot);
|
||||
}
|
||||
void Entity::cequip_fail(ItemEnums::EquipSlots equip_slot, int bag_slot) {
|
||||
@ -1395,7 +1401,9 @@ bool Entity::can_equip_item(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance>
|
||||
return call("_can_equip_item", equip_slot, item);
|
||||
}
|
||||
bool Entity::_can_equip_item(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item) {
|
||||
ERR_FAIL_COND_V(!item.is_valid(), false);
|
||||
//deequip
|
||||
if (!item.is_valid())
|
||||
return true;
|
||||
|
||||
Ref<ItemTemplate> it = item->get_item_template();
|
||||
|
||||
@ -1414,6 +1422,10 @@ void Entity::sdeapply_item(Ref<ItemInstance> item) {
|
||||
void Entity::_sapply_item(Ref<ItemInstance> item) {
|
||||
ERR_FAIL_COND(!item.is_valid());
|
||||
|
||||
Ref<ItemTemplate> it = item->get_item_template();
|
||||
|
||||
ERR_FAIL_COND(!it.is_valid());
|
||||
|
||||
for (int i = 0; i < item->get_item_stat_modifier_count(); ++i) {
|
||||
Ref<ItemStatModifier> mod = item->get_item_stat_modifier(i);
|
||||
|
||||
@ -1436,6 +1448,10 @@ void Entity::_sapply_item(Ref<ItemInstance> item) {
|
||||
void Entity::_sdeapply_item(Ref<ItemInstance> item) {
|
||||
ERR_FAIL_COND(!item.is_valid());
|
||||
|
||||
Ref<ItemTemplate> it = item->get_item_template();
|
||||
|
||||
ERR_FAIL_COND(!it.is_valid());
|
||||
|
||||
for (int i = 0; i < item->get_item_stat_modifier_count(); ++i) {
|
||||
Ref<ItemStatModifier> mod = item->get_item_stat_modifier(i);
|
||||
|
||||
@ -1456,6 +1472,36 @@ void Entity::_sdeapply_item(Ref<ItemInstance> item) {
|
||||
}
|
||||
}
|
||||
|
||||
void Entity::capply_item(Ref<ItemInstance> item) {
|
||||
call("_capply_item", item);
|
||||
}
|
||||
void Entity::cdeapply_item(Ref<ItemInstance> item) {
|
||||
call("_cdeapply_item", item);
|
||||
}
|
||||
|
||||
void Entity::_capply_item(Ref<ItemInstance> item) {
|
||||
ERR_FAIL_COND(!item.is_valid());
|
||||
|
||||
Ref<ItemTemplate> it = item->get_item_template();
|
||||
|
||||
ERR_FAIL_COND(!it.is_valid());
|
||||
|
||||
if (it->get_item_visual().is_valid() && ObjectDB::instance_validate(_character_skeleton)) {
|
||||
_character_skeleton->add_item_visual(it->get_item_visual());
|
||||
}
|
||||
}
|
||||
void Entity::_cdeapply_item(Ref<ItemInstance> item) {
|
||||
ERR_FAIL_COND(!item.is_valid());
|
||||
|
||||
Ref<ItemTemplate> it = item->get_item_template();
|
||||
|
||||
ERR_FAIL_COND(!it.is_valid());
|
||||
|
||||
if (it->get_item_visual().is_valid() && ObjectDB::instance_validate(_character_skeleton)) {
|
||||
_character_skeleton->remove_item_visual(it->get_item_visual());
|
||||
}
|
||||
}
|
||||
|
||||
//// Resources ////
|
||||
|
||||
Ref<EntityResource> Entity::gets_resource(int index) {
|
||||
@ -5695,6 +5741,15 @@ void Entity::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("_sapply_item", "item"), &Entity::_sapply_item);
|
||||
ClassDB::bind_method(D_METHOD("_sdeapply_item", "item"), &Entity::_sdeapply_item);
|
||||
|
||||
BIND_VMETHOD(MethodInfo("_capply_item", PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance")));
|
||||
BIND_VMETHOD(MethodInfo("_cdeapply_item", PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance")));
|
||||
|
||||
ClassDB::bind_method(D_METHOD("csapply_item", "item"), &Entity::capply_item);
|
||||
ClassDB::bind_method(D_METHOD("cdeapply_item", "item"), &Entity::cdeapply_item);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("_capply_item", "item"), &Entity::_capply_item);
|
||||
ClassDB::bind_method(D_METHOD("_cdeapply_item", "item"), &Entity::_cdeapply_item);
|
||||
|
||||
//Resources
|
||||
ClassDB::bind_method(D_METHOD("gets_resource", "index"), &Entity::gets_resource);
|
||||
ClassDB::bind_method(D_METHOD("gets_resource_type", "type"), &Entity::gets_resource_type);
|
||||
|
@ -333,6 +333,12 @@ public:
|
||||
void _sapply_item(Ref<ItemInstance> item);
|
||||
void _sdeapply_item(Ref<ItemInstance> item);
|
||||
|
||||
void capply_item(Ref<ItemInstance> item);
|
||||
void cdeapply_item(Ref<ItemInstance> item);
|
||||
|
||||
void _capply_item(Ref<ItemInstance> item);
|
||||
void _cdeapply_item(Ref<ItemInstance> item);
|
||||
|
||||
//// Resources ////
|
||||
|
||||
Ref<EntityResource> gets_resource(int index);
|
||||
|
@ -76,8 +76,6 @@ bool Bag::add_item(Ref<ItemInstance> item) {
|
||||
}
|
||||
|
||||
void Bag::add_item_at(int index, Ref<ItemInstance> item, bool signal) {
|
||||
ERR_FAIL_COND(!item.is_valid());
|
||||
|
||||
if (has_method("_add_item_at")) {
|
||||
call("_add_item_at", index, item, signal);
|
||||
return;
|
||||
|
@ -86,6 +86,9 @@ void CharacterSkeleton3D::add_item_visual(Ref<ItemVisual> vis) {
|
||||
}
|
||||
|
||||
_item_visuals.push_back(vis);
|
||||
|
||||
set_process(true);
|
||||
_model_dirty = true;
|
||||
}
|
||||
void CharacterSkeleton3D::remove_item_visual(Ref<ItemVisual> vis) {
|
||||
ERR_FAIL_COND(!vis.is_valid());
|
||||
@ -103,15 +106,24 @@ void CharacterSkeleton3D::remove_item_visual(Ref<ItemVisual> vis) {
|
||||
}
|
||||
|
||||
_item_visuals.remove(index);
|
||||
|
||||
set_process(true);
|
||||
_model_dirty = true;
|
||||
}
|
||||
void CharacterSkeleton3D::remove_item_visual_index(int index) {
|
||||
ERR_FAIL_INDEX(index, _item_visuals.size());
|
||||
|
||||
set_process(true);
|
||||
_model_dirty = true;
|
||||
|
||||
_item_visuals.remove(index);
|
||||
}
|
||||
Ref<ItemVisual> CharacterSkeleton3D::get_item_visual(int index) {
|
||||
ERR_FAIL_INDEX_V(index, _item_visuals.size(), Ref<ItemVisual>());
|
||||
|
||||
set_process(true);
|
||||
_model_dirty = true;
|
||||
|
||||
return _item_visuals.get(index);
|
||||
}
|
||||
int CharacterSkeleton3D::get_item_visual_count() {
|
||||
|
@ -74,7 +74,7 @@ protected:
|
||||
return false;
|
||||
}
|
||||
|
||||
return (a->get_priority() < b->get_priority());
|
||||
return (a->get_priority() > b->get_priority());
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user