Fix select handling for pool and alt.
This commit is contained in:
parent
d3838afbdd
commit
ff4cba6775
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user