const CONFIG_PIECES_STANDARD = [ new GAME.GamePiece( "Militia", new GAME.PieceMovement() .add(0) .add(1) .add(5), new GAME.PieceMovement() .add(0) .add(1) .add(2) .add(3) .add(4) .add(5), ), new GAME.GamePiece( "Lance", new GAME.PieceMovement() .add_stride(0) .add(1) .add(3) .add(5), new GAME.PieceMovement() .add(0) .add_stride(1, 1) .add_stride(2, 1) .add(3) .add_stride(4, 1) .add_stride(5, 1), ), new GAME.GamePiece( "Knight", new GAME.PieceMovement() .add(6) .add(8) .add(9) .add(11) .add(13) .add(14) .add(16) .add(17), new GAME.PieceMovement() .add(6) .add(8) .add(9) .add(11) .add(13) .add(14) .add(16) .add(17) .add_alt(1), ), new GAME.GamePiece( "Tower", new GAME.PieceMovement() .add(0) .add(1) .add(3) .add(5) .add(6) .add(11), new GAME.PieceMovement() .add(0) .add(1) .add(2) .add(3) .add(4) .add(5) .add(6) .add(8) .add(9) .add(11), ), new GAME.GamePiece( "Castle", new GAME.PieceMovement() .add(0) .add(1) .add(2) .add(4) .add(5) .add(7) .add(10), new GAME.PieceMovement() .add(0) .add(1) .add(2) .add(3) .add(4) .add(5) .add(7) .add(10) .add_alt(2), ), new GAME.GamePiece( "Dragon", new GAME.PieceMovement() .add_stride(6) .add_stride(7) .add_stride(8) .add_stride(9) .add_stride(10) .add_stride(11), new GAME.PieceMovement() .add(0) .add(1) .add(2) .add(3) .add(4) .add(5) .add_stride(6) .add_stride(7) .add_stride(8) .add_stride(9) .add_stride(10) .add_stride(11), ), new GAME.GamePiece( "Behemoth", new GAME.PieceMovement() .add_stride(0) .add_stride(1) .add_stride(2) .add_stride(3) .add_stride(4) .add_stride(5), new GAME.PieceMovement() .add_stride(0) .add_stride(1) .add_stride(2) .add_stride(3) .add_stride(4) .add_stride(5) .add(12) .add(13) .add(14) .add(15) .add(16) .add(17) ), new GAME.GamePiece( "Heart", new GAME.PieceMovement() .add(0) .add(1) .add(2) .add(3) .add(4) .add(5) .add(7) .add(10), ), ]; const CONFIG_LAYOUT_STANDARD = new GameConfig.Layout() .add_piece(0, 0, false, new MATH.Vec2(0, 1)) .add_piece(0, 0, false, new MATH.Vec2(1, 1)) .add_piece(0, 0, false, new MATH.Vec2(2, 2)) .add_piece(0, 0, false, new MATH.Vec2(3, 2)) .add_piece(0, 0, false, new MATH.Vec2(4, 3)) .add_piece(0, 0, false, new MATH.Vec2(5, 3)) .add_piece(0, 0, false, new MATH.Vec2(6, 4)) .add_piece(0, 0, false, new MATH.Vec2(7, 4)) .add_piece(0, 0, false, new MATH.Vec2(8, 5)) .add_piece(1, 0, false, new MATH.Vec2(0, 0)) .add_piece(1, 0, false, new MATH.Vec2(8, 4)) .add_piece(2, 0, false, new MATH.Vec2(1, 0)) .add_piece(2, 0, false, new MATH.Vec2(7, 3)) .add_piece(3, 0, false, new MATH.Vec2(3, 0)) .add_piece(3, 0, false, new MATH.Vec2(5, 1)) .add_piece(4, 0, false, new MATH.Vec2(2, 0)) .add_piece(4, 0, false, new MATH.Vec2(6, 2)) .add_piece(5, 0, false, new MATH.Vec2(4, 2)) .add_piece(6, 0, false, new MATH.Vec2(4, 1)) .add_piece(7, 0, false, new MATH.Vec2(4, 0)) .mirror(1); const CONFIG_POOL_DEMO = new Uint8Array([9, 4, 4, 4, 4, 2, 2, 9, 4, 4, 4, 4, 2, 2]); const GAME_CONFIGS = { // Standard Standard: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_layout(CONFIG_LAYOUT_STANDARD), // Militia Guide_Militia: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(CONFIG_POOL_DEMO) .set_layout( new GameConfig.Layout() .add_piece(0, 0, false, new MATH.Vec2(4, 3)) .add_piece(0, 0, true, new MATH.Vec2(4, 5)) .add_piece(0, 0, false, new MATH.Vec2(2, 5)) ) .set_rule("turn", false), // Lance Guide_Lance: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(CONFIG_POOL_DEMO) .set_layout( new GameConfig.Layout() .add_piece(1, 0, false, new MATH.Vec2(4, 3)) .add_piece(1, 0, true, new MATH.Vec2(4, 5)) ) .set_rule("turn", false), // Knight Guide_Knight: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(CONFIG_POOL_DEMO) .set_layout( new GameConfig.Layout() .add_piece(2, 0, false, new MATH.Vec2(4, 3)) .add_piece(2, 0, true, new MATH.Vec2(5, 5)) .add_piece(2, 0, false, new MATH.Vec2(3, 4)) ) .set_rule("turn", false), // Tower Guide_Tower: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(CONFIG_POOL_DEMO) .set_layout( new GameConfig.Layout() .add_piece(3, 0, false, new MATH.Vec2(4, 3)) .add_piece(3, 0, true, new MATH.Vec2(4, 5)) .add_piece(4, 0, false, new MATH.Vec2(5, 4)) .add_piece(2, 0, false, new MATH.Vec2(5, 7)) ) .set_rule("turn", false), // Castle Guide_Castle: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(CONFIG_POOL_DEMO) .set_layout( new GameConfig.Layout() .add_piece(4, 0, false, new MATH.Vec2(4, 3)) .add_piece(4, 0, true, new MATH.Vec2(4, 5)) ) .set_rule("turn", false), // Dragon Guide_Dragon: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(CONFIG_POOL_DEMO) .set_layout( new GameConfig.Layout() .add_piece(5, 0, false, new MATH.Vec2(4, 2)) .add_piece(5, 0, true, new MATH.Vec2(4, 4)) .add_piece(5, 1, false, new MATH.Vec2(4, 6)) .add_piece(0, 1, false, new MATH.Vec2(2, 3)) .add_piece(2, 1, false, new MATH.Vec2(3, 4)) .add_piece(2, 1, false, new MATH.Vec2(5, 4)) ) .set_rule("turn", false), // Behemoth Guide_Behemoth: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(CONFIG_POOL_DEMO) .set_layout( new GameConfig.Layout() .add_piece(6, 0, false, new MATH.Vec2(4, 3)) .add_piece(6, 0, true, new MATH.Vec2(3, 4)) .add_piece(2, 1, false, new MATH.Vec2(4, 4)) .add_piece(2, 0, false, new MATH.Vec2(5, 6)) ) .set_rule("turn", false), // Heart Guide_Heart: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(CONFIG_POOL_DEMO) .set_layout( new GameConfig.Layout() .add_piece(7, 0, false, new MATH.Vec2(4, 4)) .add_piece(7, 1, false, new MATH.Vec2(3, 5)) .add_piece(1, 1, false, new MATH.Vec2(5, 7)) ) .set_rule("turn", false), // Drop Guide_Drop: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(new Uint8Array([5, 1, 1, 2, 2, 1, 1, 6, 2, 2, 1, 1, 1, 1])) .set_layout( new GameConfig.Layout() .add_piece(7, 0, false, new MATH.Vec2(6, 3)) .add_piece(0, 0, false, new MATH.Vec2(5, 4)) .add_piece(0, 0, false, new MATH.Vec2(6, 5)) .add_piece(0, 0, false, new MATH.Vec2(7, 5)) .add_piece(1, 0, false, new MATH.Vec2(8, 5)) .add_piece(0, 0, false, new MATH.Vec2(2, 2)) .add_piece(0, 1, false, new MATH.Vec2(2, 1)) .add_piece(3, 1, false, new MATH.Vec2(3, 2)) .add_piece(2, 0, false, new MATH.Vec2(3, 4)) .add_piece(0, 1, false, new MATH.Vec2(8, 7)) .add_piece(7, 1, false, new MATH.Vec2(4, 7)) .add_piece(4, 1, false, new MATH.Vec2(1, 4)) .add_piece(0, 1, false, new MATH.Vec2(0, 4)) ) .set_rule("turn", false), // Promote Guide_Promote: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_layout( new GameConfig.Layout() .add_piece(1, 0, false, new MATH.Vec2(0, 0)) .add_piece(1, 0, false, new MATH.Vec2(8, 4)) .add_piece(1, 1, false, new MATH.Vec2(0, 4)) .add_piece(1, 1, false, new MATH.Vec2(8, 8)) .add_piece(0, 1, false, new MATH.Vec2(8, 7)) .add_piece(0, 1, false, new MATH.Vec2(7, 7)) .add_piece(4, 1, false, new MATH.Vec2(2, 6)) .add_piece(5, 0, false, new MATH.Vec2(4, 2)) .add_piece(6, 0, false, new MATH.Vec2(4, 4)) .add_piece(7, 1, false, new MATH.Vec2(3, 6)) .add_piece(4, 0, false, new MATH.Vec2(6, 7)) .add_piece(3, 0, false, new MATH.Vec2(5, 6)) .add_piece(2, 1, false, new MATH.Vec2(6, 3)) .add_piece(0, 1, false, new MATH.Vec2(3, 1)) ) .set_rule("turn", false), // Check Guide_Check: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_layout( new GameConfig.Layout() .add_piece(7, 0, false, new MATH.Vec2(4, 3)) .add_piece(4, 0, false, new MATH.Vec2(2, 3)) .add_piece(5, 0, false, new MATH.Vec2(5, 4)) .add_piece(0, 1, false, new MATH.Vec2(4, 4)) .add_piece(2, 1, false, new MATH.Vec2(5, 6)) ), Guide_Check2: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])) .set_layout( new GameConfig.Layout() .add_piece(7, 0, false, new MATH.Vec2(4, 0)) .add_piece(3, 0, false, new MATH.Vec2(3, 0)) .add_piece(3, 0, false, new MATH.Vec2(5, 1)) .add_piece(1, 1, false, new MATH.Vec2(4, 4)) .add_piece(6, 1, true, new MATH.Vec2(7, 3)) .add_piece(1, 1, true, new MATH.Vec2(2, 0)) ), Guide_Check3: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])) .set_layout( new GameConfig.Layout() .add_piece(7, 0, false, new MATH.Vec2(4, 2)) .add_piece(4, 0, false, new MATH.Vec2(6, 3)) .add_piece(3, 1, false, new MATH.Vec2(2, 2)) .add_piece(5, 1, false, new MATH.Vec2(1, 4)) .add_piece(1, 1, false, new MATH.Vec2(5, 5)) .add_piece(6, 1, true, new MATH.Vec2(4, 4)) ), // Checkmate Guide_Checkmate: new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(new Uint8Array([4, 1, 0, 2, 0, 0, 1, 9, 1, 0, 0, 2, 0, 0])) .set_layout( new GameConfig.Layout() .add_piece(7, 1, false, new MATH.Vec2(0, 4)) .add_piece(2, 1, false, new MATH.Vec2(1, 5)) .add_piece(5, 0, true, new MATH.Vec2(1, 3)) ) .set_rule("reverse", true), // Trials Guide_Trial: [ new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(new Uint8Array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])) .set_layout( new GameConfig.Layout() .add_piece(7, 1, false, new MATH.Vec2(4, 8)) .add_piece(4, 1, true, new MATH.Vec2(4, 7)) .add_piece(2, 1, false, new MATH.Vec2(5, 8)) .add_piece(2, 1, false, new MATH.Vec2(3, 5)) .add_piece(3, 0, true, new MATH.Vec2(2, 6)) .add_piece(6, 0, true, new MATH.Vec2(1, 5)) .add_piece(2, 0, true, new MATH.Vec2(7, 7)) ) .set_rule("cpu", true), new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(new Uint8Array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])) .set_layout( new GameConfig.Layout() .add_piece(7, 1, false, new MATH.Vec2(4, 8)) .add_piece(2, 1, false, new MATH.Vec2(3, 7)) .add_piece(3, 1, false, new MATH.Vec2(4, 6)) .add_piece(5, 1, true, new MATH.Vec2(2, 3)) .add_piece(2, 0, true, new MATH.Vec2(6, 7)) .add_piece(6, 0, false, new MATH.Vec2(4, 4)) .add_piece(5, 0, false, new MATH.Vec2(4, 2)) ) .set_rule("cpu", true), new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(new Uint8Array([4, 1, 0, 2, 0, 0, 1, 9, 1, 0, 0, 2, 0, 0])) .set_layout( new GameConfig.Layout() .add_piece(5, 0, false, new MATH.Vec2(4, 6)) .add_piece(3, 0, false, new MATH.Vec2(5, 5)) .add_piece(7, 1, false, new MATH.Vec2(4, 7)) .add_piece(4, 1, false, new MATH.Vec2(5, 8)) .add_piece(3, 1, false, new MATH.Vec2(6, 8)) .add_piece(4, 1, false, new MATH.Vec2(2, 6)) .add_piece(2, 1, false, new MATH.Vec2(4, 8)) .add_piece(1, 0, false, new MATH.Vec2(2, 1)) .add_piece(0, 1, false, new MATH.Vec2(3, 2)) .add_piece(0, 1, false, new MATH.Vec2(5, 6)) .add_piece(7, 0, false, new MATH.Vec2(5, 2)) .add_piece(2, 1, true, new MATH.Vec2(7, 5)) .add_piece(6, 1, true, new MATH.Vec2(6, 4)) .add_piece(0, 0, false, new MATH.Vec2(4, 3)) .add_piece(5, 1, true, new MATH.Vec2(3, 0)) .add_piece(1, 1, true, new MATH.Vec2(1, 2)) .add_piece(0, 1, false, new MATH.Vec2(0, 1)) .add_piece(2, 0, false, new MATH.Vec2(6, 5)) .add_piece(0, 1, false, new MATH.Vec2(1, 4)) .add_piece(2, 0, true, new MATH.Vec2(0, 3)) ) .set_rule("cpu", true), new GameConfig() .set_pieces(CONFIG_PIECES_STANDARD) .set_pool(new Uint8Array([7, 2, 0, 1, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0])) .set_layout( new GameConfig.Layout() .add_piece(7, 1, false, new MATH.Vec2(1, 5)) .add_piece(1, 1, false, new MATH.Vec2(1, 4)) .add_piece(0, 1, false, new MATH.Vec2(0, 4)) .add_piece(0, 1, false, new MATH.Vec2(1, 3)) .add_piece(3, 1, false, new MATH.Vec2(2, 4)) .add_piece(0, 1, false, new MATH.Vec2(3, 5)) .add_piece(0, 1, false, new MATH.Vec2(4, 5)) .add_piece(2, 1, false, new MATH.Vec2(5, 7)) .add_piece(0, 1, false, new MATH.Vec2(6, 6)) .add_piece(2, 1, false, new MATH.Vec2(7, 7)) .add_piece(1, 0, false, new MATH.Vec2(0, 0)) .add_piece(0, 0, false, new MATH.Vec2(0, 1)) .add_piece(2, 0, false, new MATH.Vec2(1, 0)) .add_piece(0, 0, false, new MATH.Vec2(1, 1)) .add_piece(4, 0, false, new MATH.Vec2(2, 0)) .add_piece(0, 0, false, new MATH.Vec2(2, 2)) .add_piece(3, 0, false, new MATH.Vec2(3, 0)) .add_piece(0, 0, false, new MATH.Vec2(3, 3)) .add_piece(7, 0, false, new MATH.Vec2(4, 0)) .add_piece(3, 0, false, new MATH.Vec2(5, 1)) .add_piece(6, 0, false, new MATH.Vec2(5, 2)) .add_piece(4, 0, false, new MATH.Vec2(6, 3)) .add_piece(0, 0, true, new MATH.Vec2(3, 7)) .add_piece(5, 0, true, new MATH.Vec2(4, 6)) .add_piece(6, 0, true, new MATH.Vec2(5, 8)) ) .set_rule("cpu", true), ], };