func (p *Player) Equip(item gameObjectsBase.Itemer, slotIota int) (int, consts.JsonType) { var res consts.JsonType = nil slot := p.slots[slotIota] if slot == nil || !slot.isSuitableType(item.GetItemType()) { return consts.BADSLOT, res } if item.GetItemClass() != consts.ITEM_CLASS_GARMENT || p.Equipped(item) { return consts.BADID, res } p.Unequip(slotIota) db := connect.CreateConnect() _, err := db.Exec("CALL equip_item(?, ?, ?, ?)", p.DBId, item.GetKindId(), item.EquipItem(p.Inventory), slotIota) if err == nil { if ok, s := p.getNearbySlot(slotIota, item.GetItemSubtype()); ok { if p.slots[s].item != nil && p.slots[s].item.GetID() != item.GetID() { p.Unequip(s) } res = consts.JsonType{} res[consts.SlotNameMapping[s]] = item.GetID() p.slots[s].item = nil } else { p.Unequip(slotIota) } slot.item = item } if err == nil { return consts.OK, res } else { return consts.BADID, res } }
func (p *Player) RestoreSlot(item gameObjectsBase.Itemer, slotIota int) { p.Inventory.RestoreItem(item) p.slots[slotIota].item = item if ok, s := p.getNearbySlot(slotIota, item.GetItemSubtype()); ok { if p.slots[s].item != nil { p.slots[s].item = nil } // p.slots[s].item = item } item.EquipItem(p.Inventory) item.SetOwner(p) }