Example #1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        int i = 0;

        if (resourceInventory == null)
        {
            resourceInventory = FindObjectOfType <ResourceInventory>();
            Debug.LogWarning("RESOURCE INVENTORY NOT BEING ASSIGNED WHEN INTENDED, COULD CAUSE ERRORS...");
        }
        foreach (ProductionItem prodItem in productionItems)
        {
            if ((int)Time.time % prodItem.frequency == 0 && !hasProducedItem[i])
            {
                hasProducedItem[i] = true;
                if (!addItem(prodItem.resource.gameObject, prodItem.amountProduced))
                {
                    Debug.LogWarning("PLANET FULL, CANNOT PRODUCE RESOURCES!!");
                }
                else
                {
                    resourceInventory.addItem(prodItem.resource.GetComponent <rsrce>().nameOfResource, prodItem.amountProduced);
                }

                if (transform.parent.GetComponent <Home>().planetHUD.activeSelf)
                {
                    transform.parent.GetComponent <Home>().UpdatePlanetHud();
                }
            }
            else if ((int)Time.time % prodItem.frequency != 0)
            {
                hasProducedItem[i] = false;
            }
            i++;
        }
    }
Example #2
0
    public void updateResources(ResourceInventory changedResource)
    {
        // start slowing down after 3 minutes
        if (!nextUpdate.Expired() && Time.deltaTime > 180)
        {
            return;
        }
        nextUpdate.Start(0.25f);
        foreach (ResourceInventory resource in ResourceManager.Instance().resources.Values)
        {
            int intervalData = ResourceManager.Instance().GetIntervalDelta(resource.resourceEnum);

            if (resource.resourceEnum == Resource.People)
            {
                panels[resource].GetComponentInChildren <Text>().text = resource.count.ToString() + "/" + ResourceManager.Instance().GetTotalWorkers().ToString();
            }
            else
            {
                string intervalDataStr = string.Format(" ({0}{1})", (intervalData <= 0 ? "" : "+"), intervalData);
                panels[resource].GetComponentInChildren <Text>().text = resource.count.ToString() + intervalDataStr;
            }
            if (resource.count < 0 || intervalData < 0 || (resource.resourceEnum == Resource.People && ResourceManager.Instance().resources[Resource.Food].count <= 0))
            {
                panels[resource].GetComponentInChildren <Text>().color = Color.red;
            }
            else
            {
                panels[resource].GetComponentInChildren <Text>().color = Color.white;
            }
        }
    }
Example #3
0
    public void MoveInventory(ResourceInventory OldInv, ResourceInventory NewInv)
    {
        ResourceData_Internal ResourceData = Data[OldInv];

        RemoveInstance(OldInv);
        RegisterInstance_internal(OldInv, ResourceData);
    }
Example #4
0
    public void AddSubIngredients(Recipe recipe, ResourceInventory shipInv, InventoryController playerInv)
    {
        shipInventory   = shipInv;
        playerInventory = playerInv;

        requires.gameObject.SetActive(true);

        foreach (var resourceInp in recipe.ResourceInput)
        {
            var subIngred = Instantiate(subIngredientBox);
            subIngred.transform.SetParent(contentGroup.transform);

            subIngred.GetComponentInChildren <Image>().sprite = resourceInp.resource.resourceIcon;
            var text = subIngred.GetComponentsInChildren <TextMeshProUGUI>();
            text[0].SetText(resourceInp.resource.DisplayName);
            text[0].color = resourceInp.resource.ResourceColor;
            TextToResource.Add(text[1], resourceInp.resource);
            text[2].SetText($"/ {resourceInp.amount.ToString()}");
        }

        foreach (var ingredient in recipe.ItemInput)
        {
            var subIngred = Instantiate(subIngredientBox);
            subIngred.transform.SetParent(contentGroup.transform);

            subIngred.GetComponentInChildren <Image>().sprite = ingredient.item.Icon;
            var text = subIngred.GetComponentsInChildren <TextMeshProUGUI>();
            text[0].SetText(ingredient.item.Name);
            TextToItem.Add(text[1], ingredient.item);
            text[2].SetText($"/ {ingredient.amount.ToString()}");
        }
        UpdateOwnedAmounts();
    }
