Fix select handling for pool and alt.

This commit is contained in:
yukirij 2025-02-05 12:56:51 -08:00
parent d3838afbdd
commit ff4cba6775

View File

@ -303,9 +303,10 @@ const INTERFACE = {
// 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) {
// 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))) {
if(INTERFACE_DATA.select !== null) {
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);
if(INTERFACE_DATA.select.source == 1) { if(INTERFACE_DATA.select.source == 1) {
@ -325,17 +326,19 @@ const INTERFACE = {
} }
} }
} }
}
// Alt move selection. // Alt move selection.
else if(INTERFACE_DATA.hover.source == 2) { else if(INTERFACE_DATA.hover.source == 2) {
if(INTERFACE_DATA.select !== null) {
if(INTERFACE_DATA.select.source == 0) { 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) {
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.
@ -364,15 +367,16 @@ const INTERFACE = {
INTERFACE_DATA.select = null; INTERFACE_DATA.select = null;
INTERFACE_DATA.alt_mode = false; INTERFACE_DATA.alt_mode = false;
switch(INTERFACE_DATA.hover.source) {
// Select tile on board. // Select tile on board.
if(INTERFACE_DATA.hover.source == 0) { case 0: {
if(GAME_DATA.board.tiles[INTERFACE_DATA.hover.tile].piece !== null) { if(GAME_DATA.board.tiles[INTERFACE_DATA.hover.tile].piece !== null) {
INTERFACE_DATA.select = INTERFACE_DATA.hover; INTERFACE_DATA.select = INTERFACE_DATA.hover;
} }
} } break;
// Select tile in pools. // Select tile in pools.
else { case 1: {
let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7); let pool_player = Math.floor(INTERFACE_DATA.hover.tile / 7);
pool_player ^= INTERFACE_DATA.player & 1; pool_player ^= INTERFACE_DATA.player & 1;
if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; } if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; }
@ -382,6 +386,7 @@ const INTERFACE = {
if(GAME_DATA.pools[pool_player].pieces[pool_piece] > 0) { if(GAME_DATA.pools[pool_player].pieces[pool_piece] > 0) {
INTERFACE_DATA.select = INTERFACE_DATA.hover; INTERFACE_DATA.select = INTERFACE_DATA.hover;
} }
} break;
} }
} break; } break;
} }
@ -1278,8 +1283,8 @@ const INTERFACE = {
if(is_select) { if(is_select) {
border_color = INTERFACE.Color.HintSelectLight; border_color = INTERFACE.Color.HintSelectLight;
background_color = INTERFACE.Color.HintSelect;
} }
if(is_hover) { border_color = INTERFACE.Color.HintHover; } if(is_hover) { border_color = INTERFACE.Color.HintHover; }
// Draw border // Draw border