Пример #1
0
 public void EquipItem(Item_ item)
 {
     if (IsInInventory(item))   //Si el ítem ya está en alguna ranura del inventario
     {
         if (!IsEquipped(item)) //Si no está equipado
         {
             Slot_ oldSlot = item.occupyingSlot;
             oldSlot.RemoveItem(item);                                         //Quitarlo de la ranura en que se encuentra actualmente
             slots.Find(t => t.slotType == item.equippableSlot).AddItem(item); //Ponerlo en la ranura equipable
             item.graphics_.inGame_.animator.SetTrigger("isEquipped");         //Equipar visualmente el ítem en el personaje
         }
         else//Si ya está equipado
         {
             Debug.Log($"Item {item.name} is already in the equippable slot. It isn't necessary re-equip it.");
         }
     }
     else//Y si no está en el inventario
     {
         if (currentWeight + ((ItemStats_)item.mechanics_.stats_).weight > weightCapacity)
         {
             return;                                                       //No equiparlo porque el jugador no puede llevar tanto peso
         }
         slots.Find(t => t.slotType == item.equippableSlot).AddItem(item); //Simplemente equiparlo
         item.graphics_.inGame_.animator.SetTrigger("isEquipped");         //Equipar visualmente el ítem en el personaje
         SetWeightCapacity();
     }
 }
Пример #2
0
 public void StoreItem(Item_ item)
 {
     if (IsInInventory(item))                                            //Si el ítem ya está en alguna ranura del inventario
     {
         if (!IsStored(item))                                            //Si no está en la ranura genérica
         {
             if (IsEquipped(item))                                       //Si está equipado
             {
                 item.graphics_.inGame_.animator.SetTrigger("isStored"); //Dejar de mostrarlo
             }
             Slot_ oldSlot = item.occupyingSlot;
             oldSlot.RemoveItem(item);  //Quitarlo de la ranura en que se encuentra actualmente
             genericSlot.AddItem(item); //Ponerlo en la ranura genérica ("almacenarlo")
         }
         else//Y si ya está en la ranura genérica ("almacenado")
         {
             Debug.Log($"Item {item.name} is already in the generic slot. It isn't necessary re-store it.");
         }
     }
     else//Y si no está en el inventario
     {
         float itemWeight = ((ItemStats_)item.mechanics_.stats_).weight;
         if ((currentWeight + itemWeight) > weightCapacity)
         {
             return;                //No equiparlo porque el jugador no puede llevar tanto peso
         }
         genericSlot.AddItem(item); //Simplemente ponerlo en la ranura genérica ("almacenarlo")
         RefreshCurrentWeight();
         item.graphics_.inGame_.animator.SetTrigger("isStored");
     }
 }
Пример #3
0
 public override void Build(Owner_ owner)
 {
     base.Build(owner);
     CreateSlots();
     genericSlot = slots.Find(t => t.slotType == SlotType.Baggage);
     SetWeightCapacity();
     currentWeight = GetCurrentWeight();
 }
Пример #4
0
 public void DropItem(Item_ item)
 {
     if (IsInInventory(item))//Si el ítem está en alguna ranura del inventario
     {
         Slot_ oldSlot = item.occupyingSlot;
         oldSlot.RemoveItem(item);
         RefreshCurrentWeight();
         item.graphics_.inGame_.animator.SetTrigger("isDropped");
     }
 }
Пример #5
0
 public void DropItem(Item_ item)
 {
     if (inventory_.IsInInventory(item))//Si el ítem está en alguna ranura del inventario
     {
         Slot_ oldSlot = item.occupyingSlot;
         oldSlot.RemoveItem(item);                          //Quitarlo de la ranura en que se encuentra
         inventory_.RefreshCurrentWeight();                 //Rebajar el peso
         if (!item.graphics_.inGame_.gameObject.activeSelf) //Si la gráfica ingame no está activa
         {
             item.graphics_.inGame_.gameObject.SetActive(true);
         }
         item.graphics_.inGame_.animator.SetTrigger("isDropped");//Iniciar animación "isDropped" del ítem
     }
 }
Пример #6
0
 public void UnequipItem(Item_ item)
 {
     if (IsEquipped(item))//Si el ítem está equipado
     {
         Slot_ oldSlot = item.occupyingSlot;
         oldSlot.RemoveItem(item);                               //Quitarlo de la ranura equipable
         genericSlot.AddItem(item);                              //Ponerlo en la ranura genérica ("almacenarlo")
         item.graphics_.inGame_.animator.SetTrigger("isStored"); //Dejar de mostrarlo
     }
     else//Si el ítem no está equipado
     {
         Debug.Log($"Item {item.name} isn't equipped. It isn't necessary unequip it.");
     }
 }
