/*public void BreakWholeInventory(float value) * { * BreakWagon (0, value); * for(int wagonIndex = 0; wagonIndex < PlayerSaveData.reference.wagonData.Count; wagonIndex++) * { * BreakWagon (1 + wagonIndex, value); * } * }*/ IEnumerator UpdateItemsToBreak() { while (true) { while (itemsToBreak.Count != 1 + PlayerSaveData.reference.wagonData.Count) { if (itemsToBreak.Count < 1 + PlayerSaveData.reference.wagonData.Count) { itemsToBreak.Add(null); } else if (itemsToBreak.Count > 1 + PlayerSaveData.reference.wagonData.Count) { itemsToBreak.RemoveAt(itemsToBreak.Count - 1); } } //if (itemsToBreak [0] == null || itemsToBreak [0].IsBroken() || !itemsToBreak [0].IsEquipped()) { for (int itemIndex = PlayerSaveData.reference.trainData.equippedItems.Length - 1; itemIndex >= 0; itemIndex--) { InventoryItemObject equippedItem = PlayerSaveData.reference.trainData.equippedItems [itemIndex]; if (equippedItem != null && !equippedItem.IsBroken()) { itemsToBreak [0] = equippedItem; break; } } for (int wagonIndex = 0; wagonIndex < PlayerSaveData.reference.wagonData.Count; wagonIndex++) { if (itemsToBreak [wagonIndex + 1] == null || itemsToBreak [wagonIndex + 1].IsBroken() || !PlayerSaveData.reference.wagonData [wagonIndex].items.Contains(itemsToBreak [wagonIndex + 1])) { PlayerSaveData.WagonData wagonData = PlayerSaveData.reference.wagonData [wagonIndex]; if (wagonData.items.Count == 0) { continue; } int repairedItemsCount = 0; foreach (InventoryItemObject item in wagonData.items) { if (!item.IsBroken()) { repairedItemsCount += 1; } } if (repairedItemsCount == 0) { continue; } int itemIndex = Random.Range(0, repairedItemsCount); foreach (InventoryItemObject item in wagonData.items) { if (!item.IsBroken()) { if (itemIndex == 0) { itemsToBreak [wagonIndex + 1] = item; break; } itemIndex -= 1; } } } } yield return(null); } }
public void Place(Transform slot) { //Debug.Log ("place item function is on work"); // check that slot is correctly set up if (slot.GetComponent <UIDragDropContainer> () == null) { //Debug.Log ("slot is broken!"); return; } // check that potential slot is empty or is equipment slot if (GetLastSlot() != null) { if (!InventorySystem.reference.CanPutInSlot(slot, this)) { Place(GetLastSlot()); return; } } if (!PlayerSaveData.reference.trainData.conditions.CanManageInventory) { if (InventorySystem.reference.GetSlotInfo(GetLastSlot()) != null) { if (InventorySystem.reference.GetSlotInfo(GetLastSlot()).type != InventorySystem.reference.GetSlotInfo(slot).type) { Place(GetLastSlot()); return; } if (wagonIndex != InventorySystem.reference.GetSlotInfo(slot).wagonIndex) { Place(GetLastSlot()); return; } } } transform.parent = slot.GetComponent <UIDragDropContainer>().reparentTarget; transform.localPosition = new Vector3(0, 0, 0); GetComponent <UISprite>().spriteName = info.uiInfo.spriteName; GetComponent <UISprite> ().enabled = false; GetComponent <UISprite> ().enabled = true; // remove item from its slot... if (GetLastSlot() != null) { if (InventorySystem.reference.GetSlotInfo(GetLastSlot()).type == InventorySystem.SlotType.Wagon) { if (PlayerSaveData.reference.wagonData [wagonIndex].items.Contains(this)) { TakeFromWagon(wagonIndex); } } else if (InventorySystem.reference.GetSlotInfo(GetLastSlot()).type == InventorySystem.SlotType.Equipment) { Unequip(); } else if (InventorySystem.reference.GetSlotInfo(GetLastSlot()).type == InventorySystem.SlotType.Shop) { if (InventorySystem.reference.GetSlotInfo(slot).type != InventorySystem.SlotType.Shop) { Buy(); } } } wagonIndex = InventorySystem.reference.GetSlotInfo(slot).wagonIndex; slotIndex = InventorySystem.reference.GetSlotInfo(slot).slotIndex; // ...and place it in new slot if (InventorySystem.reference.GetSlotInfo(slot).type == InventorySystem.SlotType.Wagon) { PutInWagon(wagonIndex); } else if (InventorySystem.reference.GetSlotInfo(slot).type == InventorySystem.SlotType.Equipment) { Equip(); } else if (InventorySystem.reference.GetSlotInfo(slot).type == InventorySystem.SlotType.Shop) { if (GetLastSlot() != null && InventorySystem.reference.GetSlotInfo(GetLastSlot()).type != InventorySystem.SlotType.Shop) { Sell(); } } // after all changes with item info check wagons passenger count // if player moved item from its wagon, remove extra passengers from there if (GetLastSlot() != null) { if (InventorySystem.reference.GetSlotInfo(GetLastSlot()).type == InventorySystem.SlotType.Wagon) { if (InventorySystem.reference.GetSlotInfo(GetLastSlot()).type != InventorySystem.reference.GetSlotInfo(GetSlot()).type || InventorySystem.reference.GetSlotInfo(GetLastSlot()).wagonIndex != InventorySystem.reference.GetSlotInfo(GetSlot()).wagonIndex) { PlayerSaveData.WagonData wagonData = PlayerSaveData.reference.wagonData [InventorySystem.reference.GetSlotInfo(GetLastSlot()).wagonIndex]; int extraPassengersCount = wagonData.currentPassengersCount - wagonData.maxPassengersCount; Debug.Log("extra passengers count: " + extraPassengersCount); for (int passengerCounter = 0; passengerCounter < extraPassengersCount; passengerCounter++) { PlayerSaveData.reference.passengerData.RemovePassenger(InventorySystem.reference.GetSlotInfo(GetLastSlot()).wagonIndex); } } } } transform.SetSiblingIndex(0); slot.GetComponent <UIDragDropContainer> ().reparentTarget.GetComponent <UIGrid> ().Reposition(); lastSlot = slot; //Debug.Log ("place item function finished, new slot is " + slot); // after all changes with item info check its durability if (info.durabilityInfo.current > info.durabilityInfo.max) { info.durabilityInfo.current = info.durabilityInfo.max; } }