mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-07-11 15:12:22 +01:00
142 lines
4.7 KiB
Plaintext
142 lines
4.7 KiB
Plaintext
/datum/hud/shell
|
|
var/obj/screen/hud
|
|
tool1
|
|
tool2
|
|
tool3
|
|
charge
|
|
|
|
var/list/last_tools = list()
|
|
var/list/obj/screen/hud/tool_selector_bg = list()
|
|
var/list/obj/item/tool_selector_tools = list()
|
|
var/show_tool_selector = 0
|
|
var/mob/living/silicon/hivebot/master
|
|
|
|
New(M)
|
|
master = M
|
|
|
|
create_screen("", "", 'icons/mob/hud_common.dmi', "hotbar_bg", "CENTER-3:16, SOUTH to CENTER+2:16, SOUTH", HUD_LAYER)
|
|
create_screen("", "", 'icons/mob/hud_common.dmi', "hotbar_side", "CENTER-3:16, SOUTH+1 to CENTER+2:16, SOUTH+1", HUD_LAYER, SOUTH)
|
|
create_screen("", "", 'icons/mob/hud_common.dmi', "hotbar_side", "CENTER-4:16, SOUTH+1", HUD_LAYER, SOUTHWEST)
|
|
create_screen("", "", 'icons/mob/hud_common.dmi', "hotbar_side", "CENTER-4:16, SOUTH", HUD_LAYER, EAST)
|
|
create_screen("", "", 'icons/mob/hud_common.dmi', "hotbar_side", "CENTER+3:16, SOUTH+1", HUD_LAYER, SOUTHEAST)
|
|
create_screen("", "", 'icons/mob/hud_common.dmi', "hotbar_side", "CENTER+3:16, SOUTH", HUD_LAYER, WEST)
|
|
|
|
charge = create_screen("charge", "Battery", 'icons/mob/hud_robot.dmi', "charge4", "CENTER-3:16, SOUTH", HUD_LAYER+1)
|
|
tool1 = create_screen("tool1", "Tool 1", 'icons/mob/hud_robot.dmi', "mod10", "CENTER-2:16, SOUTH", HUD_LAYER+1)
|
|
tool2 = create_screen("tool2", "Tool 2", 'icons/mob/hud_robot.dmi', "mod20", "CENTER-1:16, SOUTH", HUD_LAYER+1)
|
|
tool3 = create_screen("tool3", "Tool 3", 'icons/mob/hud_robot.dmi', "mod30", "CENTER:16, SOUTH", HUD_LAYER+1)
|
|
create_screen("store", "Store", 'icons/mob/hud_robot.dmi', "store", "CENTER+1:16, SOUTH", HUD_LAYER+1)
|
|
create_screen("tools", "Tools", 'icons/mob/hud_robot.dmi', "tools", "CENTER+2:16, SOUTH", HUD_LAYER+1)
|
|
|
|
update_active_tool()
|
|
update_tools()
|
|
update_tool_selector()
|
|
|
|
clear_master()
|
|
master = null
|
|
..()
|
|
|
|
clicked(id)
|
|
if (!master)
|
|
return
|
|
|
|
switch (id)
|
|
if ("tool1")
|
|
master.swap_hand(1)
|
|
if ("tool2")
|
|
master.swap_hand(2)
|
|
if ("tool3")
|
|
master.swap_hand(3)
|
|
if ("store")
|
|
master.uneq_active()
|
|
if ("tools")
|
|
set_show_tool_selector(!show_tool_selector)
|
|
|
|
proc
|
|
update_charge()
|
|
if (master.cell)
|
|
switch(round(100*master.cell.charge/master.cell.maxcharge))
|
|
if(75 to INFINITY)
|
|
charge.icon_state = "charge4"
|
|
if(50 to 75)
|
|
charge.icon_state = "charge3"
|
|
if(25 to 50)
|
|
charge.icon_state = "charge2"
|
|
if(1 to 25)
|
|
charge.icon_state = "charge1"
|
|
else
|
|
charge.icon_state = "charge0"
|
|
else
|
|
charge.icon_state = "charge-none"
|
|
|
|
update_active_tool()
|
|
if (!master.module_active)
|
|
tool1.icon_state = "mod10"
|
|
tool2.icon_state = "mod20"
|
|
tool3.icon_state = "mod30"
|
|
else
|
|
tool1.icon_state = "mod1[master.module_active == master.module_states[1]]"
|
|
tool2.icon_state = "mod2[master.module_active == master.module_states[2]]"
|
|
tool3.icon_state = "mod3[master.module_active == master.module_states[3]]"
|
|
|
|
update_tools()
|
|
for (var/obj/item/I in last_tools)
|
|
remove_object(I)
|
|
var/obj/item/tool1 = master.module_states[1]
|
|
var/obj/item/tool2 = master.module_states[2]
|
|
var/obj/item/tool3 = master.module_states[3]
|
|
if (tool1)
|
|
add_object(tool1, HUD_LAYER+2, "CENTER-2:16, SOUTH")
|
|
if (tool2)
|
|
add_object(tool2, HUD_LAYER+2, "CENTER-1:16, SOUTH")
|
|
if (tool3)
|
|
add_object(tool3, HUD_LAYER+2, "CENTER:16, SOUTH")
|
|
last_tools = master.module_states.Copy()
|
|
|
|
update_tool_selector()
|
|
if (!master.module)
|
|
return
|
|
|
|
for (var/obj/item/tool in tool_selector_tools)
|
|
remove_object(tool)
|
|
|
|
tool_selector_tools.len = 0
|
|
var/i = 0
|
|
for (var/obj/item/tool in master.module.modules)
|
|
if (!(tool in master.module_states))
|
|
tool_selector_tools += tool
|
|
tool.screen_loc = "CENTER+2:16, SOUTH+[1+i]"
|
|
i += 1
|
|
|
|
for (var/obj/screen/hud/H in tool_selector_bg)
|
|
remove_screen(H)
|
|
|
|
|
|
tool_selector_bg.len = 0
|
|
if (tool_selector_tools.len > 0)
|
|
tool_selector_bg += create_screen("", "", 'icons/mob/hud_robot.dmi', "tools-top", "CENTER+2:16, SOUTH+[tool_selector_tools.len]", HUD_LAYER+1)
|
|
if (tool_selector_tools.len > 1)
|
|
tool_selector_bg += create_screen("", "", 'icons/mob/hud_robot.dmi', "tools-mid", "CENTER+2:16, SOUTH+1 to CENTER+2:16, SOUTH+[tool_selector_tools.len-1]", HUD_LAYER+1)
|
|
|
|
if (!show_tool_selector)
|
|
for (var/obj/screen/hud/H in tool_selector_bg) // this is dumb
|
|
remove_screen(H)
|
|
else
|
|
for (var/obj/item/tool in tool_selector_tools)
|
|
add_object(tool, HUD_LAYER+2)
|
|
|
|
set_show_tool_selector(show)
|
|
if (show == show_tool_selector)
|
|
return
|
|
show_tool_selector = show
|
|
if (show)
|
|
for (var/obj/screen/hud/H in tool_selector_bg)
|
|
add_screen(H)
|
|
for (var/obj/item/tool in tool_selector_tools)
|
|
add_object(tool, HUD_LAYER+2)
|
|
else
|
|
for (var/obj/screen/hud/H in tool_selector_bg)
|
|
remove_screen(H)
|
|
for (var/obj/item/tool in tool_selector_tools)
|
|
remove_object(tool)
|