|
|
|
|
@ -73,7 +73,7 @@ public partial class FieldBehaviour2D : Sprite2D
|
|
|
|
|
|
|
|
|
|
public override void _Ready()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
LoadFromSaveData();
|
|
|
|
|
if(PlantingPlaceholder.GetChildCount() > 0)
|
|
|
|
|
_currentPlant = PlantingPlaceholder.GetChild<PlantBehaviour2D>(0);
|
|
|
|
|
UpdateFieldState(FieldState);
|
|
|
|
|
@ -159,17 +159,7 @@ public partial class FieldBehaviour2D : Sprite2D
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(plantPrefabPath))
|
|
|
|
|
{
|
|
|
|
|
PackedScene prefab = ResourceLoader.Load<PackedScene>(plantPrefabPath, nameof(PackedScene));
|
|
|
|
|
Node2D plant2d = prefab.Instantiate<Node2D>();
|
|
|
|
|
PlantingPlaceholder.AddChild(plant2d);
|
|
|
|
|
plant2d.GlobalPosition = PlantingPlaceholder.GlobalPosition;
|
|
|
|
|
_currentPlant = plant2d as PlantBehaviour2D;
|
|
|
|
|
|
|
|
|
|
if (_currentPlant != null)
|
|
|
|
|
{
|
|
|
|
|
_currentPlant.Field = this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PlantPrefab(plantPrefabPath);
|
|
|
|
|
InventoryManager.Instance.playerInventory.RemoveItem(currentSlotIndex);
|
|
|
|
|
success = true;
|
|
|
|
|
}
|
|
|
|
|
@ -177,6 +167,21 @@ public partial class FieldBehaviour2D : Sprite2D
|
|
|
|
|
return success;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void PlantPrefab(string prefabPath)
|
|
|
|
|
{
|
|
|
|
|
PackedScene prefab = ResourceLoader.Load<PackedScene>(prefabPath, nameof(PackedScene));
|
|
|
|
|
Node2D plant2d = prefab.Instantiate<Node2D>();
|
|
|
|
|
PlantingPlaceholder.AddChild(plant2d);
|
|
|
|
|
plant2d.GlobalPosition = PlantingPlaceholder.GlobalPosition;
|
|
|
|
|
_currentPlant = plant2d as PlantBehaviour2D;
|
|
|
|
|
|
|
|
|
|
if (_currentPlant != null)
|
|
|
|
|
{
|
|
|
|
|
_currentPlant.Field = this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void UpdateSaveData()
|
|
|
|
|
{
|
|
|
|
|
@ -206,4 +211,54 @@ public partial class FieldBehaviour2D : Sprite2D
|
|
|
|
|
SavegameService.AppendSave(saveData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void LoadFromSaveData()
|
|
|
|
|
{
|
|
|
|
|
var sceneName = _sceneKeyProvider.Payload.AsString();
|
|
|
|
|
var id = SaveId + _fieldIndex.Payload.AsString();
|
|
|
|
|
string jsonPayload = SavegameService.GetSaveData(sceneName, id);
|
|
|
|
|
Dictionary<string, Variant> save = Json.ParseString(jsonPayload).AsGodotDictionary<string, Variant>();
|
|
|
|
|
|
|
|
|
|
if (save.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
if (save.TryGetValue("field_state", out Variant fieldStateVar))
|
|
|
|
|
{
|
|
|
|
|
int fieldStateInt = fieldStateVar.AsInt32();
|
|
|
|
|
FieldState = (FieldState) fieldStateInt;
|
|
|
|
|
|
|
|
|
|
if (fieldStateInt != 0)
|
|
|
|
|
{
|
|
|
|
|
Visible = true;
|
|
|
|
|
UpdateFieldState(FieldState);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (save.TryGetValue("plant_data", out Variant plantDataVar))
|
|
|
|
|
{
|
|
|
|
|
Dictionary<string, Variant> plantDataDict = plantDataVar.AsGodotDictionary<string, Variant>();
|
|
|
|
|
|
|
|
|
|
if (plantDataDict.TryGetValue("prefab_path", out Variant prefabPathVar))
|
|
|
|
|
{
|
|
|
|
|
PlantPrefab(prefabPathVar.AsString());
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (plantDataDict.TryGetValue("plant_state", out Variant plantStateVar) && _currentPlant != null)
|
|
|
|
|
{
|
|
|
|
|
_currentPlant.State = (PlantState) plantStateVar.AsInt32();
|
|
|
|
|
_currentPlant.GrowPlant();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (plantDataDict.TryGetValue("plant_days_growing", out Variant plantDaysGrowingVar) && _currentPlant != null)
|
|
|
|
|
{
|
|
|
|
|
_currentPlant.DaysGrowing = plantDaysGrowingVar.AsInt32();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|