55 lines
973 B
C#
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;
|
|
}
|
|
}
|