diff --git a/www/js/interface.js b/www/js/interface.js index 2546f0f..42266f3 100644 --- a/www/js/interface.js +++ b/www/js/interface.js @@ -303,9 +303,10 @@ const INTERFACE = { // Check if operation can be performed on new tile. // Otherwise, switch selection. let result = 0; - if(INTERFACE_DATA.select !== null) { - // 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))) { + + // 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.select !== null) { let tile_state = INTERFACE_DATA.Game.board_state[INTERFACE_DATA.hover.tile][1]; result = +(tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat); if(INTERFACE_DATA.select.source == 1) { @@ -325,17 +326,19 @@ const INTERFACE = { } } } - - // Alt move selection. - else if(INTERFACE_DATA.hover.source == 2) { + } + + // Alt move selection. + else if(INTERFACE_DATA.hover.source == 2) { + if(INTERFACE_DATA.select !== null) { if(INTERFACE_DATA.select.source == 0) { let alt_piece = INTERFACE.selection_has_alt(INTERFACE_DATA.select); if(alt_piece !== null) { INTERFACE_DATA.alt_mode = !INTERFACE_DATA.alt_mode; } } - result = 2; } + result = 2; } // Handle player action. @@ -364,24 +367,26 @@ const INTERFACE = { INTERFACE_DATA.select = null; INTERFACE_DATA.alt_mode = false; - // Select tile on board. - if(INTERFACE_DATA.hover.source == 0) { - if(GAME_DATA.board.tiles[INTERFACE_DATA.hover.tile].piece !== null) { - INTERFACE_DATA.select = INTERFACE_DATA.hover; - } - } + switch(INTERFACE_DATA.hover.source) { + // Select tile on board. + case 0: { + if(GAME_DATA.board.tiles[INTERFACE_DATA.hover.tile].piece !== null) { + INTERFACE_DATA.select = INTERFACE_DATA.hover; + } + } break; - // Select tile in pools. - else { - 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; } + // Select tile in pools. + case 1: { + 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; } - let pool_piece = INTERFACE_DATA.hover.tile % 7; - - if(GAME_DATA.pools[pool_player].pieces[pool_piece] > 0) { - INTERFACE_DATA.select = INTERFACE_DATA.hover; - } + let pool_piece = INTERFACE_DATA.hover.tile % 7; + + if(GAME_DATA.pools[pool_player].pieces[pool_piece] > 0) { + INTERFACE_DATA.select = INTERFACE_DATA.hover; + } + } break; } } break; } @@ -1278,8 +1283,8 @@ const INTERFACE = { if(is_select) { border_color = INTERFACE.Color.HintSelectLight; + background_color = INTERFACE.Color.HintSelect; } - if(is_hover) { border_color = INTERFACE.Color.HintHover; } // Draw border