Example #5
0
    void Awake()
    {
        if (UIRoot.GetPlayer() != null)
        {
            playerInventory = UIRoot.GetPlayer().GetComponent <ResourceInventory>();

            AddNewText("Select resource from dropdown to add 50 of that resource");

            var resourceDropDown = Instantiate(DropDown);
            resourceDropDown.transform.SetParent(vLayoutGroup.transform);

            foreach (var resource in resourceList)
            {
                resourceNamesList.Add(resource.DisplayName);

                if (resource.DisplayName == "Thruster Fuel")
                {
                    fuel = resource;
                }
            }

            resourceDropDown.options.Clear();

            resourceDropDown.AddOptions(resourceNamesList);
            resourceDropDown.onValueChanged.AddListener(evt =>
            {
                playerInventory.TryAdd(resourceList[resourceDropDown.value], 50);
            });

            AddNewButton("Kill Octo", () => { playerInventory.SetResource(fuel, 0f); });

            fuelStat = AddNewText("Fuel Stat: " + playerInventory.GetResource(fuel));
        }
    }
Example #6
0
            public void TestFullInventory()
            {
                Container[] containers = new Container[]
                {
                    new TestContainer(null),
                    new TestContainer(new ResourceStack[] { new ResourceStack(new ResourceType("Ore", "Ice"), 40), new ResourceStack(new ResourceType("Ore", "Iron"), 77) }),
                    new TestContainer(new ResourceStack[] { new ResourceStack(new ResourceType("Ingot", "Iron"), 15), new ResourceStack(new ResourceType("Ingot", "Gold"), 25) }),
                    new TestContainer(
                        new ResourceStack[] {
                        new ResourceStack(new ResourceType("Ingot", "Iron"), 5),
                        new ResourceStack(new ResourceType("Ore", "Ice"), 8),
                        new ResourceStack(new ResourceType("Ingot", "Gold"), 2),
                        new ResourceStack(new ResourceType("Ore", "Silver"), 14)
                    }
                        )
                };
                ResourceInventory inventory = ResourceInventory.Stocktake(containers);

                Assert.AreEqual(
                    new ResourceInventory(new ResourceStack[] {
                    new ResourceStack(new ResourceType("Ore", "Ice"), 48),
                    new ResourceStack(new ResourceType("Ingot", "Iron"), 20),
                    new ResourceStack(new ResourceType("Ingot", "Gold"), 27),
                    new ResourceStack(new ResourceType("Ore", "Silver"), 14),
                    new ResourceStack(new ResourceType("Ore", "Iron"), 77)
                }),
                    inventory
                    );
            }
Example #7
0
 private void Start()
 {
     SetNeighbourTiles();
     tileController.Owner = FindObjectOfType <GameController>().CurrentPlayer;
     ownerResources       = tileController.Owner.resourceManager;
     SetSpawnPosTo(gameObject, transform.position + Vector3.up * 0.3f);
 }
Example #8
0
 public void MoveInventory(ResourceInventory OldInv, ResourceInventory NewInv)
 {
     for (int i = 0; i < OldInv.Resources.Count; i++)
     {
         OldInv.Resources[i].MoveInventory(OldInv, NewInv);
     }
 }
Example #9
0
    public bool CraftItem(ResourceInventory ResourceInv, InventoryController SourceInv, InventoryController TargetInv, Recipe CraftRecipe, bool ByPassCraftCheck = false)
    {
        if (!ByPassCraftCheck) //optimization to skip checking if we can craft this recipe
        {
            if (!CanCraft(ResourceInv, SourceInv, TargetInv, CraftRecipe))
            {
                return(false);
            }
        }
        foreach (var itemIn in CraftRecipe.ItemInput) //TODO Optimize data structure to allow use of a single foreach for inputs
        {
            SourceInv.RemoveFromItemBucket(itemIn.item, itemIn.amount);
        }
        foreach (var resourceIn in CraftRecipe.ResourceInput)
        {
            ResourceInv.RemoveResource(resourceIn.resource, resourceIn.amount);
        }

        TargetInv.AddToItemBucket(CraftRecipe.Output.item, CraftRecipe.Output.amount);

        if (!CraftRecipe.CreatesByProducts)
        {
            return(true);
        }

        foreach (var itemOut in CraftRecipe.ItemByProducts)//TODO Optimize data structure to allow use of a single foreach for outputs
        {
            TargetInv.AddToItemBucket(itemOut.item, itemOut.amount);
        }
        foreach (var resOut in CraftRecipe.ResourceByProducts)
        {
            ResourceInv.AddResource(resOut.resource, resOut.amount);
        }
        return(true);
    }
