From f2468621b2173027ac6e3b85d6fa8b6211e8bf91 Mon Sep 17 00:00:00 2001 From: yukirij Date: Tue, 20 Aug 2024 11:12:52 -0700 Subject: [PATCH] Adjust automatic move scores. --- www/js/interface.js | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/www/js/interface.js b/www/js/interface.js index 1a38b00..34f7d81 100644 --- a/www/js/interface.js +++ b/www/js/interface.js @@ -242,6 +242,23 @@ const INTERFACE = { } }, + release() { + if(INTERFACE_DATA.hover !== null && !INTERFACE.Ui.match_select(INTERFACE_DATA.hover, INTERFACE_DATA.select)) { + let is_valid = false; + if(INTERFACE_DATA.select !== null && INTERFACE_DATA.hover.source == 0 && INTERFACE_DATA.player == (GAME_DATA.turn & 1)) { + let tile_state = INTERFACE_DATA.board_state[INTERFACE_DATA.hover.tile][1]; + is_valid = (tile_state == INTERFACE.TileStatus.Valid || tile_state == INTERFACE.TileStatus.Threat); + } + + // Handle player action. + if(is_valid) { + let play = new GAME.Play(INTERFACE_DATA.select.source, INTERFACE_DATA.select.tile, INTERFACE_DATA.hover.tile); + INTERFACE.process(play); + INTERFACE_DATA.select = null; + } + } + }, + resize() { let width = INTERFACE_DATA.canvas.width = INTERFACE_DATA.canvas.clientWidth; let height = INTERFACE_DATA.canvas.height = INTERFACE_DATA.canvas.clientHeight; @@ -751,6 +768,7 @@ const INTERFACE = { canvas.addEventListener("mousemove", INTERFACE.hover); canvas.addEventListener("mouseout", INTERFACE.unhover); canvas.addEventListener("mousedown", INTERFACE.click); + canvas.addEventListener("mouseup", INTERFACE.release); window.addEventListener("resize", INTERFACE.draw); switch(INTERFACE_DATA.mode) { @@ -786,6 +804,7 @@ const INTERFACE = { GAME.init(); INTERFACE_DATA.player = 0; INTERFACE_DATA.rotate = 0; + INTERFACE_DATA.auto_mode = null; INTERFACE.draw(); }, @@ -924,16 +943,17 @@ const INTERFACE = { auto() { if(INTERFACE_DATA.auto_mode === null) { - console.log("auto on"); - INTERFACE_DATA.auto_mode = ((GAME_DATA.turn & 1) ^ 1); + INTERFACE_DATA.auto_mode = GAME_DATA.rotate ^ 1; + setTimeout(INTERFACE.auto_play, 500); } else { - console.log("auto off"); INTERFACE_DATA.auto_mode = null; } INTERFACE.draw(); }, auto_play() { + if(INTERFACE_DATA.auto_mode !== (GAME_DATA.turn & 1)) { return; } + function state_score(state, player) { let score = 0; let opponent = player ^ 1; @@ -951,7 +971,7 @@ const INTERFACE = { let tile = state.board.tiles[piece.tile]; let hex = HEX.tile_to_hex(tile); - let piece_score = 3 + (5 * (piece.piece + piece.promoted)); + let piece_score = 3 + (4 * (piece.piece + piece.promoted)); if(piece.player == player) { if(tile.threaten[opponent] == 0) { score += piece_score; } @@ -960,8 +980,7 @@ const INTERFACE = { score += piece_score * tile.threaten[player]; } } else { - score -= piece_score; - score -= piece_score * tile.threaten[opponent]; + score -= piece_score - 2; } } }