public bool removeTurret(TurretDescription turret)
 {
     for (int i = 0; i < turretSlots.Length; i++)
     {
         if (turretSlots[i].CargoItem == turret)
         {
             turretSlots[i].CargoItem = null;
             return(true);
         }
     }
     return(false);
 }
Esempio n. 2
0
 public void unequipTurret(TurretDescription turret, int slotId)
 {
     if (!cargo.isFull() && arsenalPanel.removeTurret(turret))
     {
         turret.unequipTurret(this, slotId);
         cargo.addItem(turret);
     }
     else
     {
         arsenalPanel.addTurret(turret);
     }
 }
 //Add turret to a slot of the arsenal panel, return the id of the slot or -1 if arsenalPanel is full
 public int addTurret(TurretDescription turret)
 {
     for (int i = 0; i < turretSlots.Length; i++)
     {
         if (turretSlots[i].CargoItem == null) //if slot is free
         {
             turretSlots[i].CargoItem = turret;
             return(i);
         }
     }
     Debug.Log("Arsenal full");
     return(-1);
 }
Esempio n. 4
0
 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);
         }
     }
 }
Esempio n. 5
0
    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;*/
        }
    }