🚧 WIP trying to fix a bug that won't let me have more than 9 fields. Dont ask me why.
This commit is contained in:
@@ -5,37 +5,39 @@ namespace Babushka.scripts.CSharp.Common.Farming;
|
||||
|
||||
public partial class FieldService : Node
|
||||
{
|
||||
private Dictionary<string, FieldsInScene>? outerDict;
|
||||
|
||||
[Signal] public delegate void FieldCreatedEventHandler();
|
||||
|
||||
private Dictionary<string, FieldsInScene>? _outerDict = null!;
|
||||
public static FieldService Instance { get; private set; } = null!;
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
Instance = this;
|
||||
outerDict = new Dictionary<string, FieldsInScene>();
|
||||
_outerDict = new Dictionary<string, FieldsInScene>();
|
||||
}
|
||||
|
||||
|
||||
public override void _ExitTree()
|
||||
{
|
||||
Instance = null;
|
||||
_outerDict = null;
|
||||
}
|
||||
|
||||
|
||||
//Create
|
||||
public bool TryAddEntry(string sceneName, Vector2I position, FieldBehaviour2D field)
|
||||
{
|
||||
if (outerDict != null )
|
||||
if (_outerDict != null )
|
||||
{
|
||||
FieldsInScene fieldsInScene;
|
||||
bool outerDictEntryExists = outerDict.TryGetValue(sceneName, out fieldsInScene);
|
||||
FieldsInScene innerDict;
|
||||
bool outerDictEntryExists = _outerDict.TryGetValue(sceneName, out innerDict);
|
||||
|
||||
if (!outerDictEntryExists)
|
||||
{
|
||||
fieldsInScene = new FieldsInScene();
|
||||
outerDict.Add(sceneName, fieldsInScene);
|
||||
innerDict = new FieldsInScene();
|
||||
_outerDict.Add(sceneName, innerDict);
|
||||
}
|
||||
|
||||
if (!fieldsInScene.fields.ContainsKey(position))
|
||||
if (!innerDict.fields.ContainsKey(position))
|
||||
{
|
||||
fieldsInScene.fields.Add(position, field);
|
||||
EmitSignal(SignalName.FieldCreated);
|
||||
innerDict.fields.Add(position, field);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -45,13 +47,15 @@ public partial class FieldService : Node
|
||||
// Read
|
||||
public FieldBehaviour2D? TryGet(string key, Vector2I fieldPosition)
|
||||
{
|
||||
if (outerDict != null && outerDict.TryGetValue(key, out FieldsInScene? field))
|
||||
if (_outerDict != null && _outerDict.TryGetValue(key, out FieldsInScene? field))
|
||||
{
|
||||
if (field.fields.TryGetValue(fieldPosition, out FieldBehaviour2D? fieldInstance))
|
||||
{
|
||||
GD.Print("Getting field...");
|
||||
return fieldInstance;
|
||||
}
|
||||
}
|
||||
GD.Print($"No field found for key: {key} and position: {fieldPosition} ");
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -59,7 +63,7 @@ public partial class FieldService : Node
|
||||
//Update
|
||||
public void UpdateEntry(string key, Vector2I fieldPosition, FieldBehaviour2D state)
|
||||
{
|
||||
if (outerDict != null && outerDict.TryGetValue(key, out FieldsInScene? field))
|
||||
if (_outerDict != null && _outerDict.TryGetValue(key, out FieldsInScene? field))
|
||||
{
|
||||
if (field.fields.ContainsKey(fieldPosition))
|
||||
{
|
||||
@@ -76,7 +80,7 @@ public partial class FieldService : Node
|
||||
|
||||
public void RemoveEntry(string key, Vector2I fieldPosition)
|
||||
{
|
||||
if (outerDict != null && outerDict.TryGetValue(key, out FieldsInScene? field))
|
||||
if (_outerDict != null && _outerDict.TryGetValue(key, out FieldsInScene? field))
|
||||
{
|
||||
if (field.fields.ContainsKey(fieldPosition))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user