// 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++; } }
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; } } }
public void MoveInventory(ResourceInventory OldInv, ResourceInventory NewInv) { ResourceData_Internal ResourceData = Data[OldInv]; RemoveInstance(OldInv); RegisterInstance_internal(OldInv, ResourceData); }
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(); }
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)); } }
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 ); }
private void Start() { SetNeighbourTiles(); tileController.Owner = FindObjectOfType <GameController>().CurrentPlayer; ownerResources = tileController.Owner.resourceManager; SetSpawnPosTo(gameObject, transform.position + Vector3.up * 0.3f); }
public void MoveInventory(ResourceInventory OldInv, ResourceInventory NewInv) { for (int i = 0; i < OldInv.Resources.Count; i++) { OldInv.Resources[i].MoveInventory(OldInv, NewInv); } }
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); }
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)))); }
//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); } }
private void Start() { if (warningType == "GasCloud") { alert = UIModule.UIRoot.GetScreen <GameHUD>().GasCloudAlertPrefab.GetComponent <ActivateWarning>(); } player = UIModule.UIRoot.player; playerInventory = UIModule.UIRoot.player.GetComponent <ResourceInventory>(); }
void Start() { playerInventory = UIRoot.GetPlayer().GetComponent <ResourceInventory>(); startFuel = fuelFillBar.startAmount; if (fuel.GetInstanceValue(playerInventory) > startFuel) { tutorialController.NextPrompt(3f); } }
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(); }
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>(); }
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())); }
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()); }
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"); }
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); }
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))); }
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())); }
/* 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; }
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); }
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)); }
// 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()); } } }
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); }