Files
2016-03-06 20:52:14 +01:00

129 lines
4.6 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/shell/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()
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.store_active_tool()
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()
tool1.icon_state = "mod1[master.active_tool == 1]"
tool2.icon_state = "mod2[master.active_tool == 2]"
tool3.icon_state = "mod3[master.active_tool == 3]"
update_tools()
for (var/obj/item/I in last_tools)
remove_object(I)
var/obj/item/tool1 = master.active_tools[1]
var/obj/item/tool2 = master.active_tools[2]
var/obj/item/tool3 = master.active_tools[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.active_tools.Copy()
update_tool_selector()
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.tools)
if (!(tool in master.active_tools))
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)