Fix pool selection for dusk player.

This commit is contained in:
yukirij 2024-08-17 15:25:24 -07:00
parent c5e8e6aa2b
commit 354868446e

View File

@ -67,7 +67,8 @@ const INTERFACE = {
} }
} else { } else {
player = Math.floor(selection.tile / 7); player = Math.floor(selection.tile / 7);
player ^= (INTERFACE_DATA.player & 1) ^ INTERFACE_DATA.rotate; 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);
} }
@ -188,7 +189,10 @@ const INTERFACE = {
is_valid = (tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat); is_valid = (tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat);
} }
// Handle player action.
if(is_valid) { if(is_valid) {
// Send message to server for online game.
if(INTERFACE_DATA.online) { if(INTERFACE_DATA.online) {
let move_data = INTERFACE_DATA.select.source | (INTERFACE_DATA.select.tile << 1) | (INTERFACE_DATA.hover.tile << 7); let move_data = INTERFACE_DATA.select.source | (INTERFACE_DATA.select.tile << 1) | (INTERFACE_DATA.hover.tile << 7);
MESSAGE_COMPOSE([ MESSAGE_COMPOSE([
@ -197,7 +201,10 @@ const INTERFACE = {
PACK.u16(GAME_DATA.turn), PACK.u16(GAME_DATA.turn),
PACK.u16(move_data), PACK.u16(move_data),
]); ]);
} else { }
// Apply action and change turn for offline game.
else {
let play = new GAME.Play(INTERFACE_DATA.select.source, INTERFACE_DATA.select.tile, INTERFACE_DATA.hover.tile); let play = new GAME.Play(INTERFACE_DATA.select.source, INTERFACE_DATA.select.tile, INTERFACE_DATA.hover.tile);
INTERFACE_DATA.play = play; INTERFACE_DATA.play = play;
GAME_DATA.process(play); GAME_DATA.process(play);
@ -208,15 +215,24 @@ const INTERFACE = {
INTERFACE.draw(); INTERFACE.draw();
} }
INTERFACE_DATA.select = null; INTERFACE_DATA.select = null;
} else { }
// Handle new selection.
else {
INTERFACE_DATA.select = null; INTERFACE_DATA.select = null;
// Select tile on board.
if(INTERFACE_DATA.hover.source == 0) { if(INTERFACE_DATA.hover.source == 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;
} }
} else { }
// Select tile in pools.
else {
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) ^ INTERFACE_DATA.rotate; pool_player ^= INTERFACE_DATA.player & 1;
if(INTERFACE_DATA.player == 2) { pool_player ^= INTERFACE_DATA.rotate; }
let pool_piece = INTERFACE_DATA.hover.tile % 7; let pool_piece = INTERFACE_DATA.hover.tile % 7;