55 lines
973 B
C#

using Godot;
using System;
public class InteractionMode : Node
{
[Export]
private NodePath _buildModePath;
private BuildMode _buildMode;
[Signal]
delegate void OnInteractionModeChanged(Mode oldMode, Mode newMode);
public enum Mode
{
SELECT = 0,
BUILD = 1
}
public Mode Current { get; private set; }
public void _on_Build_Mode_OnModeEntered()
{
ChangeMode(Mode.BUILD);
}
public void _on_Build_Mode_OnModeExited()
{
ChangeMode(Mode.SELECT);
}
private void ChangeMode(Mode mode)
{
if (Current == mode)
return;
var old = Current;
Current = mode;
EmitSignal(nameof(OnInteractionModeChanged), old, mode);
}
public override void _Ready()
{
base._Ready();
_buildMode = GetNode<BuildMode>(_buildModePath);
Reset();
}
public void Reset()
{
Current = Mode.SELECT;
}
}