213 lines
5.6 KiB
JavaScript
213 lines
5.6 KiB
JavaScript
const GAME_CONST = {
|
|
PLAYER_DAWN: 0,
|
|
PLAYER_DUSK: 1,
|
|
|
|
SOURCE_BOARD: 0,
|
|
SOURCE_POOL: 1,
|
|
};
|
|
|
|
const GAME_CLASS = {
|
|
Board: class {
|
|
constructor() {
|
|
this.tiles = [ ]; for(let i = 0; i < 61; ++i) { this.tiles.push(new GAME_CLASS.Tile()); }
|
|
this.dawn = new GAME_CLASS.Player();
|
|
}
|
|
},
|
|
|
|
Player: class {
|
|
constructor() {
|
|
this.handle = "";
|
|
this.pool = new GAME_CLASS.Pool();
|
|
}
|
|
},
|
|
|
|
Pool: class {
|
|
constructor() {
|
|
this.pieces = [ ]; for(let i = 0; i < 6; ++i) { this.pieces.push(0); }
|
|
}
|
|
},
|
|
|
|
Tile: class {
|
|
constructor() {
|
|
this.piece = 0;
|
|
}
|
|
},
|
|
|
|
Move: class {
|
|
constructor(source, from, to) {
|
|
this.source = source;
|
|
this.from = from;
|
|
this.to = to;
|
|
}
|
|
},
|
|
|
|
GamePiece: class {
|
|
constructor(name, assets, moves, promote_moves) {
|
|
this.name = name;
|
|
this.assets = assets;
|
|
this.moves = moves;
|
|
this.pmoves = promote_moves;
|
|
}
|
|
},
|
|
|
|
Piece: class {
|
|
constructor(piece, player) {
|
|
this.piece = piece;
|
|
this.player = player;
|
|
this.promoted = false;
|
|
}
|
|
},
|
|
|
|
Game: class {
|
|
constructor() {
|
|
this.board = new GAME_CLASS.Board();
|
|
this.pieces = [
|
|
new GAME_CLASS.GamePiece("Militia",
|
|
["asset/militia_dusk.svg", "asset/militia_dawn.svg"],
|
|
new Move()
|
|
.add(0)
|
|
.add(1)
|
|
.add(5),
|
|
|
|
new Move()
|
|
.add(0)
|
|
.add(1)
|
|
.add(2)
|
|
.add(4)
|
|
.add(5)
|
|
),
|
|
new GAME_CLASS.GamePiece("Knight",
|
|
["asset/knight_dusk.svg", "asset/knight_dawn.svg"],
|
|
new Move()
|
|
.add(3)
|
|
.add(6)
|
|
.add(11)
|
|
.add(13)
|
|
.add(17),
|
|
|
|
new Move()
|
|
.add(3)
|
|
.add(6)
|
|
.add(7)
|
|
.add(10)
|
|
.add(11)
|
|
.add(13)
|
|
.add(14)
|
|
.add(16)
|
|
.add(17)
|
|
),
|
|
new GAME_CLASS.GamePiece("Lance",
|
|
["asset/lance_dusk.svg", "asset/lance_dawn.svg"],
|
|
new Move()
|
|
.add(0, true)
|
|
.add(1)
|
|
.add(5),
|
|
|
|
new Move()
|
|
.add(0, true)
|
|
.add(1, true)
|
|
.add(2, true)
|
|
.add(3, true)
|
|
.add(4, true)
|
|
.add(5, true)
|
|
),
|
|
new GAME_CLASS.GamePiece("Tower",
|
|
["asset/tower_dusk.svg", "asset/tower_dawn.svg"],
|
|
new Move()
|
|
.add(0)
|
|
.add(1)
|
|
.add(3)
|
|
.add(5)
|
|
.add(6)
|
|
.add(11),
|
|
|
|
new Move()
|
|
.add(0)
|
|
.add(1)
|
|
.add(2)
|
|
.add(3)
|
|
.add(4)
|
|
.add(5)
|
|
.add(6)
|
|
.add(8)
|
|
.add(9)
|
|
.add(11)
|
|
),
|
|
new GAME_CLASS.GamePiece("Castle",
|
|
["asset/castle_dusk.svg", "asset/castle_dawn.svg"],
|
|
new Move()
|
|
.add(0)
|
|
.add(1)
|
|
.add(2)
|
|
.add(4)
|
|
.add(5)
|
|
.add(7)
|
|
.add(10),
|
|
|
|
new Move()
|
|
.add(0)
|
|
.add(1)
|
|
.add(2)
|
|
.add(3)
|
|
.add(4)
|
|
.add(5)
|
|
.add(7, true)
|
|
.add(10, true)
|
|
),
|
|
new GAME_CLASS.GamePiece("Dragon",
|
|
["asset/dragon_dusk.svg", "asset/dragon_dawn.svg"],
|
|
new Move()
|
|
.add(6, true)
|
|
.add(7, true)
|
|
.add(8, true)
|
|
.add(9, true)
|
|
.add(10, true)
|
|
.add(11, true),
|
|
|
|
new Move()
|
|
.add(0, true)
|
|
.add(1, true)
|
|
.add(2, true)
|
|
.add(3, true)
|
|
.add(4, true)
|
|
.add(5, true)
|
|
.add(6, true)
|
|
.add(7, true)
|
|
.add(8, true)
|
|
.add(9, true)
|
|
.add(10, true)
|
|
.add(11, true)
|
|
),
|
|
new GAME_CLASS.GamePiece("Omen",
|
|
["asset/king_dusk.svg", "asset/king_dawn.svg"],
|
|
new Move()
|
|
.add(0)
|
|
.add(1)
|
|
.add(2)
|
|
.add(3)
|
|
.add(4)
|
|
.add(5)
|
|
.add(7)
|
|
.add(10)
|
|
),
|
|
];
|
|
}
|
|
}
|
|
};
|
|
|
|
let GAME_DATA = null;
|
|
|
|
const GAME = {
|
|
init() {
|
|
GAME_DATA = new GAME_CLASS.Game();
|
|
},
|
|
|
|
process(move) {
|
|
|
|
},
|
|
|
|
validate(move) {
|
|
|
|
},
|
|
};
|