public void equipTurretToArsenal(TurretDescription turret) { if (cargo.removeItem(turret)) { int turretSlotId = arsenalPanel.addTurret(turret); if (turretSlotId != -1) { turret.equipTurret(this, turretSlotId); turret.slotName = SlotName.Arsenal; } else { cargo.addItem(turret); } } }
private void drop(CargoItemSlot dropCargoItemSlot) { if (draggedSlot != null) { TurretDescription dragItem = draggedSlot.CargoItem as TurretDescription; //item dragged by the player TurretDescription dropItem = dropCargoItemSlot.CargoItem as TurretDescription; //item present or not in the cargoItemSlot int slotIdDraggedItem = -1; //We want to know the slotId of the dragged item, and if its a cargo or an arsenal slot if (dragItem.slotName == SlotName.Arsenal) //Turret Slot { //Get slotId of the turret to unequip from arsenal slotIdDraggedItem = dragItem.arsenalId; } else if (dragItem.slotName == SlotName.Cargo) //Cargo Slot { //Get slotId of the turret to unequip from cargo slotIdDraggedItem = dragItem.cargoId; } //Debug.Log(slotIdDraggedItem); //Case 1 : drop item in empty arsenal slot (OK) if (dropCargoItemSlot is TurretSlot && dragItem != null && dropItem == null) { if (dragItem is TurretDescription) //if dragged is a turret { if ((draggedSlot as TurretSlot) != null) //if dragged item come from arsenal (OK) { //Switch turrets dragItem.unequipTurret(this, draggedSlot.slotId); dragItem.equipTurret(this, dropCargoItemSlot.slotId); //equip dragTurret in arsenal slot //Switch hidders (draggedSlot as TurretSlot).hidderEmpty.SetActive(true); (dropCargoItemSlot as TurretSlot).hidderEmpty.SetActive(false); //Switch visual dropCargoItemSlot.CargoItem = draggedSlot.CargoItem; draggedSlot.CargoItem = null; //Update id (dropCargoItemSlot as TurretSlot).cargoId = (draggedSlot as TurretSlot).cargoId; (draggedSlot as TurretSlot).cargoId = -1; //Update price (dropCargoItemSlot as TurretSlot).updateUpgradePrice(dragItem.actualUpgradePriceScraps, dragItem.actualUpgradePriceEnergyCore); (draggedSlot as TurretSlot).updateUpgradePrice(dropItem.actualUpgradePriceScraps, dropItem.actualUpgradePriceEnergyCore); } else //if dragged item come from cargo { dragItem.equipTurret(this, dropCargoItemSlot.slotId); //Switch hidders (dropCargoItemSlot as TurretSlot).hidderEmpty.SetActive(false); draggedSlot.isUsed = true; draggedSlot.manageHidders(); //Switch visual dropCargoItemSlot.CargoItem = draggedSlot.CargoItem; //Update id (dropCargoItemSlot as TurretSlot).cargoId = draggedSlot.slotId; //Update price (dropCargoItemSlot as TurretSlot).updateUpgradePrice(dragItem.actualUpgradePriceScraps, dragItem.actualUpgradePriceEnergyCore); } } } //Case 2 : drop item in occupied arsenal slot (OK) if (dropCargoItemSlot is TurretSlot && dragItem != null && dropItem != null && draggedSlot != dropCargoItemSlot) { if (dragItem is TurretDescription) //if dragged is a turret { if ((draggedSlot as TurretSlot) != null) //if dragged item come from arsenal (OK) { dragItem.unequipTurret(this, draggedSlot.slotId); dropItem.unequipTurret(this, dropCargoItemSlot.slotId); dragItem.equipTurret(this, dropCargoItemSlot.slotId); dropItem.equipTurret(this, draggedSlot.slotId); //Switch items CargoItem draggedItem = draggedSlot.CargoItem; draggedSlot.CargoItem = dropCargoItemSlot.CargoItem; dropCargoItemSlot.CargoItem = draggedItem; //Update price (dropCargoItemSlot as TurretSlot).updateUpgradePrice(dragItem.actualUpgradePriceScraps, dragItem.actualUpgradePriceEnergyCore); (draggedSlot as TurretSlot).updateUpgradePrice(dropItem.actualUpgradePriceScraps, dropItem.actualUpgradePriceEnergyCore); } else if (!draggedSlot.isUsed) //if dragged item come from cargo and its not an already used turret (OK) { dropItem.unequipTurret(this, dropCargoItemSlot.slotId); //unequip turret in arsenal slot dragItem.equipTurret(this, dropCargoItemSlot.slotId); //equip dragTurret in arsenal slot //Send dropItem item back to its cargo slot cargo.itemSlots[(dropCargoItemSlot as TurretSlot).cargoId].isUsed = false; cargo.itemSlots[draggedSlot.slotId].isUsed = true; cargo.itemSlots[(dropCargoItemSlot as TurretSlot).cargoId].manageHidders(); cargo.itemSlots[draggedSlot.slotId].manageHidders(); //Change item in arsenal slot dropCargoItemSlot.CargoItem = draggedSlot.CargoItem; //Set slot id in arsenal slot according to the new turret (dropCargoItemSlot as TurretSlot).cargoId = draggedSlot.slotId; //Update price (dropCargoItemSlot as TurretSlot).updateUpgradePrice(dragItem.actualUpgradePriceScraps, dragItem.actualUpgradePriceEnergyCore); dropItem.cargoId = dropCargoItemSlot.slotId; } } } /*//Case 3 : drop item in empty cargo slot (OK) * if (!(dropCargoItemSlot is TurretSlot) && dragItem != null && dropItem == null) * { * Debug.Log("Case 3"); * if (dragItem is TurretDescritpion) //if dragged is a turret * { * if ((dragItem as TurretDescritpion).slotName == SlotName.Arsenal) //if dragged item come from arsenal (OK) * { * dragItem.unequipTurret(this, slotIdDraggedItem); * dragItem.cargoId = dropCargoItemSlot.slotId; ; * } * else if ((dragItem as TurretDescritpion).slotName == SlotName.Cargo) //if dragged item come from cargo (OK) * { * dragItem.cargoId = dropCargoItemSlot.slotId; * } * } * }*/ /*//Case 4 : drop item in occupied cargo slot (OK) * if (!(dropCargoItemSlot is TurretSlot) && dragItem != null && dropItem != null) * { * Debug.Log("Case 4"); * if (dragItem is TurretDescritpion) //if dragged is a turret * { * if ((dragItem as TurretDescritpion).slotName == SlotName.Arsenal) //if dragged item come from arsenal (OK) * { * dragItem.unequipTurret(this, slotIdDraggedItem); //unequip drag Turret from arsenal slot * dropItem.equipTurret(this, slotIdDraggedItem); //equip drop Turret from cargo in arsenal slot * * dragItem.cargoId = dropCargoItemSlot.slotId; * } * else if ((dragItem as TurretDescritpion).slotName == SlotName.Cargo) //if dragged item come from cargo (OK) * { * dragItem.cargoId = dropCargoItemSlot.slotId; * dropItem.cargoId = slotIdDraggedItem; * } * } * }*/ //Case 4 : drop item in occupied cargo slot (Ok) if (!(dropCargoItemSlot is TurretSlot) && dragItem != null && dropItem != null) { if (dragItem is TurretDescription && (draggedSlot as TurretSlot) != null) //if dragged is a turret { if ((draggedSlot as TurretSlot).cargoId == dropCargoItemSlot.slotId && dropCargoItemSlot.isUsed) //if cargo slot is the origin slot of the dragged item, then the turret become empty { dragItem.unequipTurret(this, draggedSlot.slotId); //unequip drag Turret from arsenal slot //Switch hidder cargo.itemSlots[(draggedSlot as TurretSlot).cargoId].isUsed = false; cargo.itemSlots[(draggedSlot as TurretSlot).cargoId].manageHidders(); (draggedSlot as TurretSlot).hidderEmpty.SetActive(true); //Set slot id in arsenal slot to empty (draggedSlot as TurretSlot).cargoId = -1; //Empty arsenal slot draggedSlot.CargoItem = null; //Update price (draggedSlot as TurretSlot).updateUpgradePrice(-1, -1); } else if (!dropCargoItemSlot.isUsed) { dragItem.unequipTurret(this, draggedSlot.slotId); //unequip drag Turret from arsenal slot dropItem.equipTurret(this, draggedSlot.slotId); //equip drop Turret from cargo in arsenal slot //Switch hidder cargo.itemSlots[(draggedSlot as TurretSlot).cargoId].isUsed = false; cargo.itemSlots[(draggedSlot as TurretSlot).cargoId].manageHidders(); dropCargoItemSlot.isUsed = true; dropCargoItemSlot.manageHidders(); //Change item in arsenal slot draggedSlot.CargoItem = dropCargoItemSlot.CargoItem; //Set slot id in arsenal slot according to the new turret (draggedSlot as TurretSlot).cargoId = dropCargoItemSlot.slotId; //Update price (draggedSlot as TurretSlot).updateUpgradePrice(dropItem.actualUpgradePriceScraps, dropItem.actualUpgradePriceEnergyCore); } dragItem.cargoId = dropCargoItemSlot.slotId; } } /* * if (dragItem is TurretDescritpion) * { * Debug.Log("DragItem"); * if (dragItem != null) dragItem.unequipTurret(this); * if (dropItem != null) dragItem.equipTurret(this, dropCargoItemSlot.slotId); * } * if (dropItem is TurretDescritpion) * { * Debug.Log("DropItem"); * if (dragItem != null) dragItem.equipTurret(this, dropCargoItemSlot.slotId); * if (dropItem != null) dragItem.unequipTurret(this); * }*/ //Reverse items positions /*CargoItem draggedItem = draggedSlot.CargoItem; * draggedSlot.CargoItem = dropCargoItemSlot.CargoItem; * dropCargoItemSlot.CargoItem = draggedItem;*/ } }