Files
2020-02-16 19:40:21 -08:00

56 lines
2.3 KiB
Plaintext

datum/pump_ui
var/pump_name
var/value_name
var/value_units
// Min and max values for the pump control to have
var/min_value
var/max_value
// Increments for the + and - buttons
var/incr_sm
var/incr_lg
// These need to be overridden in the children
datum/pump_ui/proc/set_value(value_to_set)
CRASH("Non-overridden proc in datum/pump_ui")
datum/pump_ui/proc/toggle_power()
CRASH("Non-overridden proc in datum/pump_ui")
datum/pump_ui/proc/is_on()
CRASH("Non-overridden proc in datum/pump_ui")
datum/pump_ui/proc/get_value()
CRASH("Non-overridden proc in datum/pump_ui")
datum/pump_ui/proc/get_atom()
CRASH("Non-overridden proc in datum/pump_ui")
// Checks user validity
datum/pump_ui/proc/validate_user(mob/user as mob)
return !(user.stat || user.restrained())
// Processes clicks on the links in the UI
datum/pump_ui/Topic(href, href_list)
// boutput(world, "Received topic to pump ui: [list2params(href_list)]")
if(!validate_user(usr))
return
if(href_list["ui_target"] == "pump_ui")
if(href_list["ui_action"] == "set_value")
var/value_to_set = input(usr, "[value_name] ([min_value] - [max_value] [value_units]):", "Enter new value", get_value()) as num
if(isnum(value_to_set))
set_value(CLAMP(value_to_set, min_value, max_value))
else if(href_list["ui_action"] == "toggle_power")
toggle_power()
else if(href_list["ui_action"] == "bump_value")
set_value(CLAMP(get_value() + text2num(href_list["bump_value"]), min_value, max_value))
show_ui(usr)
// Displays the UI
datum/pump_ui/proc/show_ui(mob/user)
if (user.client.tooltipHolder)
user.client.tooltipHolder.showClickTip(get_atom(), user, list("title" = src.pump_name, "content" = render()))
// Generates the HTML
datum/pump_ui/proc/render()
return {"
<span>[is_on() ? "Active" : "Inactive"]</span>
<a href="?src=\ref[src]&ui_target=pump_ui&ui_action=toggle_power">Toggle Power</a>
<br />
<span>[value_name]:
<a href="?src=\ref[src]&ui_target=pump_ui&ui_action=bump_value&bump_value=[-incr_lg]">-</a>
<a href="?src=\ref[src]&ui_target=pump_ui&ui_action=bump_value&bump_value=[-incr_sm]">-</a>
<a href="?src=\ref[src]&ui_target=pump_ui&ui_action=set_value">[get_value()] [value_units]</a>
<a href="?src=\ref[src]&ui_target=pump_ui&ui_action=bump_value&bump_value=[incr_sm]">+</a>
<a href="?src=\ref[src]&ui_target=pump_ui&ui_action=bump_value&bump_value=[incr_lg]">+</a>
"}