diff options
author | Joël Simoneau <simoneaujoel@gmail.com> | 2025-03-19 07:38:08 -0400 |
---|---|---|
committer | Joël Simoneau <simoneaujoel@gmail.com> | 2025-03-19 07:38:08 -0400 |
commit | 6f42e218a3c603d96374159f8ca35c5121329f5f (patch) | |
tree | 1cab16b85524813475de273891736e42758434ac | |
parent | 3bdc5569381c9de216a0ec1481266c433bf00df5 (diff) | |
download | vijayanagara-6f42e218a3c603d96374159f8ca35c5121329f5f.tar.gz |
Adding Ping
-rw-r--r-- | play.html | 1 | ||||
-rw-r--r-- | play.js | 9 | ||||
-rw-r--r-- | rules.js | 65 |
3 files changed, 74 insertions, 1 deletions
@@ -42,6 +42,7 @@ <li id="transfer_cavalry_menu" onclick="send_action('transfer_cavalry')">Transfer Cavalry <li id="ask_resources_menu" onclick="send_action('ask_resources')">Ask for Resources <li id="ask_cavalry_menu" onclick="send_action('ask_cavalry')">Ask for Cavalry + <li id="ping_menu" onclick="send_action('ping')">Ping Player </menu> </details> <button onclick="toggle_pieces()"><img src="/images/earth-asia-oceania.svg"></button> @@ -1139,6 +1139,14 @@ function on_update() { ui.dice[i].classList.toggle("action", is_action("die", i)) } + action_menu(document.getElementById("negotiate_menu"), [ + "transfer_resources", + "ask_resources", + "transfer_cavalry", + "ask_cavalry", + "ping" + ]) + // Influence layout_influence() @@ -1211,6 +1219,7 @@ function on_update() { action_button("roll", "Roll") action_button("end_cavalry", "End Cavalry Selection") + action_button("resume", "Resume") action_button("skip", "Skip") action_button("next", "Next") action_button("end_event", "End Event") @@ -155,7 +155,8 @@ exports.view = function (state, role) { else view.prompt = "Unknown state: " + game.state - if (states[game.state] && !states[game.state].disable_negotiation) { + if (states[game.state]) + if (!states[game.state].disable_negotiation) { view.actions.ask_resources = 1 if (game.resources[game.current] > 0) view.actions.transfer_resources = 1 @@ -169,6 +170,13 @@ exports.view = function (state, role) { view.actions.ask_cavalry = 1 else view.actions.ask_cavalry = 0 + view.actions.ping = 1 + } else { + view.actions.ask_resources = 0 + view.actions.transfer_resources = 0 + view.actions.ask_cavalry = 0 + view.actions.transfer_cavalry = 0 + view.actions.ping = 1 } if (view.actions.undo === undefined) { @@ -200,6 +208,8 @@ exports.action = function (state, role, action, arg) { action_transfer_resources() else if (action === "transfer_cavalry") action_transfer_cavalry() + else if (action === "ping") + action_ping() else throw new Error("Invalid action: " + action) } @@ -3351,6 +3361,59 @@ function gen_choose_faction(faction) { } } +/* PING */ + +function action_ping() { + if (!game.ping) + game.ping = { save_current: game.current, save_state: game.state } + game.state = "ping" +} + +states.ping = { + disable_negotiation: true, + inactive: "Ping", + prompt() { + view.prompt = "Ping which faction to respond to chat?" + if (game.current !== DS) + view.actions.ds = 1 + if (game.current !== BK) + view.actions.bk = 1 + if (game.current !== VE) + view.actions.ve = 1 + view.actions.undo = 1 + }, + ds() { + game.current = DS + game.state = "pong" + }, + bk() { + game.current = BK + game.state = "pong" + }, + ve() { + game.current = VE + game.state = "pong" + }, + undo() { + states.pong.resume() + }, +} + +states.pong = { + disable_negotiation: true, + inactive: "Ping", + prompt() { + view.prompt = faction_name[game.ping.save_current] + " has requested your response in chat." + view.actions.resume = 1 + view.actions.undo = 0 + }, + resume() { + game.current = game.ping.save_current + game.state = game.ping.save_state + delete game.ping + }, +} + /* LOGGING */ function log(msg) { |