void Start()
    {
        Storage_Manager storageManager = GameObject.Find("Storage_Manager").GetComponent <Storage_Manager>();

        textToDisplayLostItems.text += "\n";

        foreach (Lost_Item lostItem in items)
        {
            Item_And_Quantity stored = storageManager.GetStoredItemAndQuantity(lostItem.itemToLose);
            Item_And_Quantity toLose = new Item_And_Quantity(stored.item, 0);
            int randomAmount         = Random.Range(lostItem.minimumLost, lostItem.maximumLost);

            if (stored.quantity > randomAmount)
            {
                toLose.quantity = ( uint )randomAmount;
                storageManager.SubtractQuantity(toLose);
            }
            else if (stored.quantity == 0)
            {
            }
            else
            {
                // lose all
                storageManager.SubtractQuantity(stored);
            }

            textToDisplayLostItems.text += toLose.item.name + " x" + toLose.quantity.ToString() + '\n';
        }
    }
 public void AddQuantity(Item_And_Quantity item)
 {
     foreach (Item_And_Quantity storedItem in storedItems)
     {
         if (storedItem.item.name == item.item.name)
         {
             storedItem.quantity += item.quantity;
             return;
         }
     }
 }
 public void AddItems(Item item, uint quantity)
 {
     for (int i = 0; i < storedItems.Count; ++i)
     {
         if (storedItems[i].item == item)
         {
             Item_And_Quantity stored = storedItems[i];
             stored.quantity += quantity;
             storedItems[i]   = stored;
             break;
         }
     }
 }
Example #4
0
    void OnClickCraft()
    {
        Item_And_Quantity craftedItem = new Item_And_Quantity(selectedItemToCraft, 1);

        storageManager.AddQuantity(craftedItem);

        foreach (Item_And_Quantity requiredItem in selectedItemToCraft.requiredMaterialsToCraft.requiredItems)
        {
            storageManager.SubtractQuantity(requiredItem);
        }

        RepopulateItems();
        OnClickCraftableItem(selectedItemToCraft);
    }
    public void SubtractQuantity(Item_And_Quantity item)
    {
        foreach (Item_And_Quantity storedItem in storedItems)
        {
            if (storedItem.item.name == item.item.name)
            {
                if (storedItem.quantity < item.quantity)
                {
                    throw new System.Exception("Tried to subtract more quantity than available");
                }

                storedItem.quantity -= item.quantity;
                return;
            }
        }
    }
Example #6
0
    void OnClickCraftableItem(Item craftableItem)
    {
        selectedItemToCraft = craftableItem;

        foreach (GameObject craftItemScreen in requiredCraftItemsScreens)
        {
            GameObject.Destroy(craftItemScreen);
        }
        requiredCraftItemsScreens.Clear();

        craftDialog.SetActive(true);

        bool canCraft = true;

        foreach (Item_And_Quantity requiredItem in selectedItemToCraft.requiredMaterialsToCraft.requiredItems)
        {
            Item_And_Quantity storedRequiredItem = storageManager.GetStoredItemAndQuantity(requiredItem);

            GameObject newCraftItemScreen = GameObject.Instantiate(itemTemplate);
            newCraftItemScreen.transform.SetParent(craftMaterialRequirementsParent, false);
            requiredCraftItemsScreens.Add(newCraftItemScreen);

            Screen_Item_Manager newCraftItemManager = newCraftItemScreen.GetComponent <Screen_Item_Manager>();
            newCraftItemManager.nameText.text     = requiredItem.item.name;
            newCraftItemManager.quantityText.text = storedRequiredItem.quantity + "/" + requiredItem.quantity.ToString();
            newCraftItemManager.image.sprite      = requiredItem.item.storageSprite;

            if (storedRequiredItem.quantity >= requiredItem.quantity)
            {
                newCraftItemManager.quantityText.color = Color.green;
            }
            else
            {
                newCraftItemManager.quantityText.color = Color.red;
                canCraft = false;
            }
        }

        if (canCraft)
        {
            craftButton.interactable = true;
        }
        else
        {
            craftButton.interactable = false;
        }
    }
    public ScavengeResult Scavenge()
    {
        ScavengeResult result = new ScavengeResult(this);

        foreach (var item in scavengableItems)
        {
            int random = Random.Range((int)item.minimumScavengable, (int)item.maximumScavengable + 1);
            if (random > 0)
            {
                StorageManager storageManager = GameObject.Find("StorageManager").GetComponent <StorageManager>();
                storageManager.AddItems(item.scavengableItem, (uint)random);

                Item_And_Quantity scavenged = new Item_And_Quantity(item.scavengableItem, (uint)random);
                result.scavengedItems.Add(scavenged);
            }
        }

        return(result);
    }
    public Item DropRandomItem()
    {
        List <int> storedItemsThatHaveQuantity = new List <int>();

        for (int i = 0; i < storedItems.Count; ++i)
        {
            if (storedItems[i].quantity > 0)
            {
                storedItemsThatHaveQuantity.Add(i);
            }
        }

        int random = Random.Range(0, storedItemsThatHaveQuantity.Count);

        Item_And_Quantity storedItem = storedItems[random];

        storedItem.quantity -= 1;
        storedItems[random]  = storedItem;
        return(storedItem.item);
    }
