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) Equipped(item gameObjectsBase.Itemer) bool { for _, slot := range p.slots { if slot.item != nil && slot.item.GetID() == item.GetID() { return true } } return false }
func (p *Player) getSlotByItem(item gameObjectsBase.Itemer) int { var slot int = consts.SLOT_DEFAULT for i, s := range p.slots { if s.item != nil && (s.item.GetID() == item.GetID()) { slot = i break } } return slot }
func (p *Player) MoveItem(item gameObjectsBase.Itemer, to_cell int) bool { if owner := item.GetOwner(); (owner != nil && owner.GetID() != p.GetID()) || p.Equipped(item) { return false } from_cell := p.Inventory.GetPlace(item.GetID()) if from_cell == to_cell { return true } else { db := connect.CreateConnect() _, err := db.Exec("CALL move_item(?, ?, ?)", p.DBId, from_cell, to_cell) if err == nil { p.Inventory.MoveItem(item, from_cell, to_cell) } return err == nil } }
func (il *itemList) deleteItem(i gameObjectsBase.Itemer) { delete(il.items, i.GetID()) }
func (il *itemList) addItem(i gameObjectsBase.Itemer) { il.items[i.GetID()] = i }
func (p *Player) IsEquippedItem(item gameObjectsBase.Itemer) bool { return (item.GetID() == p.fist.GetID() && (p.slots[consts.SLOT_LEFT_HAND].item == nil || p.slots[consts.SLOT_RIGHT_HAND].item == nil)) || item.IsEquipped() }