Add alt button; add alt move for king.
This commit is contained in:
parent
19d29cb749
commit
d3838afbdd
@ -433,7 +433,8 @@ GAME.Game = class {
|
|||||||
// Handle alt moves.
|
// Handle alt moves.
|
||||||
if(play.source == 2) {
|
if(play.source == 2) {
|
||||||
switch(moves.alt) {
|
switch(moves.alt) {
|
||||||
case 1: {
|
case 1:
|
||||||
|
case 3: {
|
||||||
piece.promoted = false;
|
piece.promoted = false;
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
@ -691,7 +692,7 @@ GAME.Game = class {
|
|||||||
case 1: {
|
case 1: {
|
||||||
// Check all tiles if not blocking.
|
// Check all tiles if not blocking.
|
||||||
if(block_directions == 0) {
|
if(block_directions == 0) {
|
||||||
for(let i = 0; i < GAME_DATA.board.tiles.length; ++i) {
|
for(let i = 0; i < this.board.tiles.length; ++i) {
|
||||||
if(this.placable_tile(piece, i, {check:false, extent:false})) {
|
if(this.placable_tile(piece, i, {check:false, extent:false})) {
|
||||||
tiles.push(new GAME.MovementTile(i, true, false, 0, 0));
|
tiles.push(new GAME.MovementTile(i, true, false, 0, 0));
|
||||||
}
|
}
|
||||||
@ -728,7 +729,7 @@ GAME.Game = class {
|
|||||||
case 2: {
|
case 2: {
|
||||||
// Check all tiles if not blocking.
|
// Check all tiles if not blocking.
|
||||||
if(block_directions == 0) {
|
if(block_directions == 0) {
|
||||||
for(let i = 0; i < GAME_DATA.board.tiles.length; ++i) {
|
for(let i = 0; i < this.board.tiles.length; ++i) {
|
||||||
let tile_hex = this.board.tiles[i].hex;
|
let tile_hex = this.board.tiles[i].hex;
|
||||||
|
|
||||||
let valid = true;
|
let valid = true;
|
||||||
@ -791,6 +792,21 @@ GAME.Game = class {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
// King, Swap
|
||||||
|
case 3: {
|
||||||
|
// Check all tiles if not blocking.
|
||||||
|
for(let target of this.board.pieces) {
|
||||||
|
if(target !== null) {
|
||||||
|
if(target.piece != piece.piece && target.player == piece.player) {
|
||||||
|
let tile = this.board.tiles[target.tile];
|
||||||
|
if(target.blocking == 0 && tile.threaten[+!piece.player] == 0) {
|
||||||
|
tiles.push(new GAME.MovementTile(target.tile, true, false, 0, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1074,6 +1090,16 @@ GAME.Const = {
|
|||||||
.add(5)
|
.add(5)
|
||||||
.add(7)
|
.add(7)
|
||||||
.add(10),
|
.add(10),
|
||||||
|
new GAME.PieceMovement()
|
||||||
|
.add(0)
|
||||||
|
.add(1)
|
||||||
|
.add(2)
|
||||||
|
.add(3)
|
||||||
|
.add(4)
|
||||||
|
.add(5)
|
||||||
|
.add(7)
|
||||||
|
.add(10)
|
||||||
|
.add_alt(3),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -139,7 +139,16 @@ const CONFIG_PIECES_STANDARD = [
|
|||||||
.add(17)
|
.add(17)
|
||||||
),
|
),
|
||||||
new GAME.GamePiece(
|
new GAME.GamePiece(
|
||||||
"Heart",
|
"Hearth",
|
||||||
|
new GAME.PieceMovement()
|
||||||
|
.add(0)
|
||||||
|
.add(1)
|
||||||
|
.add(2)
|
||||||
|
.add(3)
|
||||||
|
.add(4)
|
||||||
|
.add(5)
|
||||||
|
.add(7)
|
||||||
|
.add(10),
|
||||||
new GAME.PieceMovement()
|
new GAME.PieceMovement()
|
||||||
.add(0)
|
.add(0)
|
||||||
.add(1)
|
.add(1)
|
||||||
@ -192,7 +201,6 @@ const GAME_CONFIGS = {
|
|||||||
new GameConfig.Layout()
|
new GameConfig.Layout()
|
||||||
.add_piece(0, 0, false, new MATH.Vec2(4, 3))
|
.add_piece(0, 0, false, new MATH.Vec2(4, 3))
|
||||||
.add_piece(0, 0, true, new MATH.Vec2(4, 5))
|
.add_piece(0, 0, true, new MATH.Vec2(4, 5))
|
||||||
.add_piece(0, 0, false, new MATH.Vec2(2, 5))
|
|
||||||
)
|
)
|
||||||
.set_rule("turn", false),
|
.set_rule("turn", false),
|
||||||
|
|
||||||
@ -213,9 +221,8 @@ const GAME_CONFIGS = {
|
|||||||
.set_pool(CONFIG_POOL_DEMO)
|
.set_pool(CONFIG_POOL_DEMO)
|
||||||
.set_layout(
|
.set_layout(
|
||||||
new GameConfig.Layout()
|
new GameConfig.Layout()
|
||||||
.add_piece(2, 0, false, new MATH.Vec2(4, 3))
|
.add_piece(2, 0, false, new MATH.Vec2(3, 3))
|
||||||
.add_piece(2, 0, true, new MATH.Vec2(5, 5))
|
.add_piece(2, 0, true, new MATH.Vec2(5, 5))
|
||||||
.add_piece(2, 0, false, new MATH.Vec2(3, 4))
|
|
||||||
)
|
)
|
||||||
.set_rule("turn", false),
|
.set_rule("turn", false),
|
||||||
|
|
||||||
@ -227,8 +234,6 @@ const GAME_CONFIGS = {
|
|||||||
new GameConfig.Layout()
|
new GameConfig.Layout()
|
||||||
.add_piece(3, 0, false, new MATH.Vec2(4, 3))
|
.add_piece(3, 0, false, new MATH.Vec2(4, 3))
|
||||||
.add_piece(3, 0, true, new MATH.Vec2(4, 5))
|
.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),
|
.set_rule("turn", false),
|
||||||
|
|
||||||
@ -249,12 +254,8 @@ const GAME_CONFIGS = {
|
|||||||
.set_pool(CONFIG_POOL_DEMO)
|
.set_pool(CONFIG_POOL_DEMO)
|
||||||
.set_layout(
|
.set_layout(
|
||||||
new GameConfig.Layout()
|
new GameConfig.Layout()
|
||||||
.add_piece(5, 0, false, new MATH.Vec2(4, 2))
|
.add_piece(5, 0, false, new MATH.Vec2(4, 3))
|
||||||
.add_piece(5, 0, true, new MATH.Vec2(4, 4))
|
.add_piece(5, 0, true, new MATH.Vec2(4, 5))
|
||||||
.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),
|
.set_rule("turn", false),
|
||||||
|
|
||||||
@ -265,9 +266,9 @@ const GAME_CONFIGS = {
|
|||||||
.set_layout(
|
.set_layout(
|
||||||
new GameConfig.Layout()
|
new GameConfig.Layout()
|
||||||
.add_piece(6, 0, false, new MATH.Vec2(4, 3))
|
.add_piece(6, 0, false, new MATH.Vec2(4, 3))
|
||||||
.add_piece(6, 0, true, new MATH.Vec2(3, 4))
|
.add_piece(6, 0, true, new MATH.Vec2(4, 5))
|
||||||
.add_piece(2, 1, false, new MATH.Vec2(4, 4))
|
|
||||||
.add_piece(2, 0, false, new MATH.Vec2(5, 6))
|
.add_piece(2, 0, false, new MATH.Vec2(5, 6))
|
||||||
|
.add_piece(2, 0, false, new MATH.Vec2(5, 3))
|
||||||
)
|
)
|
||||||
.set_rule("turn", false),
|
.set_rule("turn", false),
|
||||||
|
|
||||||
@ -277,9 +278,9 @@ const GAME_CONFIGS = {
|
|||||||
.set_pool(CONFIG_POOL_DEMO)
|
.set_pool(CONFIG_POOL_DEMO)
|
||||||
.set_layout(
|
.set_layout(
|
||||||
new GameConfig.Layout()
|
new GameConfig.Layout()
|
||||||
.add_piece(7, 0, false, new MATH.Vec2(4, 4))
|
.add_piece(7, 0, false, new MATH.Vec2(4, 3))
|
||||||
.add_piece(7, 1, false, new MATH.Vec2(3, 5))
|
.add_piece(7, 1, true, new MATH.Vec2(3, 4))
|
||||||
.add_piece(1, 1, false, new MATH.Vec2(5, 7))
|
.add_piece(1, 1, false, new MATH.Vec2(5, 6))
|
||||||
)
|
)
|
||||||
.set_rule("turn", false),
|
.set_rule("turn", false),
|
||||||
|
|
||||||
@ -365,6 +366,17 @@ const GAME_CONFIGS = {
|
|||||||
.add_piece(6, 1, true, new MATH.Vec2(4, 4))
|
.add_piece(6, 1, true, new MATH.Vec2(4, 4))
|
||||||
),
|
),
|
||||||
|
|
||||||
|
Guide_Check4: 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, true, new MATH.Vec2(4, 0))
|
||||||
|
.add_piece(0, 0, false, new MATH.Vec2(7, 4))
|
||||||
|
.add_piece(5, 1, true, new MATH.Vec2(3, 1))
|
||||||
|
.add_piece(6, 1, true, new MATH.Vec2(5, 3))
|
||||||
|
),
|
||||||
|
|
||||||
// Checkmate
|
// Checkmate
|
||||||
Guide_Checkmate: new GameConfig()
|
Guide_Checkmate: new GameConfig()
|
||||||
.set_pieces(CONFIG_PIECES_STANDARD)
|
.set_pieces(CONFIG_PIECES_STANDARD)
|
||||||
|
@ -138,31 +138,38 @@ const INTERFACE = {
|
|||||||
|
|
||||||
resolve_piece(selection, zone) {
|
resolve_piece(selection, zone) {
|
||||||
// Determine piece movement hints.
|
// Determine piece movement hints.
|
||||||
|
|
||||||
let movements = null;
|
let movements = null;
|
||||||
let player = 0;
|
let player = 0;
|
||||||
if(selection.source == 0) {
|
let piece_id = null;
|
||||||
let piece_id = GAME_DATA.board.tiles[selection.tile].piece;
|
|
||||||
if(piece_id !== null) {
|
|
||||||
let piece = GAME_DATA.board.pieces[piece_id];
|
|
||||||
player = piece.player;
|
|
||||||
if(piece.moves().alt && INTERFACE_DATA.alt_mode) {
|
|
||||||
movements = GAME_DATA.movement_tiles_alt(piece);
|
|
||||||
} else {
|
|
||||||
movements = GAME_DATA.movement_tiles(piece, selection.tile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
player = Math.floor(selection.tile / 7);
|
|
||||||
player ^= INTERFACE_DATA.player & 1;
|
|
||||||
if(INTERFACE_DATA.player == 2) { player ^= INTERFACE_DATA.rotate; }
|
|
||||||
|
|
||||||
let select_alt = INTERFACE.selection_has_alt(INTERFACE_DATA.select);
|
// Get movements from source.
|
||||||
if(select_alt !== null) {
|
switch(selection.source) {
|
||||||
movements = GAME_DATA.movement_tiles_alt(select_alt);
|
case 0: {
|
||||||
} else {
|
piece_id = GAME_DATA.board.tiles[selection.tile].piece;
|
||||||
|
if(piece_id !== null) {
|
||||||
|
let piece = GAME_DATA.board.pieces[piece_id];
|
||||||
|
player = piece.player;
|
||||||
|
if(piece.moves().alt && INTERFACE_DATA.alt_mode) {
|
||||||
|
movements = GAME_DATA.movement_tiles_alt(piece);
|
||||||
|
} else {
|
||||||
|
movements = GAME_DATA.movement_tiles(piece, selection.tile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case 1: {
|
||||||
|
player = Math.floor(selection.tile / 7);
|
||||||
|
player ^= INTERFACE_DATA.player & 1;
|
||||||
|
if(INTERFACE_DATA.player == 2) { player ^= INTERFACE_DATA.rotate; }
|
||||||
movements = GAME_DATA.placement_tiles(selection.tile % 7, player);
|
movements = GAME_DATA.placement_tiles(selection.tile % 7, player);
|
||||||
}
|
} break;
|
||||||
|
|
||||||
|
case 2: {
|
||||||
|
let select_alt = INTERFACE.selection_has_alt(INTERFACE_DATA.select);
|
||||||
|
if(select_alt !== null) {
|
||||||
|
movements = GAME_DATA.movement_tiles_alt(select_alt);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(movements !== null) {
|
if(movements !== null) {
|
||||||
@ -265,6 +272,8 @@ const INTERFACE = {
|
|||||||
let tx = (2 * (hx > 0)) + (2 * (hx > 1));
|
let tx = (2 * (hx > 0)) + (2 * (hx > 1));
|
||||||
let tile = tile_set + tx + hy;
|
let tile = tile_set + tx + hy;
|
||||||
INTERFACE_DATA.hover = new INTERFACE.Selection(1, tile, hex);
|
INTERFACE_DATA.hover = new INTERFACE.Selection(1, tile, hex);
|
||||||
|
} else if(hx == 1 && hy == 3) {
|
||||||
|
INTERFACE_DATA.hover = new INTERFACE.Selection(2, 0, hex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -281,35 +290,25 @@ const INTERFACE = {
|
|||||||
click(event) {
|
click(event) {
|
||||||
let play_player = -1;
|
let play_player = -1;
|
||||||
|
|
||||||
console.log("CLICK");
|
|
||||||
switch(event.button) {
|
switch(event.button) {
|
||||||
|
|
||||||
// Main button
|
// Main button
|
||||||
case 0: {
|
case 0: {
|
||||||
console.log("A");
|
|
||||||
if(INTERFACE_DATA.hover !== null) {
|
if(INTERFACE_DATA.hover !== null) {
|
||||||
console.log("B");
|
|
||||||
INTERFACE_DATA.clicked = INTERFACE_DATA.hover;
|
INTERFACE_DATA.clicked = INTERFACE_DATA.hover;
|
||||||
|
|
||||||
if(INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.select)) {
|
if(INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.select)) {
|
||||||
INTERFACE_DATA.clicked = null;
|
INTERFACE_DATA.clicked = null;
|
||||||
} else {
|
} else {
|
||||||
console.log("C");
|
|
||||||
// Check if operation can be performed on new tile.
|
// Check if operation can be performed on new tile.
|
||||||
// Otherwise, switch selection.
|
// Otherwise, switch selection.
|
||||||
let result = 0;
|
let result = 0;
|
||||||
if(INTERFACE_DATA.select !== null) {
|
if(INTERFACE_DATA.select !== null) {
|
||||||
console.log("Select not null");
|
|
||||||
|
|
||||||
// Play selection.
|
// Play selection.
|
||||||
if(INTERFACE_DATA.hover.source == 0 && (INTERFACE_DATA.mode == INTERFACE.Mode.Local || (INTERFACE_DATA.player == ((GAME_DATA.turn + GAME_DATA.config.rules.reverse) & 1) || !GAME_DATA.config.rules.turn))) {
|
if(INTERFACE_DATA.hover.source == 0 && (INTERFACE_DATA.mode == INTERFACE.Mode.Local || (INTERFACE_DATA.player == ((GAME_DATA.turn + GAME_DATA.config.rules.reverse) & 1) || !GAME_DATA.config.rules.turn))) {
|
||||||
console.log("D1");
|
|
||||||
|
|
||||||
let tile_state = INTERFACE_DATA.Game.board_state[INTERFACE_DATA.hover.tile][1];
|
let tile_state = INTERFACE_DATA.Game.board_state[INTERFACE_DATA.hover.tile][1];
|
||||||
result = +(tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat);
|
result = +(tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat);
|
||||||
console.log("RES " + result);
|
|
||||||
if(INTERFACE_DATA.select.source == 1) {
|
if(INTERFACE_DATA.select.source == 1) {
|
||||||
console.log("SRC1");
|
|
||||||
let pool_selected = +(INTERFACE_DATA.select.tile >= 7);
|
let pool_selected = +(INTERFACE_DATA.select.tile >= 7);
|
||||||
|
|
||||||
pool_selected ^= (INTERFACE_DATA.player & 1);
|
pool_selected ^= (INTERFACE_DATA.player & 1);
|
||||||
@ -319,7 +318,6 @@ const INTERFACE = {
|
|||||||
|
|
||||||
if(((GAME_DATA.turn + GAME_DATA.config.rules.reverse) & 1) != pool_selected) {
|
if(((GAME_DATA.turn + GAME_DATA.config.rules.reverse) & 1) != pool_selected) {
|
||||||
if(GAME_DATA.config.rules.turn) {
|
if(GAME_DATA.config.rules.turn) {
|
||||||
console.log("NOT POOL");
|
|
||||||
result = 0;
|
result = 0;
|
||||||
} else {
|
} else {
|
||||||
play_player = pool_selected;
|
play_player = pool_selected;
|
||||||
@ -329,28 +327,20 @@ const INTERFACE = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Alt move selection.
|
// Alt move selection.
|
||||||
else if(INTERFACE_DATA.select.source == 0 && INTERFACE_DATA.hover.source == 1) {
|
else if(INTERFACE_DATA.hover.source == 2) {
|
||||||
console.log("D2");
|
if(INTERFACE_DATA.select.source == 0) {
|
||||||
let alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.select);
|
let alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.select);
|
||||||
if(alt_piece !== null) {
|
if(alt_piece !== null) {
|
||||||
console.log("HAS ALT");
|
|
||||||
|
|
||||||
let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7);
|
|
||||||
pool_player ^= INTERFACE_DATA.player & 1;
|
|
||||||
if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; }
|
|
||||||
|
|
||||||
if((INTERFACE_DATA.hover.tile % 7) == alt_piece.piece && alt_piece.player == pool_player) {
|
|
||||||
INTERFACE_DATA.alt_mode = !INTERFACE_DATA.alt_mode;
|
INTERFACE_DATA.alt_mode = !INTERFACE_DATA.alt_mode;
|
||||||
result = 2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
result = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle player action.
|
// Handle player action.
|
||||||
switch(result) {
|
switch(result) {
|
||||||
case 1: {
|
case 1: {
|
||||||
console.log("ACT1");
|
|
||||||
let source = INTERFACE_DATA.select.source;
|
let source = INTERFACE_DATA.select.source;
|
||||||
if(source == 0 && INTERFACE_DATA.alt_mode) {
|
if(source == 0 && INTERFACE_DATA.alt_mode) {
|
||||||
source = 2;
|
source = 2;
|
||||||
@ -370,7 +360,6 @@ const INTERFACE = {
|
|||||||
} break;
|
} break;
|
||||||
|
|
||||||
case 0: {
|
case 0: {
|
||||||
console.log("ACT2");
|
|
||||||
// Handle new selection.
|
// Handle new selection.
|
||||||
INTERFACE_DATA.select = null;
|
INTERFACE_DATA.select = null;
|
||||||
INTERFACE_DATA.alt_mode = false;
|
INTERFACE_DATA.alt_mode = false;
|
||||||
@ -402,6 +391,7 @@ const INTERFACE = {
|
|||||||
// Clear selection if no tile is hovered.
|
// Clear selection if no tile is hovered.
|
||||||
else {
|
else {
|
||||||
INTERFACE_DATA.select = null;
|
INTERFACE_DATA.select = null;
|
||||||
|
INTERFACE_DATA.alt_mode = false;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
@ -853,6 +843,12 @@ const INTERFACE = {
|
|||||||
player_identity ^ 1,
|
player_identity ^ 1,
|
||||||
INTERFACE_DATA.mode == INTERFACE.Mode.Local && INTERFACE_DATA.mirror
|
INTERFACE_DATA.mode == INTERFACE.Mode.Local && INTERFACE_DATA.mirror
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Alt
|
||||||
|
draw.alt(
|
||||||
|
basis_x + (14 * radius),
|
||||||
|
basis_y - (6 * gui_scale),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw informational text
|
// Draw informational text
|
||||||
@ -1284,28 +1280,6 @@ const INTERFACE = {
|
|||||||
border_color = INTERFACE.Color.HintSelectLight;
|
border_color = INTERFACE.Color.HintSelectLight;
|
||||||
}
|
}
|
||||||
|
|
||||||
let alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.hover);
|
|
||||||
if(alt_piece !== null) {
|
|
||||||
if(alt_piece.piece == i && alt_piece.player == player) {
|
|
||||||
background_color = INTERFACE.Color.HintValidDark;
|
|
||||||
border_color = INTERFACE.Color.HintValidTint;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.select);
|
|
||||||
if(is_select) { background_color = INTERFACE.Color.HintSelect; }
|
|
||||||
else if(alt_piece !== null) {
|
|
||||||
if(alt_piece.piece == i && alt_piece.player == player) {
|
|
||||||
if(INTERFACE_DATA.alt_mode) {
|
|
||||||
background_color = INTERFACE.Color.HintSelect;
|
|
||||||
border_color = INTERFACE.Color.HintSelectLight;
|
|
||||||
} else {
|
|
||||||
background_color = INTERFACE.Color.HintValid;
|
|
||||||
border_color = INTERFACE.Color.HintValidLight;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(is_hover) { border_color = INTERFACE.Color.HintHover; }
|
if(is_hover) { border_color = INTERFACE.Color.HintHover; }
|
||||||
|
|
||||||
// Draw border
|
// Draw border
|
||||||
@ -1341,6 +1315,67 @@ const INTERFACE = {
|
|||||||
this.ctx.restore();
|
this.ctx.restore();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
alt(x, y, mirror=false) {
|
||||||
|
let radius = INTERFACE.Radius * this.scale;
|
||||||
|
|
||||||
|
let is_hover = INTERFACE.Ui.tile_is_hover(2, 0);
|
||||||
|
let is_select = INTERFACE.Ui.tile_is_select(2, 0);
|
||||||
|
|
||||||
|
let gui_x = x + (1.5 * radius);
|
||||||
|
let gui_y = y + (2 * this.scale);
|
||||||
|
|
||||||
|
this.ctx.save();
|
||||||
|
this.ctx.translate(gui_x, gui_y);
|
||||||
|
|
||||||
|
// Get background color.
|
||||||
|
let background_color = null;
|
||||||
|
let border_color = INTERFACE.Color.Promote;
|
||||||
|
|
||||||
|
if(is_select) {
|
||||||
|
border_color = INTERFACE.Color.HintSelectLight;
|
||||||
|
}
|
||||||
|
|
||||||
|
let alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.hover);
|
||||||
|
if(alt_piece !== null) {
|
||||||
|
background_color = INTERFACE.Color.HintValidDark;
|
||||||
|
border_color = INTERFACE.Color.HintValidTint;
|
||||||
|
}
|
||||||
|
|
||||||
|
alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.select);
|
||||||
|
if(is_select) { background_color = INTERFACE.Color.HintSelect; }
|
||||||
|
else if(alt_piece !== null) {
|
||||||
|
if(INTERFACE_DATA.alt_mode) {
|
||||||
|
background_color = INTERFACE.Color.HintSelect;
|
||||||
|
border_color = INTERFACE.Color.HintSelectLight;
|
||||||
|
} else {
|
||||||
|
background_color = INTERFACE.Color.HintValid;
|
||||||
|
border_color = INTERFACE.Color.HintValidLight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(is_hover) { border_color = INTERFACE.Color.HintHover; }
|
||||||
|
|
||||||
|
// Draw border
|
||||||
|
this.ctx.fillStyle = border_color;
|
||||||
|
this.ctx.beginPath();
|
||||||
|
this.hex();
|
||||||
|
this.ctx.fill();
|
||||||
|
|
||||||
|
if(background_color === null) { background_color = INTERFACE.Color.TileDark; }
|
||||||
|
this.ctx.fillStyle = background_color;
|
||||||
|
this.ctx.beginPath();
|
||||||
|
this.hex(0.94);
|
||||||
|
this.ctx.fill();
|
||||||
|
|
||||||
|
if(mirror) {
|
||||||
|
this.ctx.rotate(Math.PI);
|
||||||
|
}
|
||||||
|
|
||||||
|
GAME_ASSET.Image["Promote"].draw(this.ctx, 1.25 * this.scale, [0, 0], INTERFACE.Color.Promote);
|
||||||
|
|
||||||
|
this.ctx.restore();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
Ui: {
|
Ui: {
|
||||||
@ -1487,7 +1522,7 @@ const INTERFACE = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
load(config) {
|
load(config) {
|
||||||
GAME.init(config);
|
GAME_DATA.config = config;
|
||||||
INTERFACE.reset();
|
INTERFACE.reset();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1512,7 +1547,7 @@ const INTERFACE = {
|
|||||||
INTERFACE_DATA.Game.history.push(INTERFACE_DATA.Game.history_begin[i]);
|
INTERFACE_DATA.Game.history.push(INTERFACE_DATA.Game.history_begin[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
INTERFACE_DATA.Replay.turn = INTERFACE_DATA.Game.history.length + 1;
|
INTERFACE_DATA.Replay.turn = INTERFACE_DATA.Game.history.length;
|
||||||
INTERFACE.replay_jump(INTERFACE_DATA.Game.history.length, false);
|
INTERFACE.replay_jump(INTERFACE_DATA.Game.history.length, false);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1674,7 +1709,6 @@ const INTERFACE = {
|
|||||||
process(play) {
|
process(play) {
|
||||||
let valid = true;
|
let valid = true;
|
||||||
|
|
||||||
console.log("PRC " + play.source);
|
|
||||||
switch(play.source) {
|
switch(play.source) {
|
||||||
case 0:
|
case 0:
|
||||||
case 2: {
|
case 2: {
|
||||||
@ -1688,7 +1722,6 @@ const INTERFACE = {
|
|||||||
valid = true;
|
valid = true;
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
console.log("PRC V=" + valid);
|
|
||||||
|
|
||||||
if(valid) {
|
if(valid) {
|
||||||
// Send message to server for online game.
|
// Send message to server for online game.
|
||||||
@ -1777,7 +1810,7 @@ const INTERFACE = {
|
|||||||
|
|
||||||
replay_jump(turn, animate=false) {
|
replay_jump(turn, animate=false) {
|
||||||
turn = +turn;
|
turn = +turn;
|
||||||
|
|
||||||
if(turn >= 0 && turn <= INTERFACE_DATA.Game.history.length) {
|
if(turn >= 0 && turn <= INTERFACE_DATA.Game.history.length) {
|
||||||
if(turn <= INTERFACE_DATA.Replay.turn) {
|
if(turn <= INTERFACE_DATA.Replay.turn) {
|
||||||
INTERFACE_DATA.Replay.turn = 0;
|
INTERFACE_DATA.Replay.turn = 0;
|
||||||
|
@ -677,6 +677,7 @@ const SCENES = {
|
|||||||
UI.button("1", () => { INTERFACE.load(GAME_CONFIGS.Guide_Check); }),
|
UI.button("1", () => { INTERFACE.load(GAME_CONFIGS.Guide_Check); }),
|
||||||
UI.button("2", () => { INTERFACE.load(GAME_CONFIGS.Guide_Check2); }),
|
UI.button("2", () => { INTERFACE.load(GAME_CONFIGS.Guide_Check2); }),
|
||||||
UI.button("3", () => { INTERFACE.load(GAME_CONFIGS.Guide_Check3); }),
|
UI.button("3", () => { INTERFACE.load(GAME_CONFIGS.Guide_Check3); }),
|
||||||
|
UI.button("4", () => { INTERFACE.load(GAME_CONFIGS.Guide_Check4); }),
|
||||||
], []);
|
], []);
|
||||||
} break;
|
} break;
|
||||||
case "checkmate": {
|
case "checkmate": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user