initialize repo
This commit is contained in:
31
Lib/Civilization.Core/Actions/MoveUnitAction.cs
Normal file
31
Lib/Civilization.Core/Actions/MoveUnitAction.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using Civilization.Core.Interfaces;
|
||||
|
||||
|
||||
namespace Civilization.Core.Actions;
|
||||
|
||||
public class MoveUnitAction(Guid unitId, Vec2I targetPosition) : IGameAction
|
||||
{
|
||||
public Guid UnitId { get; } = unitId;
|
||||
public Vec2I TargetPosition { get; } = targetPosition;
|
||||
|
||||
public bool CanExecute(GameActionContext context)
|
||||
{
|
||||
var unit = context.State.FindUnit(UnitId);
|
||||
if (unit == null || unit.OwnerId != context.CurrentPlayer.Id) return false;
|
||||
|
||||
return context.Map.Grid.IsValidPosition(TargetPosition) && unit.CanMoveTo(TargetPosition, context.Map);
|
||||
}
|
||||
|
||||
public void Execute(GameActionContext context)
|
||||
{
|
||||
var unit = context.State.FindUnit(UnitId);
|
||||
if (unit == null) return;
|
||||
unit.Position = TargetPosition;
|
||||
unit.ActionPoints -= 1;
|
||||
}
|
||||
|
||||
public void Undo(GameActionContext context)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user