40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using PathFinding;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Gameboard.ShogiUI.Rules.Pieces
|
|
{
|
|
public class Rook : Piece
|
|
{
|
|
private static readonly List<PathFinding.Move> Moves = new(4)
|
|
{
|
|
new PathFinding.Move(Direction.Up, Distance.MultiStep),
|
|
new PathFinding.Move(Direction.Left, Distance.MultiStep),
|
|
new PathFinding.Move(Direction.Right, Distance.MultiStep),
|
|
new PathFinding.Move(Direction.Down, Distance.MultiStep)
|
|
};
|
|
private static readonly List<PathFinding.Move> PromotedMoves = new(8)
|
|
{
|
|
new PathFinding.Move(Direction.Up, Distance.MultiStep),
|
|
new PathFinding.Move(Direction.Left, Distance.MultiStep),
|
|
new PathFinding.Move(Direction.Right, Distance.MultiStep),
|
|
new PathFinding.Move(Direction.Down, Distance.MultiStep),
|
|
new PathFinding.Move(Direction.UpLeft),
|
|
new PathFinding.Move(Direction.UpRight),
|
|
new PathFinding.Move(Direction.DownLeft),
|
|
new PathFinding.Move(Direction.DownRight)
|
|
};
|
|
public Rook(WhichPlayer owner) : base(WhichPiece.Rook, owner)
|
|
{
|
|
moveSet = new MoveSet(this, Moves);
|
|
promotedMoveSet = new MoveSet(this, PromotedMoves);
|
|
}
|
|
|
|
public override Piece DeepClone()
|
|
{
|
|
var clone = new Rook(Owner);
|
|
if (IsPromoted) clone.Promote();
|
|
return clone;
|
|
}
|
|
}
|
|
}
|