Fixed sending item count changes to the client. Also added the stack_size_changed signal to ItemInstance.

This commit is contained in:
Relintai 2019-11-29 10:16:59 +01:00
parent 2ba11eec77
commit 992d0672f9
4 changed files with 17 additions and 5 deletions

View File

@ -41,6 +41,8 @@ int ItemInstance::get_stack_size() {
}
void ItemInstance::set_stack_size(int value) {
_stack_size = value;
emit_signal("stack_size_changed", Ref<ItemInstance>(this));
}
Dictionary ItemInstance::to_dict() {
@ -100,6 +102,7 @@ ItemInstance::~ItemInstance() {
void ItemInstance::_bind_methods() {
ADD_SIGNAL(MethodInfo("stack_size_changed", PropertyInfo(Variant::OBJECT, "item", PROPERTY_HINT_RESOURCE_TYPE, "ItemInstance")));
ClassDB::bind_method(D_METHOD("get_item_template"), &ItemInstance::get_item_template);
ClassDB::bind_method(D_METHOD("set_item_template", "value"), &ItemInstance::set_item_template);

View File

@ -4455,11 +4455,7 @@ void Entity::ons_item_count_changed(Ref<Bag> bag, Ref<ItemInstance> item, int sl
void Entity::cchange_item_count(int slot_id, int new_count) {
ERR_FAIL_COND(!_c_bag.is_valid());
Ref<ItemInstance> ii = _c_bag->get_item(slot_id);
ERR_FAIL_COND(!ii.is_valid());
ii->set_stack_size(new_count);
_c_bag->set_item_count(slot_id, new_count);
}
void Entity::ons_overburdened(Ref<Bag> bag) {

View File

@ -157,6 +157,18 @@ void Bag::change_item_equip(int slot_id, Ref<ItemInstance> item) {
emit_signal("change_item_equip", Ref<Bag>(this), slot_id, item);
}
void Bag::set_item_count(int slot_id, int new_count) {
ERR_FAIL_INDEX(slot_id, _items.size());
Ref<ItemInstance> ii = _items.get(slot_id);
ERR_FAIL_COND(!ii.is_valid());
ii->set_stack_size(new_count);
emit_signal("item_count_changed", Ref<Bag>(this), ii, slot_id);
}
bool Bag::can_add_item(const Ref<ItemInstance> item) {
if (has_method("_can_add_item")) {
return call("_can_add_item", item);

View File

@ -22,6 +22,7 @@ public:
Ref<ItemInstance> remove_item(const int index);
void swap_items(const int item1_index, const int item2_index);
void change_item_equip(int slot_id, Ref<ItemInstance> item);
void set_item_count(int slot_id, int new_count);
bool can_add_item(Ref<ItemInstance> item);