Example #1
0
    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);
    }
Example #2
0
    /*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);
        }
    }