2025-04-24 23:36:23 +02:00
|
|
|
using System.Diagnostics;
|
2025-04-04 00:22:35 +02:00
|
|
|
using Godot;
|
|
|
|
|
|
2025-04-24 23:36:23 +02:00
|
|
|
namespace Babushka.scripts.CSharp.Common.Farming
|
2025-04-04 00:22:35 +02:00
|
|
|
{
|
2025-04-24 23:36:23 +02:00
|
|
|
public enum FieldState
|
2025-04-06 23:13:25 +02:00
|
|
|
{
|
2025-04-24 23:36:23 +02:00
|
|
|
Empty = 0,
|
|
|
|
|
Tilled = 1,
|
|
|
|
|
Planted = 2,
|
|
|
|
|
Watered = 3,
|
|
|
|
|
NotFound = 99
|
2025-04-06 23:13:25 +02:00
|
|
|
}
|
2025-04-14 00:08:19 +02:00
|
|
|
|
2025-04-24 23:36:23 +02:00
|
|
|
[GlobalClass]
|
|
|
|
|
public partial class FieldBehaviour : Sprite3D
|
2025-04-14 00:08:19 +02:00
|
|
|
{
|
2025-04-24 23:36:23 +02:00
|
|
|
[Export] private Texture2D Tilled;
|
|
|
|
|
[Export] private Texture2D Watered;
|
|
|
|
|
[Export] public FieldState FieldState = FieldState.Empty;
|
|
|
|
|
|
|
|
|
|
public Vector2 FieldPosition;
|
|
|
|
|
|
|
|
|
|
public override void _Ready()
|
2025-04-04 00:22:35 +02:00
|
|
|
{
|
2025-04-24 23:36:23 +02:00
|
|
|
Texture = Tilled;
|
|
|
|
|
base._Ready();
|
2025-04-04 00:22:35 +02:00
|
|
|
}
|
2025-04-24 23:36:23 +02:00
|
|
|
|
|
|
|
|
public void Water()
|
|
|
|
|
{
|
|
|
|
|
FieldState = FieldState.Watered;
|
|
|
|
|
Texture = Watered;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Called when the player enters the field'S interaction area and presses <E>.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void Farm()
|
|
|
|
|
{
|
|
|
|
|
switch (FieldState)
|
|
|
|
|
{
|
|
|
|
|
case FieldState.Empty:
|
|
|
|
|
Texture = Tilled;
|
|
|
|
|
FieldState = FieldState.Tilled;
|
|
|
|
|
break;
|
|
|
|
|
case FieldState.Tilled:
|
|
|
|
|
FieldState = FieldState.Planted;
|
|
|
|
|
break;
|
|
|
|
|
case FieldState.Planted:
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
2025-04-04 00:22:35 +02:00
|
|
|
|
2025-04-24 23:36:23 +02:00
|
|
|
}
|
2025-04-04 00:22:35 +02:00
|
|
|
}
|
2025-04-24 23:36:23 +02:00
|
|
|
}
|
|
|
|
|
|