Example #10
0
            public void ShowSummary()
            {
                ResourceInventory inventory = ResourceInventory.Stocktake(_containers, Parsers.ParseTags(_tags), Parsers.ParseResourceFilter(_allow));

                _ctx.MaxAmount = (MyFixedPoint)inventory.GetMaximum();
                _panel.WriteText(_renderer.Render(inventory.GetResources().Select(resource => new ResourceItemRenderer(resource))));
            }
Example #11
0
 //Subtract {valueToSub} amount of a resource to an inventory (Wrapper for add)
 public void SubInstanceValue(ResourceInventory owner, float valueToSub)
 {
     AddInstanceValue(false, owner, -valueToSub);
     if (Data[owner].OnRemoveResource != null)
     {
         Data[owner].OnRemoveResource(this, valueToSub);
     }
 }
Example #12
0
 private void Start()
 {
     if (warningType == "GasCloud")
     {
         alert = UIModule.UIRoot.GetScreen <GameHUD>().GasCloudAlertPrefab.GetComponent <ActivateWarning>();
     }
     player          = UIModule.UIRoot.player;
     playerInventory = UIModule.UIRoot.player.GetComponent <ResourceInventory>();
 }
Example #13
0
 void Start()
 {
     playerInventory = UIRoot.GetPlayer().GetComponent <ResourceInventory>();
     startFuel       = fuelFillBar.startAmount;
     if (fuel.GetInstanceValue(playerInventory) > startFuel)
     {
         tutorialController.NextPrompt(3f);
     }
 }
Example #14
0
            public void TestCompareContainerResources()
            {
                ResourceInventory inventory = new ResourceInventory(new TestContainer(new ResourceStack[] { new ResourceStack(new ResourceType("", "Ice")) }).GetResources());

                Assert.IsTrue(Enumerable.SequenceEqual(new List <ResourceStack>()
                {
                    new ResourceStack(new ResourceType("", "Ice"))
                }, inventory.GetResources()));
            }
 /// <summary>
 /// Used to set up merchants
 /// </summary>
 /// <param name="myHarbor"></param>
 public void Setup(Harbor myHarbor)
 {
     this.activeShipInventory = HexGridController.player.PlayerData.Resources;
     this.myHarbor            = myHarbor;
     foreach (InteractableResourceView viewer in resourceViewers)
     {
         UpdateUI(viewer.ResourceType, true);
     }
     SetTexts();
 }
Example #16
0
    void Awake()
    {
        resourceInventory = GameObject.Find("GUI Canvas").GetComponent <ResourceInventory>();

        this.canvas = this.gameObject.transform.Find("Furnace Canvas").gameObject;

        this.outputAmount  = this.canvas.transform.Find("OutputAmount").GetComponent <Text>();
        this.itemDropdown  = this.canvas.transform.Find("ItemDropdown").GetComponent <Dropdown>();
        this.amountSlider  = this.canvas.transform.Find("ItemSlider").GetComponent <Slider>();
        this.collectButton = this.canvas.transform.Find("CollectButton").GetComponent <Button>();
    }
Example #17
0
            public void TestConsolidateInventory()
            {
                ResourceInventory inventory = new ResourceInventory(new List <ResourceStack>()
                {
                    new ResourceStack(new ResourceType("", "Ice"), 22), new ResourceStack(new ResourceType("", "Ice"), 14)
                });

                Assert.IsTrue(Enumerable.SequenceEqual(new List <ResourceStack>()
                {
                    new ResourceStack(new ResourceType("", "Ice"), 14 + 22)
                }, inventory.GetResources()));
            }