Example #9
0
    public List <Item_And_Quantity> Scavenge()
    {
        List <Item_And_Quantity> scavengedItems = new List <Item_And_Quantity>();

        foreach (Scavengable_Item item in scavengableItems)
        {
            int highest = 0;

            for (int attempt = 0; attempt < item.attempts; ++attempt)
            {
                int randomAmount = Random.Range(item.minimumScavengable, item.maximumScavengable);

                if (randomAmount > highest)
                {
                    highest = randomAmount;
                }
            }

            Item_And_Quantity scavengedItem = new Item_And_Quantity(item.scavengableItem, (uint)highest);
            scavengedItems.Add(scavengedItem);
        }

        return(scavengedItems);
    }
 public Item_And_Quantity GetStoredItemAndQuantity(Item_And_Quantity item)
 {
     return(GetStoredItemAndQuantity(item.item));
 }
 public Equipped_Weapon(Item_And_Quantity inItemAndQuantity)
 {
     itemAndQuantity = inItemAndQuantity;
     equipped        = 0;
 }
    void RefreshScreen()
    {
        // Clear screens
        foreach (GameObject itemScreen in itemScreens)
        {
            GameObject.Destroy(itemScreen);
        }
        itemScreens.Clear();

        foreach (GameObject perkScreen in perkScreens)
        {
            GameObject.Destroy(perkScreen);
        }
        perkScreens.Clear();

        // Level
        int homeLevel = homeManager.CurrentLevel();

        if (homeManager.HasUpgradeAvailable())
        {
            homeLevelText.text = "HOME UPGRADE " + (homeLevel + 1).ToString();

            canUpgrade = true;

            storedItems            = new List <Item_And_Quantity>();
            itemsRequiredToUpgrade = homeManager.GetRequiredItemsToUpgrade();
            foreach (Item_And_Quantity requiredItemAndQuantity in itemsRequiredToUpgrade)
            {
                // Get stored item
                Item_And_Quantity storedItem = storageManager.GetStoredItemAndQuantity(requiredItemAndQuantity);
                storedItems.Add(storedItem);

                // Add item to GUI
                GameObject newItemScreen = GameObject.Instantiate(itemTemplate);
                newItemScreen.transform.SetParent(itemPanelParent, false);
                itemScreens.Add(newItemScreen);

                Screen_Item_Manager itemScreen = newItemScreen.GetComponent <Screen_Item_Manager>();
                itemScreen.nameText.text     = requiredItemAndQuantity.item.name;
                itemScreen.quantityText.text = storedItem.quantity.ToString() + " / " + requiredItemAndQuantity.quantity.ToString();
                itemScreen.image.sprite      = requiredItemAndQuantity.item.storageSprite;

                // Determine if can upgrade
                if (storedItem.quantity < requiredItemAndQuantity.quantity)
                {
                    canUpgrade = false;
                    itemScreen.quantityText.color = Color.red;
                }
                else
                {
                    itemScreen.quantityText.color = Color.green;
                }
            }

            // Add perks
            List <string> perks = homeManager.GetPerksOfUpgrade();

            foreach (string perk in perks)
            {
                GameObject newPerkScreen = GameObject.Instantiate(perkTemplate, perkPanelParent, false);
                perkScreens.Add(newPerkScreen);

                Screen_Perk_Manager perkScreenManager = newPerkScreen.GetComponent <Screen_Perk_Manager>();
                perkScreenManager.perkText.text = perk;
            }
        }
        else
        {
            homeLevelText.text = "MAX HOME LEVEL REACHED";
            canUpgrade         = false;
            upgradeButton.gameObject.SetActive(false);
        }

        if (canUpgrade)
        {
            upgradeButton.interactable = true;
        }
        else
        {
            upgradeButton.interactable = false;
        }
    }