Пример #7
0
 public void EquipItem(Item_ item)
 {
     if (inventory_.IsInInventory(item))   //Si el ítem ya está en alguna ranura del inventario
     {
         if (!inventory_.IsEquipped(item)) //Si el ítem no está equipado
         {
             Slot_ oldSlot = item.occupyingSlot;
             oldSlot.RemoveItem(item);                                                    //Quitarlo de la ranura en que se encontraba
             inventory_.slots.Find(t => t.slotType == item.equippableSlot).AddItem(item); //Ponerlo en la ranura capaz de equipar el ítem
             if (!item.graphics_.inGame_.gameObject.activeSelf)                           //Si la gráfica ingame no estaba activa
             {
                 item.graphics_.inGame_.gameObject.SetActive(true);                       //...activarla
             }
             item.graphics_.inGame_.animator.SetTrigger("isEquipped");                    //Equipar visualmente el ítem en el personaje (iniciar animación "isEquipped" del ítem)
             SyncAnimators();
         }
         else//Si ya está equipado
         {
             Debug.Log($"Item {item.name} is already in the equippable slot. It is not necessary re-equip it.");
         }
     }
     else//Y si no está en el inventario
     {
         if (Vector3.Distance(item.transform.position, owner.transform.position) <= 1)
         {
             float itemWeight = ((ItemStats_)item.mechanics_.stats_).weight;
             if (inventory_.currentWeight + itemWeight <= inventory_.weightCapacity)          //Si el jugador puede cargar con el peso adicional del ítem
             {
                 inventory_.slots.Find(t => t.slotType == item.equippableSlot).AddItem(item); //Simplemente equiparlo (ponerlo en la ranura del inventario capaz de equipar el ítem)
                 if (!item.graphics_.inGame_.gameObject.activeSelf)                           //Si la gráfica ingame no estaba activa
                 {
                     item.graphics_.inGame_.gameObject.SetActive(true);                       //...activarla
                 }
                 item.graphics_.inGame_.animator.SetTrigger("isEquipped");                    //Equipar visualmente el ítem en el personaje (iniciar animación "isEquipped" del ítem)
                 inventory_.RefreshCurrentWeight();                                           //Adicionar el peso del personaje al peso total llevado por el jugador
                 SyncAnimators();
             }
             else
             {
                 Debug.Log($"{owner.name} can't equip item {item.name}, because his weight capacity would be exceeded.");
             }
         }
         else
         {
             Debug.Log($"{owner.name} can't equip item {item.name}, because it is too far ({Vector3.Distance(item.transform.position, owner.transform.position)} m).");
         }
     }
 }
Пример #8
0
 public void StoreItem(Item_ item)
 {
     if (inventory_.IsInInventory(item))                             //Si el ítem ya está en alguna ranura del inventario
     {
         if (!inventory_.IsStored(item))                             //Si no está en la ranura genérica
         {
             if (inventory_.IsEquipped(item))                        //Si está equipado
             {
                 item.graphics_.inGame_.gameObject.SetActive(false); //No mostrarlo, ya que se "almacenará" o "guardará" (no debe quedar a la vista)
             }
             Slot_ oldSlot = item.occupyingSlot;
             oldSlot.RemoveItem(item);             //Quitarlo de la ranura en que se encontraba
             inventory_.genericSlot.AddItem(item); //Ponerlo en la ranura genérica ("almacenarlo")
         }
         else//Y si ya está en la ranura genérica ("almacenado")
         {
             Debug.Log($"Item {item.name} is already in the generic slot. It isn't necessary re-store it.");
         }
     }
     else//Y si no está en el inventario
     {
         if (Vector3.Distance(item.transform.position, owner.transform.position) <= 1)//Si el objeto esta a lo más a un metro ingame de distancia
         {
             float itemWeight = ((ItemStats_)item.mechanics_.stats_).weight;
             if ((inventory_.currentWeight + itemWeight) <= inventory_.weightCapacity) //Si el jugador es capaz de llevar el peso adicional del ítem
             {
                 inventory_.genericSlot.AddItem(item);                                 //Simplemente ponerlo en la ranura genérica ("almacenarlo")
                 inventory_.RefreshCurrentWeight();                                    //Adicionar el peso del ítem al peso total cargado por el jugador
                 item.graphics_.inGame_.gameObject.SetActive(false);                   //No mostrarlo, ya que se "almacenará" o "guardará" (no debe quedar a la vista)
             }
             else
             {
                 Debug.Log($"{owner.name} can't carry item {item.name}, because his weight capacity would be exceeded.");
             }
         }
         else
         {
             Debug.Log($"{owner.name} can't carry Item {item.name}, because it is too far ({Vector3.Distance(item.transform.position, owner.transform.position)} m).");
         }
     }
 }
Пример #9
0
 public void ChangeItemSlot(Item_ item, Slot_ newSlot)
 {
     RemoveItem(item);
     newSlot.AddItem(item);
 }
Пример #10
0
 public void DeleteSlot(Slot_ slot)
 {
     DestroyImmediate(slot.gameObject, true);
 }