🚧 days are counted, plants know which day it is, but harvestables are still broken

This commit is contained in:
2025-11-28 20:25:47 +01:00
parent a1fb71119f
commit 41b30a4274
6 changed files with 41 additions and 31 deletions
@@ -45,8 +45,11 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
private bool _canPlant;
private bool _canWater;
private int _currentDay;
private PlantBehaviour2D? _currentPlant;
private const string DAY_COUNTER_SAVE_ID = "12c6da2e-fc71-4281-a04a-dfd3c7943975";
[Signal] public delegate void PlantedEventHandler();
@@ -176,6 +179,7 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
if (_currentPlant != null)
{
_currentPlant.Field = this;
_currentPlant.DayPlanted = _currentDay;
}
}
@@ -194,7 +198,6 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
"plant_data", new Dictionary<string, Variant>()
{
{ "prefab_path", _currentPlant.PrefabPath },
{ "plant_state", (int)_currentPlant.State },
{ "plant_start_day", _currentPlant.DayPlanted }
}
);
@@ -206,6 +209,7 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
public void LoadFromSaveData()
{
// Get field and plant data
string id = _saveIdHolder.GetMeta("SaveID").AsString();
Dictionary<string, Variant> save = SavegameService.GetSaveData(id);
@@ -236,25 +240,23 @@ public partial class FieldBehaviour2D : Sprite2D, ISaveable
{
return;
}
if (plantDataDict.TryGetValue("plant_state", out Variant plantStateVar) && _currentPlant != null)
{
_currentPlant.State = (PlantState) plantStateVar.AsInt32();
_currentPlant.GrowPlant();
}
if (plantDataDict.TryGetValue("plant_start_day", out Variant plantDaysGrowingVar) && _currentPlant != null)
{
_currentPlant.DayPlanted = plantDaysGrowingVar.AsInt32();
}
}
// Get current day count: Load only. Saving the day count is handled on the day and night prefab.
Dictionary<string, Variant> dayCountSave = SavegameService.GetSaveData(DAY_COUNTER_SAVE_ID);
if (_currentPlant != null)
if (dayCountSave.Count > 0)
{
if (dayCountSave.TryGetValue("payload", out Variant dayCountVar))
{
//todo: find out how to load the current day from save and provide it to the plant script
_currentPlant.CurrentDayInCalendar = GD.RandRange(0, 12);
GD.Print($"Set current Day in calendar for plant {_currentPlant.Name} to {_currentPlant.CurrentDayInCalendar}");
_currentDay = dayCountVar.AsInt32();
if(_currentPlant != null)
_currentPlant.CurrentDayInCalendar = dayCountVar.AsInt32();
}
}
}
}
@@ -41,6 +41,9 @@ public partial class PlantBehaviour2D : Node2D
set => _state = value;
}
/// <summary>
/// The day count at the day this plant was planted.
/// </summary>
public int DayPlanted { get; set; }
public int CurrentDayInCalendar
@@ -70,10 +73,10 @@ public partial class PlantBehaviour2D : Node2D
_state = growthFloor switch
{
0 => PlantState.Planted,
1 => PlantState.SmallPlant,
2 => PlantState.BigPlant,
_ => PlantState.Ready
0 => PlantState.None,
1 => PlantState.Planted,
2 => PlantState.SmallPlant,
_ => PlantState.BigPlant
};
_calledOnReady = true;
@@ -15,6 +15,7 @@ public partial class ItemOnGround2D : Node, ISaveable
private int pickUpCounter = 0;
[Signal] public delegate void SuccessfulPickUpEventHandler();
private Label _itemLabel => GetNode<Label>("ItemLabel");
private Label _pickupErrorLabel => GetNode<Label>("PickupErrorLabel");
@@ -92,6 +93,7 @@ public partial class ItemOnGround2D : Node, ISaveable
}
}
// todo: What do we do with instances that are created at runtime?
public void UpdateSaveData()
{
var payloadData = new Dictionary<string, Variant>