initialize repo

This commit is contained in:
2025-08-08 15:36:09 +02:00
parent d6a2c37a5f
commit cabf13d164
92 changed files with 2160 additions and 2 deletions

View File

@@ -0,0 +1,49 @@
using System;
using Civilization.Core.Actions;
using Godot;
namespace Civilization.GodotIntegration;
public partial class InputSystem : Node
{
[Export] public MapRenderer MapRenderer;
[Export] public SelectionSystem SelectionSystem;
[Export] public GameStateProvider StateProvider;
public Action? OnStateChanged;
public override void _Ready()
{
MapRenderer.TileClicked += HandleTileClick;
}
public override void _ExitTree()
{
MapRenderer.TileClicked -= HandleTileClick;
}
private void HandleTileClick(Vector2I position, bool isRightClick)
{
var state = StateProvider.GameState;
var context = new GameActionContext(state);
var selected = SelectionSystem.SelectedUnit;
if (selected != null)
{
if (!isRightClick) return;
var move = new MoveUnitAction(selected.Id, position);
if (!move.CanExecute(context)) return;
state.ActionQueue.Enqueue(move);
state.ActionQueue.ExecuteAll(context);
OnStateChanged?.Invoke();
return;
}
if (SelectionSystem.TrySelectUnitAt(position, state))
{
GD.Print($"InputSystem: unit {selected?.Id} selected at {position}");
}
}
}