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(); } }
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"); } }
public override void Build(Owner_ owner) { base.Build(owner); CreateSlots(); genericSlot = slots.Find(t => t.slotType == SlotType.Baggage); SetWeightCapacity(); currentWeight = GetCurrentWeight(); }
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"); } }
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 } }
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."); } }
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)."); } } }
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)."); } } }
public void ChangeItemSlot(Item_ item, Slot_ newSlot) { RemoveItem(item); newSlot.AddItem(item); }
public void DeleteSlot(Slot_ slot) { DestroyImmediate(slot.gameObject, true); }