Example #18
0
            public void TestInventoryMaximum()
            {
                ResourceInventory inventory = new ResourceInventory(new ResourceStack[] {
                    new ResourceStack(new ResourceType("Ore", "Ice"), 48),
                    new ResourceStack(new ResourceType("Ingot", "Iron"), 20),
                    new ResourceStack(new ResourceType("Ingot", "Gold"), 27),
                    new ResourceStack(new ResourceType("Ore", "Silver"), 14),
                    new ResourceStack(new ResourceType("Ingot", "Iron"), 66),
                    new ResourceStack(new ResourceType("Ore", "Iron"), 12)
                });

                Assert.AreEqual(86, inventory.GetMaximum());
            }
Example #19
0
    public void CreateResourceInstance(Resource resource, ResourceInventory owner)
    {
        foreach (var EnabledResource in ActiveResources)
        {
            if (EnabledResource == resource)
            {
                resource.RegisterInstance(owner);
                return;
            }
        }

        Debug.LogError($"{owner}'s {resource.name} not in active list");
    }
Example #20
0
    public override bool Condition(GameObject target)
    {
        if (isInitialized == true)
        {
            //Debug.Log("EVENT" + this.name);
            //playerinventory
            playerInventory = UIRootModule.UIRoot.player.GetComponent <ResourceInventory>();

            previousAmount = CollectResource.GetInstanceValue(playerInventory);

            //objective text
            UIRootModule.UIRoot.GetScreen <GameHUD>().objectivePanel.ClearObjectives();
            //var shortenCurrentAmount = (float)Math.Floor(CollectResource.GetInstanceValue(playerInventory));
            //string objectiveUpdate = $"{shortenCurrentAmount}/{CollectResource.GetMaximum()} - {actionVerb} {CollectResource.DisplayName}";
            string objectiveUpdate = $"{actionVerb} at the <color=#FFC63B>Station</color>";
            UIRootModule.UIRoot.GetScreen <GameHUD>().objectivePanel.AddObjective(objectiveUpdate);

            //state of event
            isUpdating    = true;
            isInitialized = false;
        }
        if (isUpdating == true)
        {
            var currentAmount = CollectResource.GetInstanceValue(playerInventory);

            //if (UIRootModule.UIRoot != null)
            //{
            //    var shortenCurrentAmount = (float)Math.Floor(currentAmount);
            //    string objectiveUpdate = $"{shortenCurrentAmount}/{CollectResource.GetMaximum()} - {actionVerb} {CollectResource.DisplayName}";
            //    UIRootModule.UIRoot.GetScreen<GameHUD>().objectivePanel.UpdateObjective(0, objectiveUpdate);
            //}

            //quest complete?
            if (currentAmount > previousAmount)
            {
                ObjectivePopup(isFirstEvent);
                //Debug.Log("EVENT CONDITION MET");
                EventTrigger = true;
                CodexProgression();
                UIRootModule.UIRoot.GetScreen <GameHUD>().objectivePanel.ClearObjectives();
                //reset the scriptableobject values
                playerInventory = null;
                previousAmount  = 9999;
                isInitialized   = false;
                isUpdating      = false;
            }
            previousAmount = currentAmount;
        }

        return(EventTrigger);
    }
    /// <summary>
    /// Used to setup for boarding or inspecting other ships
    /// </summary>
    /// <param name="inspectedShipInventory"></param>
    /// <param name="boarding"></param>
    public void Setup(ResourceInventory inspectedShipInventory, bool buttons, bool sliders)
    {
        foreach (var button in interactButtonObjects)
        {
            button.SetActive(buttons);
        }

        this.activeShipInventory = inspectedShipInventory;
        foreach (var item in resourceViewers)
        {
            UpdateUI(item.ResourceType, !buttons && !sliders);
        }
        SetTexts();
    }
    void Start()
    {
        playerInventory         = UIRoot.GetPlayer().GetComponent <InventoryController>();
        playerResourceInventory = UIRoot.GetPlayer().GetComponent <ResourceInventory>();

        //save craft text and set up craft button as uninteractable
        craftButtonText = CraftButton.GetComponentInChildren <TextMeshProUGUI>();

        //set up text colours
        interactableTextCol   = craftButtonText.color;
        uninteractableTextCol = new Color(interactableTextCol.r, interactableTextCol.g, interactableTextCol.b, 0.3f);

        //fill in each of the panels
        PopulateRecipePanel(Consumables, 0);
    }
