Using dictionaries in scriptable objects to store crafting recipe's
Ive been working on a project similar to factorio to teach myself itemID and recipe architecture, so far ive got a working itemID list in a scriptable object but in my recipe list there seems to be issues using the dictionary. the first recipe i put in from outside the program using serialized lists storing the input and outputID's works, but it will not find the outputID for the itemID 2, while it should add this to the used dictionary, would anyone be able to help. i'll post the code below.
{
public Dictionary<int, int> _listedRecipes;
[SerializeField]
private List<int> InputIDList;
[SerializeField]
private List<int> OutputIDList;
public Dictionary<int, int> ProcessingRecipes()
{
if (_listedRecipes == null)
{
Dictionary<int, int> recipes = new Dictionary<int, int>();
for (int i = 0; i <= InputIDList.Count - 1 && i <= OutputIDList.Count - 1; i++)
{
recipes[InputIDList[i]] = OutputIDList[i];
Debug.Log(recipes[InputIDList[i]]);
Debug.Log(InputIDList[i]);
}
_listedRecipes = recipes;
return recipes;
}
else
{
return _listedRecipes;
}
}
}
The code that causes issues in the processing machine when i input an ingredient with itemID 2
private void ProcessingStuff()
{
if (!_processing && _resources.Count >= 1)
{
_currentIngredient = _resources[0];
int outcomeID = _processingList.ProcessingRecipes()[_currentIngredient.ItemID];
_currentProcess.ChangeID(outcomeID);
//_currentProcess.ChangeID(_processingList.RespondingID(_currentIngredient.ItemID));
_processing = true;
}
else
{
if(_processing)
{
UpdateTimer();
}
if (_processingTimer >= _processingTime && _resources.Count >= 1)
{
GameObject spawnedobject = _outputPrefab;
spawnedobject.GetComponent<Ingredient>().ItemID = _currentProcess.ItemID;
Instantiate(spawnedobject, _outputSpawn.position, _outputSpawn.rotation);
_processing = false;
_processingTimer = 0;
_resources.RemoveAt(0);
}
}
}
and here is a streamable videolink showing off the issue https://streamable.com/gd7qo7
Your answer
Follow this Question
Related Questions
How to write a Story Event System with ScriptableObjects? 0 Answers
ScriptableObject not Serializing? 0 Answers
SerializedObject asset loses data when pressing play 1 Answer
Serialize a list of class containing ScriptableObject assets 0 Answers
[SOLVED] ScriptableObject generic list makes all derived instances to base type when serializing 1 Answer