From cf65d5870d735a120a14826d9b8178915717c39a Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Mon, 30 Oct 2023 11:08:56 +0100 Subject: Clicking undo when units are selected will deselect first. Don't show "top level" buttons when a unit is selected. - Reinforcement - Deployment --- rules.js | 58 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/rules.js b/rules.js index 71c970f..7007574 100644 --- a/rules.js +++ b/rules.js @@ -1096,11 +1096,11 @@ exports.view = function(state, player) { view.prompt = `Waiting for ${game.active} \u2014 ${inactive}...` } else { view.actions = {} - states[game.state].prompt() if (game.undo && game.undo.length > 0) view.actions.undo = 1 else view.actions.undo = 0 + states[game.state].prompt() } return view @@ -2221,10 +2221,16 @@ states.gov_reinforcement = { gen_action("improve_border_zone") } } + + // XXX confirmation when no units are activated? + gen_action("end_reinforcement") } else { let first_unit = game.selected[0] let first_unit_loc = unit_loc(first_unit) let first_unit_type = unit_type(first_unit) + + view.actions.undo = 1 + if (first_unit_type === POL && first_unit_loc !== DEPLOY) { view.prompt = "Reinforcement: Remove Police units" @@ -2268,9 +2274,12 @@ states.gov_reinforcement = { } } } - - // XXX confirmation when no units are activated? - gen_action("end_reinforcement") + }, + undo() { + if (game.selected.length > 0) + set_clear(game.selected) + else + pop_undo() }, unit(u) { set_toggle(game.selected, u) @@ -2532,6 +2541,8 @@ states.fln_reinforcement = { if (is_area_country(unit_loc(u))) gen_action_unit(u) }) + + gen_action("end_reinforcement") } else { let first_unit = game.selected[0] let first_unit_loc = unit_loc(first_unit) @@ -2539,6 +2550,7 @@ states.fln_reinforcement = { // Allow deselect gen_action_unit(first_unit) + view.actions.undo = 1 if (first_unit_type === FRONT) { view.prompt = "Reinforcement: Front can build Cadre or Band" @@ -2565,8 +2577,12 @@ states.fln_reinforcement = { gen_action("convert_band_to_failek") } } - - gen_action("end_reinforcement") + }, + undo() { + if (game.selected.length > 0) + set_clear(game.selected) + else + pop_undo() }, unit(u) { set_toggle(game.selected, u) @@ -2640,12 +2656,19 @@ states.gov_deployment = { if ((!set_has(game.deployed, u) && unit_box(u) === OPS) || (is_division_unit(u) && !set_has(game.mode_changed, u) && !is_slow_french_reaction())) gen_action_unit(u) }) + + if (game.helo_avail && can_airmobilize_any_unit()) + gen_action("airmobilize") + + gen_action("end_deployment") } else { let first_unit = game.selected[0] let first_unit_type = unit_type(first_unit) let first_unit_loc = unit_loc(first_unit) let first_unit_box = unit_box(first_unit) + view.actions.undo = 1 + if (first_unit_type == FR_XX && game.selected.length === 1 && !is_slow_french_reaction() && !set_has(game.mode_changed, first_unit)) { if (is_unit_not_neutralized(first_unit) && unit_box(first_unit) === OPS) { view.prompt = "Deploy activated mobile units to PTL or into OPS of another area, or change division mode" @@ -2668,16 +2691,17 @@ states.gov_deployment = { }) } } - - if (game.helo_avail && can_airmobilize_any_unit()) - gen_action("airmobilize") - - gen_action("end_deployment") }, airmobilize() { push_undo() goto_gov_airmobilize() }, + undo() { + if (game.selected.length > 0) + set_clear(game.selected) + else + pop_undo() + }, unit(u) { set_toggle(game.selected, u) }, @@ -2741,11 +2765,15 @@ states.fln_deployment = { if (is_unit_not_neutralized(u) && !is_area_morocco_or_tunisia(loc) && !(is_area_france(loc) && game.deploy_cadre_france)) gen_action_unit(u) }) + + gen_action("end_deployment") } else { let first_unit = game.selected[0] let first_unit_loc = unit_loc(first_unit) let first_unit_type = unit_type(first_unit) + view.actions.undo = 1 + // Allow deselect && more units in same box for_each_friendly_unit_in_loc_box(first_unit_loc, UG, u => { if (is_unit_not_neutralized(u)) { @@ -2774,8 +2802,12 @@ states.fln_deployment = { gen_action_loc(FRANCE) } } - - gen_action("end_deployment") + }, + undo() { + if (game.selected.length > 0) + set_clear(game.selected) + else + pop_undo() }, unit(u) { set_toggle(game.selected, u) -- cgit v1.2.3