Example #23
0
 public bool Equals(ResourceInventory that)
 {
     if (Object.ReferenceEquals(that, null))
     {
         return(false);
     }
     if (Object.ReferenceEquals(this, that))
     {
         return(true);
     }
     if (this.GetType() != that.GetType())
     {
         return(false);
     }
     return(Enumerable.SequenceEqual(this.GetResources().OrderBy(kvp => kvp.Type), that.GetResources().OrderBy(kvp => kvp.Type)));
 }
Example #24
0
            public void TestInventoryAddition()
            {
                ResourceInventory inventoryA = new ResourceInventory(new List <ResourceStack>()
                {
                    new ResourceStack(new ResourceType("Ore", "Ice"), 20)
                });
                ResourceInventory inventoryB = new ResourceInventory(new List <ResourceStack>()
                {
                    new ResourceStack(new ResourceType("Ore", "Ice"), 50)
                });
                ResourceInventory inventoryC = inventoryA + inventoryB;

                Assert.IsTrue(Enumerable.SequenceEqual(new List <ResourceStack>()
                {
                    new ResourceStack(new ResourceType("Ore", "Ice"), 70)
                }, inventoryC.GetResources()));
            }
Example #25
0
    /* public void TryOffload(ResourceInventory Target)
     * {
     *   string temp;
     *   TryOffload(Target,out temp);
     * }*/


    public void TryOffload(ResourceInventory Target)
    {
        if (Target.CanAdd(NaniteResource, NaniteOffloadAmount))
        {
            if (LinkedInventory.GetResource(NaniteResource) >= NaniteOffloadAmount)
            {
                //player-facing poptext
                if (AntiSpamTimer <= Time.time)
                {
                    var poptext = Instantiate(popText); //No this doesn't cause memleaks, I know it looks bad but it doesn't
                    poptext.popText.SetText($"{NaniteResource.DisplayName} added");
                    AntiSpamTimer = Time.time + AntiSpam;
                }


                Target.AddResource(NaniteResource, NaniteOffloadAmount);
                LinkedInventory.RemoveResource(NaniteResource, NaniteOffloadAmount);
                Debug.Log(Target.GetResource(NaniteResource));
            }
            else
            {
                //player-facing poptext
                if (AntiSpamTimer <= Time.time)
                {
                    var poptext = Instantiate(popText);
                    poptext.popText.SetText($"No {NaniteResource.DisplayName} available");
                    AntiSpamTimer = Time.time + AntiSpam;
                }

                //error = OffloadEmptyMsg;
                return;
            }
        }
        else
        {
            //player-facing poptext
            var poptext = Instantiate(popText);
            poptext.popText.SetText($"{NaniteResource.DisplayName} full");

            //error = OffloadFullMsg;
            Debug.Log("Player Inv Full");
            return;
        }
        //error = null;
    }
Example #26
0
            public void TestInventoryFilteringByTags()
            {
                Container[] containers = new Container[]
                {
                    new TestContainer(new ResourceStack[] { new ResourceStack(new ResourceType("Ore", "Ice"), 40), new ResourceStack(new ResourceType("Ore", "Iron"), 77) }, "tag2,tag3"),
                    new TestContainer(new ResourceStack[] { new ResourceStack(new ResourceType("Ingot", "Iron"), 15), new ResourceStack(new ResourceType("Ore", "Iron"), 25) }, "tag1, tag2,tag3"),
                    new TestContainer(new ResourceStack[] { new ResourceStack(new ResourceType("Ore", "Gold"), 35) }, "tag2, tag4")
                };
                ResourceInventory inventory = ResourceInventory.Stocktake(containers, Parsers.ParseTags("tag1, tag3"));

                Assert.AreEqual(new ResourceInventory(new ResourceStack[]
                {
                    new ResourceStack(new ResourceType("Ore", "Ice"), 40),
                    new ResourceStack(new ResourceType("Ore", "Iron"), 77 + 25),
                    new ResourceStack(new ResourceType("Ingot", "Iron"), 15)
                }
                                                      ), inventory);
            }
