This commit is contained in:
aozhiwei 2024-10-15 14:40:15 +08:00
parent da6df7256c
commit 23124ca3da
3 changed files with 17 additions and 4 deletions

View File

@ -42,8 +42,19 @@ void Bag::Parse(const std::list<std::tuple<int, int, int, int>>& items)
} }
} }
std::shared_ptr<BagItem> Bag::GetItemById(int equip_id) std::shared_ptr<BagItem> Bag::GetItemByEquipId(int equip_id)
{ {
auto itr = items_.find(equip_id); auto itr = items_.find(equip_id);
return itr != items_.end() ? itr->second : nullptr; return itr != items_.end() ? itr->second : nullptr;
} }
std::shared_ptr<BagItem> Bag::GetItemByItemId(int item_id)
{
for (auto pair : items_) {
auto item = pair.second;
if (item->item_meta && item->item_meta->id() == item_id) {
return item;
}
}
return nullptr;
}

View File

@ -27,7 +27,8 @@ class Bag
void UseItem(int equip_id); void UseItem(int equip_id);
void PushBagInfo(); void PushBagInfo();
void Parse(const std::list<std::tuple<int, int, int, int>>& items); void Parse(const std::list<std::tuple<int, int, int, int>>& items);
std::shared_ptr<BagItem> GetItemById(int equip_id); std::shared_ptr<BagItem> GetItemByEquipId(int equip_id);
std::shared_ptr<BagItem> GetItemByItemId(int item_id);
void UpdateItemNum(int item_id, int item_num); void UpdateItemNum(int item_id, int item_num);
private: private:

View File

@ -2948,7 +2948,7 @@ void CustomBattle::NotifyState()
void Bag::UseItem(int equip_id) void Bag::UseItem(int equip_id)
{ {
auto p = GetItemById(equip_id); auto p = GetItemByEquipId(equip_id);
if (p && p->equip_num > 0 && p->GetCdTime(owner_) <= 0 && p->equip_meta && p->potion_meta) { if (p && p->equip_num > 0 && p->GetCdTime(owner_) <= 0 && p->equip_meta && p->potion_meta) {
--p->equip_num; --p->equip_num;
p->last_use_tick = owner_->room->GetFrameNo(); p->last_use_tick = owner_->room->GetFrameNo();
@ -2978,6 +2978,7 @@ void Bag::UseItem(int equip_id)
p->potion_meta->buff(), p->potion_meta->buff(),
p->potion_meta->duration() * 1000); p->potion_meta->duration() * 1000);
} }
owner_->GetNetData()->UseItem(p->item_meta->id());
cs::SMUpdateBag notify_msg; cs::SMUpdateBag notify_msg;
auto pb_item = notify_msg.add_items(); auto pb_item = notify_msg.add_items();
@ -3020,7 +3021,7 @@ void Bag::InternalPushBagInfo()
void Bag::UpdateItemNum(int item_id, int item_num) void Bag::UpdateItemNum(int item_id, int item_num)
{ {
auto p = GetItemById(item_id); auto p = GetItemByItemId(item_id);
if (p) { if (p) {
p->equip_num = item_num; p->equip_num = item_num;
cs::SMUpdateBag notify_msg; cs::SMUpdateBag notify_msg;