public void HandleEquipItem(C_EquipItem equipPacket) { Item item = Inven.Get(equipPacket.ItemDbId); if (item == null) { return; } if (item.ItemType == ItemType.Consumable) { return; } // 착용 요청이라면, 겹치는 부위 해제 if (equipPacket.Equipped) { Item unequipItem = null; if (item.ItemType == ItemType.Weapon) { unequipItem = Inven.Find(i => i.Equipped && i.ItemType == ItemType.Weapon); } else if (item.ItemType == ItemType.Armor) { ArmorType armorType = ((Armor)item).ArmorType; unequipItem = Inven.Find(i => i.Equipped && i.ItemType == ItemType.Armor && ((Armor)i).ArmorType == armorType); } if (unequipItem != null) { // 메모리 선적용 unequipItem.Equipped = false; // DB Noti DbTransaction.EquipItemNoti(this, unequipItem); // 클라이언트 Noti S_EquipItem equipOkItem = new S_EquipItem(); equipOkItem.ItemDbId = unequipItem.ItemDbId; equipOkItem.Equipped = unequipItem.Equipped; Session.Send(equipOkItem); } } { // 메모리 선적용 item.Equipped = equipPacket.Equipped; // DB Noti DbTransaction.EquipItemNoti(this, item); // 클라이언트 Noti S_EquipItem equipOkItem = new S_EquipItem(); equipOkItem.ItemDbId = equipPacket.ItemDbId; equipOkItem.Equipped = equipPacket.Equipped; Session.Send(equipOkItem); } RefreshAdditionalStat(); }
public void HandleEquipItem(C_EquipItem equipPacket) { // 아이템 있나 체크 Item item = this.Inven.Get(equipPacket.ItemDbId); if (item == null) { return; } if (item.ItemType == ItemType.Consumable) { return;//소모품은 장착아님 } // 장착 요청이면 겹치는 부위 해제 if (equipPacket.Equipped) { Item unequipItem = null; // 무기는 하나만 if (item.ItemType == ItemType.Weapon) { unequipItem = this.Inven.Find( i => i.Equipped && i.ItemType == ItemType.Weapon); } // 방어구는 비교 else if (item.ItemType == ItemType.Armor) { ArmorType armorType = ((Armor)item).ArmorType; unequipItem = this.Inven.Find( i => i.Equipped && i.ItemType == ItemType.Armor && ((Armor)i).ArmorType == armorType); } // 겹치는 아이템 벗기 if (unequipItem != null) { // 메모리 선적용 unequipItem.Equipped = false; // DB에 Noti DbTransaction.EquipItemNoti(this, unequipItem); // 클라에 통보 S_EquipItem equipOkItem = new S_EquipItem(); equipOkItem.ItemDbId = unequipItem.ItemDbId; equipOkItem.Equipped = unequipItem.Equipped; this.Session.Send(equipOkItem); } } // 요청사항 적용 { // 메모리 선적용 item.Equipped = equipPacket.Equipped; // DB에 Noti DbTransaction.EquipItemNoti(this, item); // 클라에 통보 S_EquipItem equipOkItem = new S_EquipItem(); equipOkItem.ItemDbId = equipPacket.ItemDbId; equipOkItem.Equipped = equipPacket.Equipped; this.Session.Send(equipOkItem); } RefreshAdditionalStat(); }