- Home /
Checking if items are present in array of list, how to do it?
I have a question about arrays. Is there a way of in the following code to detect if an "item" is already in the inventory?
#pragma strict
import System.Collections.Generic;
var collectWood : ItemClass [];
var collectStone : ItemClass [];
var Inventory : Inventory;
function Start () {
Inventory = GetComponent ("Inventory") as Inventory;
}
function OnGUI () {
}
function GetWood (){
for (var x = 0; x < collectWood.Length; x++){
Inventory.playerInventory.Add(collectWood[x]);
}
}
function GetStone (){
for (var x = 0; x < collectStone.Length; x++){
Inventory.playerInventory.Add(collectStone[x]);
}
}
I have another script that calls the GetWood function, and what it does is adding another line into the inventory with the contents of the variables. What i would like to know is if it's possible to detect if the same item is already in the inventory and if so to add to the ammount of items instead of creating a new one in the inventory, like one would do for stackable items. Any help will be most apreciated.
Answer by Marco Teles · Dec 31, 2013 at 05:39 PM
Hi again, i've been trying to figure this one out still but can't seem to crack it unfortunatly. I worte a piece of code (as follows)...
function GetWood (){
var countWood : int;
var wasFound : boolean = false;
if (Inventory.playerInventory.Count != 0){
for (var i = 0; i < Inventory.playerInventory.Count; i++){
wasFound=false;
if (Inventory.playerInventory[i].name == "Wood"){
print("found it");
wasFound=true;
}
if(wasFound == true){
Inventory.playerInventory[i].ammount++;
countWood = Inventory.playerInventory[i].ammount+1;
print("Ammount " + countWood);
return;
}
else
Inventory.playerInventory.Add(collectWood[0]);
return;
}
}
else{
Inventory.playerInventory.Add(collectWood[0]);
return;
}
}
This is now working for the 1st item added to the inventory. If i add a "wood" first then it increases the stack ammount and soen't add another instance with same item name. But if i have , let's say a "rock" aded in inventory then if i pickup wood it keeps adding new instances of it and dosen't increase the ammount anymore. Any ideas where i'm missing something to make this work allways like in the 1st case?
Edit: Figured a way to make it work, if anyone wants/needs i can post the code here.
Your answer
Follow this Question
Related Questions
How to determine what type of class is being interated through in an array of multiple classes 1 Answer
Getting info from object within an array 1 Answer
,If i were to have a inventory system could i split it twice 0 Answers
HELP How to remove gameobject from Built-in Arrays 2 Answers
How to check the current sprite in the image source? Unity 4.6beta20 1 Answer