Cleanups, and more missing stuff.

This commit is contained in:
Relintai 2019-10-13 13:53:03 +02:00
parent 698e418d16
commit 65227db52c
4 changed files with 66 additions and 27 deletions

View File

@ -703,6 +703,17 @@ void Entity::_from_dict(const Dictionary &dict) {
} else {
_s_bag->from_dict(bagd);
}
/*
if (!_c_bag.is_valid()) {
Ref<Bag> bag;
bag.instance();
bag->from_dict(bagd);
setc_bag(bag);
} else {
_c_bag->from_dict(bagd);
}*/
}
if (DataManager::get_instance() != NULL) {
@ -1310,31 +1321,37 @@ void Entity::con_equip_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance>
emit_signal("con_equip_fail", this, equip_slot, item, old_item, bag_slot);
}
void Entity::crequest_equip(int equip_slot, int bag_slot) {
void Entity::crequest_equip(ItemEnums::EquipSlots equip_slot, int bag_slot) {
sequip(equip_slot, bag_slot);
}
void Entity::sequip(int equip_slot, int bag_slot) {
void Entity::sequip(ItemEnums::EquipSlots equip_slot, int bag_slot) {
call("_sequip", equip_slot, bag_slot);
}
void Entity::_sequip(int equip_slot, int bag_slot) {
}
void Entity::_sequip(ItemEnums::EquipSlots equip_slot, int bag_slot) {
void Entity::sequip_succeeded(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
son_equip_success(equip_slot, item, old_item, bag_slot);
SEND_RPC(rpc("cequip_succeeded", equip_slot, item, old_item, bag_slot), cequip_succeeded(equip_slot, item, old_item, bag_slot));
}
void Entity::sequip_failed(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
son_equip_fail(equip_slot, item, old_item, bag_slot);
void Entity::cequip_success(ItemEnums::EquipSlots equip_slot, int bag_slot) {
ERR_FAIL_INDEX(equip_slot, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
ERR_FAIL_COND(!_c_bag.is_valid());
SEND_RPC(rpc("cequip_failed", equip_slot, item, old_item, bag_slot), cequip_failed(equip_slot, item, old_item, bag_slot));
}
Ref<ItemInstance> bag_item = _c_bag->get_item(bag_slot);
Ref<ItemInstance> equipped_item = getc_equip_slot(equip_slot);
void Entity::cequip_succeeded(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
con_equip_success(equip_slot, item, old_item, bag_slot);
//Not Yet
//setc_equip_slot(equip_slot, bag_item);
//_c_bag->set_item(bag_slot, old_item);
con_equip_success(equip_slot, equipped_item, bag_item, bag_slot);
}
void Entity::cequip_failed(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot) {
con_equip_fail(equip_slot, item, old_item, bag_slot);
void Entity::cequip_fail(ItemEnums::EquipSlots equip_slot, int bag_slot) {
ERR_FAIL_INDEX(equip_slot, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
ERR_FAIL_COND(!_c_bag.is_valid());
Ref<ItemInstance> bag_item = _c_bag->get_item(bag_slot);
Ref<ItemInstance> equipped_item = getc_equip_slot(equip_slot);
con_equip_success(equip_slot, equipped_item, bag_item, bag_slot);
}
Ref<ItemInstance> Entity::gets_equip_slot(int index) {
@ -1342,12 +1359,22 @@ Ref<ItemInstance> Entity::gets_equip_slot(int index) {
return _s_equipment[index];
}
void Entity::sets_equip_slot(int index, Ref<ItemInstance> item) {
ERR_FAIL_INDEX(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
_s_equipment[index] = item;
}
Ref<ItemInstance> Entity::getc_equip_slot(int index) {
ERR_FAIL_INDEX_V(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX, Ref<ItemInstance>());
return _c_equipment[index];
}
void Entity::setc_equip_slot(int index, Ref<ItemInstance> item) {
ERR_FAIL_INDEX(index, ItemEnums::EQUIP_SLOT_EQUIP_SLOT_MAX);
_c_equipment[index] = item;
}
void Entity::sapply_item_stats(Ref<ItemInstance> item) {
call("_sapply_item_stats", item);
@ -4733,10 +4760,8 @@ void Entity::_bind_methods() {
ClassDB::bind_method(D_METHOD("sequip", "equip_slot", "bag_slot"), &Entity::sequip);
ClassDB::bind_method(D_METHOD("_sequip", "equip_slot", "bag_slot"), &Entity::_sequip);
ClassDB::bind_method(D_METHOD("sequip_succeeded", "equip_slot", "item", "old_item", "bag_slot"), &Entity::sequip_succeeded);
ClassDB::bind_method(D_METHOD("sequip_failed", "equip_slot", "item", "old_item", "bag_slot"), &Entity::sequip_failed);
ClassDB::bind_method(D_METHOD("cequip_succeeded", "equip_slot", "item", "old_item", "bag_slot"), &Entity::cequip_succeeded);
ClassDB::bind_method(D_METHOD("cequip_failed", "equip_slot", "item", "old_item", "bag_slot"), &Entity::cequip_failed);
ClassDB::bind_method(D_METHOD("cequip_success", "equip_slot", "bag_slot"), &Entity::cequip_success);
ClassDB::bind_method(D_METHOD("cequip_fail", "equip_slot", "bag_slot"), &Entity::cequip_fail);
ClassDB::bind_method(D_METHOD("gets_equip_slot", "index"), &Entity::gets_equip_slot);
ClassDB::bind_method(D_METHOD("getc_equip_slot", "index"), &Entity::getc_equip_slot);

View File

@ -248,18 +248,18 @@ public:
void con_equip_success(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
void con_equip_fail(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
void crequest_equip(int equip_slot, int bag_slot);
void sequip(int equip_slot, int bag_slot);
void _sequip(int equip_slot, int bag_slot);
void crequest_equip(ItemEnums::EquipSlots equip_slot, int bag_slot);
void sequip(ItemEnums::EquipSlots equip_slot, int bag_slot);
void _sequip(ItemEnums::EquipSlots equip_slot, int bag_slot);
void sequip_succeeded(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
void sequip_failed(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
void cequip_succeeded(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
void cequip_failed(ItemEnums::EquipSlots equip_slot, Ref<ItemInstance> item, Ref<ItemInstance> old_item, int bag_slot);
void cequip_success(ItemEnums::EquipSlots equip_slot, int bag_slot);
void cequip_fail(ItemEnums::EquipSlots equip_slot, int bag_slot);
Ref<ItemInstance> gets_equip_slot(int index);
void sets_equip_slot(int index, Ref<ItemInstance> item);
Ref<ItemInstance> getc_equip_slot(int index);
void setc_equip_slot(int index, Ref<ItemInstance> item);
void sapply_item_stats(Ref<ItemInstance> item);
void sdeapply_item_stats(Ref<ItemInstance> item);

View File

@ -75,6 +75,16 @@ bool Bag::add_item(Ref<ItemInstance> item) {
return true;
}
void Bag::set_item(int index, Ref<ItemInstance> item) {
if (has_method("_set_item")) {
call("_set_item", index, item);
}
ERR_FAIL_INDEX(index, _items.size());
_items.set(index, item);
}
Ref<ItemInstance> Bag::get_item(const int index) {
if (has_method("_get_item")) {
return call("_get_item", index);
@ -261,6 +271,7 @@ Bag::~Bag() {
void Bag::_bind_methods() {
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::BOOL, "could_add"), "_add_item", PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance")));
BIND_VMETHOD(MethodInfo("_set_item", PropertyInfo(Variant::INT, "index") , PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance")));
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance"), "_get_item", PropertyInfo(Variant::INT, "index")));
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance"), "_remove_item", PropertyInfo(Variant::INT, "index")));
BIND_VMETHOD(MethodInfo("_swap_items", PropertyInfo(Variant::INT, "item1_index"), PropertyInfo(Variant::INT, "item2_index")));
@ -273,6 +284,7 @@ void Bag::_bind_methods() {
BIND_VMETHOD(MethodInfo(PropertyInfo(Variant::BOOL, "overburdened"), "_is_overburdened"));
ADD_SIGNAL(MethodInfo("item_added", PropertyInfo(Variant::OBJECT, "bag", PROPERTY_HINT_RESOURCE_TYPE, "Bag"), PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance"), PropertyInfo(Variant::INT, "slot_id")));
ADD_SIGNAL(MethodInfo("item_set", PropertyInfo(Variant::OBJECT, "bag", PROPERTY_HINT_RESOURCE_TYPE, "Bag"), PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance"), PropertyInfo(Variant::INT, "slot_id")));
ADD_SIGNAL(MethodInfo("item_removed", PropertyInfo(Variant::OBJECT, "bag", PROPERTY_HINT_RESOURCE_TYPE, "Bag"), PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance"), PropertyInfo(Variant::INT, "slot_id")));
ADD_SIGNAL(MethodInfo("item_swapped", PropertyInfo(Variant::OBJECT, "bag", PROPERTY_HINT_RESOURCE_TYPE, "Bag"), PropertyInfo(Variant::INT, "slot_id_1"), PropertyInfo(Variant::INT, "slot_id_2")));
ADD_SIGNAL(MethodInfo("item_count_changed", PropertyInfo(Variant::OBJECT, "bag", PROPERTY_HINT_RESOURCE_TYPE, "Bag"), PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance"), PropertyInfo(Variant::INT, "slot_id")));
@ -285,6 +297,7 @@ void Bag::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "allowed_item_types", PROPERTY_HINT_FLAGS, ItemEnums::BINDING_STRING_ITEM_TYPE_FLAGS), "set_allowed_item_types", "get_allowed_item_types");
ClassDB::bind_method(D_METHOD("add_item", "item"), &Bag::add_item);
ClassDB::bind_method(D_METHOD("set_item", "index", "item"), &Bag::set_item);
ClassDB::bind_method(D_METHOD("get_item", "index"), &Bag::get_item);
ClassDB::bind_method(D_METHOD("remove_item", "index"), &Bag::remove_item);
ClassDB::bind_method(D_METHOD("swap_items", "item1_index", "item2_index"), &Bag::swap_items);

View File

@ -17,6 +17,7 @@ public:
void set_allowed_item_types(const int value);
bool add_item(Ref<ItemInstance> item);
void set_item(int index, Ref<ItemInstance> item);
Ref<ItemInstance> get_item(const int index);
Ref<ItemInstance> remove_item(const int index);
void swap_items(const int item1_index, const int item2_index);