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,45 @@
using Civilization.Core.Game;
using Civilization.Core.Interfaces;
using Civilization.Core.Units;
namespace Civilization.Core.Actions;
public class SettleCityAction(Guid unitId) : IGameAction
{
private const int CityNearbyRange = 4;
public Guid UnitId { get; } = unitId;
public bool CanExecute(GameActionContext context)
{
var unit = context.State.FindUnit(UnitId);
if (unit == null || !unit.HasTag(UnitTag.Settle)) return false;
if (unit.OwnerId != context.CurrentPlayer.Id) return false;
if (unit.ActionPoints < 1) return false;
var tile = context.Map.GetTile(unit.Position);
if (tile is not { OwnerId: null }) return false;
// Later we could also check if there is city nearby
return true;
}
public void Execute(GameActionContext context)
{
var unit = context.State.FindUnit(UnitId)!;
var position = unit.Position;
context.State.RemoveUnit(UnitId);
var city = new City(unit.OwnerId, position);
city.ClaimTile(context.Map, position);
context.State.AddCity(city);
}
public void Undo(GameActionContext context)
{
}
}