bool IsRectangle(int slotIndex) { Transform slot = slots[slotIndex]; if (InventorySystem.reference.IsSlotEmpty(slot)) { return(false); } InventoryItemObject item = InventorySystem.reference.GetItemObjectInSlot(slot); if (item.info.name != itemForSignName) { return(false); } if (item.IsBroken()) { return(false); } int itemRowIndex = slotIndex % sizeX; int cycleIterations = sizeX - 1 - itemRowIndex; for (int signHeight = 1; signHeight <= cycleIterations; signHeight++) { // rectangle sign check if (slotIndex + sizeX * signHeight + signHeight >= slots.Count) { continue; } if (InventorySystem.reference.IsSlotEmpty(slots[slotIndex + signHeight]) || InventorySystem.reference.IsSlotEmpty(slots[slotIndex + sizeX * signHeight]) || InventorySystem.reference.IsSlotEmpty(slots[slotIndex + sizeX * signHeight + signHeight])) { continue; } if ((slotIndex) / sizeX != (slotIndex + signHeight) / sizeX) { continue; } if (InventorySystem.reference.GetItemObjectInSlot(slots[slotIndex + signHeight]).info.name == itemForSignName && InventorySystem.reference.GetItemObjectInSlot(slots[slotIndex + sizeX * signHeight]).info.name == itemForSignName && InventorySystem.reference.GetItemObjectInSlot(slots[slotIndex + sizeX * signHeight + signHeight]).info.name == itemForSignName) { if (InventorySystem.reference.GetItemObjectInSlot(slots[slotIndex + signHeight]).IsBroken() || InventorySystem.reference.GetItemObjectInSlot(slots[slotIndex + sizeX * signHeight]).IsBroken() || InventorySystem.reference.GetItemObjectInSlot(slots[slotIndex + sizeX * signHeight + signHeight]).IsBroken()) { continue; } else { return(true); //Debug.Log ("has rectangle"); } } } return(false); }
/*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); } }