Example #27
0
            public void TestInventoryFilteringByResourceType()
            {
                Container[] containers = new Container[]
                {
                    new TestContainer(new ResourceStack[] { new ResourceStack(new ResourceType("MyObjectBuilder_Ore", "Ice"), 40),
                                                            new ResourceStack(new ResourceType("MyObjectBuilder_Ore", "Iron"), 77), new ResourceStack(new ResourceType("MyObjectBuilder_Ingot", "Gold"), 5) }),
                    new TestContainer(new ResourceStack[] { new ResourceStack(new ResourceType("MyObjectBuilder_Ingot", "Iron"), 15), new ResourceStack(new ResourceType("MyObjectBuilder_Ore", "Iron"), 25) }),
                    new TestContainer(new ResourceStack[] { new ResourceStack(new ResourceType("MyObjectBuilder_Ingot", "Gold"), 35) })
                };
                ResourceInventory inventory = ResourceInventory.Stocktake(containers, null, Parsers.ParseResourceFilter("ingot"));

                Assert.AreEqual(new ResourceInventory(new ResourceStack[]
                {
                    new ResourceStack(new ResourceType("MyObjectBuilder_Ingot", "Iron"), 15),
                    new ResourceStack(new ResourceType("MyObjectBuilder_Ingot", "Gold"), 40)
                }
                                                      ), inventory);
            }
        public ActionResult Index(ResourceCheckList model)
        {
            foreach (var resource in model.ResourceList)
            {
                ResourceInventory record = new ResourceInventory
                {
                    ResourceId       = resource.ResourceId,
                    CurrentQuantity  = resource.CurrentQuantity,
                    Comment          = resource.Comment,
                    UpdatedOn        = DateTime.Now,
                    OriginalQuantity = resource.OriginalQuantity,
                    FacilityId       = resource.FacilityId
                };
                db.ResourceInventories.Add(record);
                db.SaveChanges();
            }

            return(RedirectToAction("Index", "Facilities", null));
        }
Example #29
0
    // Start is called before the first frame update
    void Start()
    {
        if (productionItems == null) // mostly true. Just here for possible timing issues on load
        {
            productionItems = new List <ProductionItem>();
        }
        resourceInventory = FindObjectOfType <ResourceInventory>();
        hasProducedItem   = new bool[5];
        planetHUD         = transform.parent.GetComponent <Home>().planetHUD;

        if (!GameManager.loadingFromSave)
        {
            items = new List <PlanetResource>();
            for (int item = 0; item < numberOfItemSlots; item++)
            {
                items.Add(new PlanetResource());
            }
        }
    }
Example #30
0
    public bool CanCraftSatellite(ResourceInventory ResourceInv, InventoryController SourceInv, SatelliteInventory TargetInv, SatelliteRecipe CraftRecipe)
    {
        if (SourceInv == null || TargetInv == null || ResourceInv == null || TargetInv == null)
        {
            Debug.LogError(SourceInv);
            Debug.LogError(TargetInv);
            Debug.LogError(ResourceInv);
            return(false);
        }
        foreach (var itemIn in CraftRecipe.ItemInput)
        {
            if (SourceInv.GetItemAmount(itemIn.item) < itemIn.amount)
            {
                return(false);
            }
        }

        foreach (var resIn in CraftRecipe.ResourceInput)
        {
            if (ResourceInv.GetResource(resIn.resource) < resIn.amount)
            {
                return(false);
            }
        }

        if (CraftRecipe.CreatesByProducts)
        {
            foreach (var resOut in CraftRecipe.ResourceByProducts)
            {
                if (ResourceInv.GetResource(resOut.resource) + resOut.amount > resOut.resource.GetMaximum())
                {
                    return(false);                                                                                         //holy crap this is a kludge. TODO: Fix this
                }
            }
        }

        if (TargetInv.StoredSatellites.Count != 0 && TargetInv.StoredSatellites[0] != null)
        {
            return(false);
        }
        return(true);
    }