2026-04-10 14:58:03 +02:00
|
|
|
namespace Chessistics.Engine.Model;
|
|
|
|
|
|
|
|
|
|
public static class PieceRules
|
|
|
|
|
{
|
|
|
|
|
public static int GetSocialStatus(PieceKind kind) => kind switch
|
|
|
|
|
{
|
Add Pion piece, surplus stock, and levels 4-6
- Pion (Pawn): orthogonal range 1, social status 1 (lowest), green color
- All existing levels get surplus stock including pawns for player choice
- Level 4 "Le Carrefour": 8x8, dual cargo diagonal routes, center wall block
- Level 5 "Le Labyrinthe": 8x6, wall corridors, knights essential for shortcuts
- Level 6 "Trois Royaumes": 10x8, 3 productions + 3 demands, full network puzzle
- Production interval concept removed (all produce every turn)
- GDD updated with Pion section and 6 level descriptions
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:03:36 +02:00
|
|
|
PieceKind.Pawn => 1,
|
2026-04-10 14:58:03 +02:00
|
|
|
PieceKind.Rook => 5,
|
|
|
|
|
PieceKind.Bishop => 3,
|
|
|
|
|
PieceKind.Knight => 3,
|
2026-04-10 23:24:14 +02:00
|
|
|
PieceKind.Queen => 7,
|
2026-04-10 14:58:03 +02:00
|
|
|
_ => throw new ArgumentOutOfRangeException(nameof(kind))
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public static int GetMaxRange(PieceKind kind) => kind switch
|
|
|
|
|
{
|
Add Pion piece, surplus stock, and levels 4-6
- Pion (Pawn): orthogonal range 1, social status 1 (lowest), green color
- All existing levels get surplus stock including pawns for player choice
- Level 4 "Le Carrefour": 8x8, dual cargo diagonal routes, center wall block
- Level 5 "Le Labyrinthe": 8x6, wall corridors, knights essential for shortcuts
- Level 6 "Trois Royaumes": 10x8, 3 productions + 3 demands, full network puzzle
- Production interval concept removed (all produce every turn)
- GDD updated with Pion section and 6 level descriptions
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:03:36 +02:00
|
|
|
PieceKind.Pawn => 1,
|
2026-04-10 14:58:03 +02:00
|
|
|
PieceKind.Rook => 2,
|
|
|
|
|
PieceKind.Bishop => 2,
|
|
|
|
|
PieceKind.Knight => 0, // Knight uses L-shape, not range
|
2026-04-10 23:24:14 +02:00
|
|
|
PieceKind.Queen => 2,
|
2026-04-10 14:58:03 +02:00
|
|
|
_ => throw new ArgumentOutOfRangeException(nameof(kind))
|
|
|
|
|
};
|
|
|
|
|
}
|