mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-07-17 10:02:21 +01:00
333 lines
10 KiB
Plaintext
333 lines
10 KiB
Plaintext
/datum/hud/pod
|
|
var/obj/screen/hud
|
|
engine
|
|
life_support
|
|
comms
|
|
sensors
|
|
sensors_use
|
|
weapon
|
|
secondary
|
|
lock
|
|
set_code
|
|
rts
|
|
wormhole
|
|
use_comms
|
|
leave
|
|
lights
|
|
tracking
|
|
sensor_lock
|
|
|
|
click_check = 0
|
|
var/image/missing
|
|
var/datum/healthBar/health_bar
|
|
var/obj/machinery/vehicle/master
|
|
|
|
New(P)
|
|
master = P
|
|
missing = image('icons/mob/hud_pod.dmi', "marker")
|
|
engine = create_screen("engine", "Engine", 'icons/mob/hud_pod.dmi', "engine-off", "NORTH+1,WEST", tooltipTheme = "pod-alt")
|
|
wormhole = create_screen("wormhole", "Create Wormhole", 'icons/mob/hud_pod.dmi', "wormhole", "NORTH+1,WEST+1", tooltipTheme = "pod")
|
|
life_support = create_screen("life_support", "Life Support", 'icons/mob/hud_pod.dmi', "life_support-off", "NORTH+1,WEST+2", tooltipTheme = "pod-alt")
|
|
comms = create_screen("comms", "Comms", 'icons/mob/hud_pod.dmi', "comms-off", "NORTH+1,WEST+3", tooltipTheme = "pod-alt")
|
|
use_comms = create_screen("comms_system", "Use Comms System", 'icons/mob/hud_pod.dmi', "comms_system", "NORTH+1,WEST+4", tooltipTheme = "pod")
|
|
sensors = create_screen("sensors", "Sensors", 'icons/mob/hud_pod.dmi', "sensors-off", "NORTH+1,WEST+5", tooltipTheme = "pod-alt")
|
|
sensors_use = create_screen("sensors_use", "Activate Sensors", 'icons/mob/hud_pod.dmi', "sensors-use", "NORTH+1,WEST+6", tooltipTheme = "pod")
|
|
weapon = create_screen("weapon", "Main Weapon", 'icons/mob/hud_pod.dmi', "weapon-off", "NORTH+1,WEST+7", tooltipTheme = "pod-alt")
|
|
lights = create_screen("lights", "Toggle Lights", 'icons/mob/hud_pod.dmi', "lights_off", "NORTH+1, WEST+8", tooltipTheme = "pod")
|
|
secondary = create_screen("secondary", "Secondary System", 'icons/mob/hud_pod.dmi', "blank", "NORTH+1,WEST+9", tooltipTheme = "pod")
|
|
lock = create_screen("lock", "Lock", 'icons/mob/hud_pod.dmi', "weapon-off", "NORTH+1,WEST+10", tooltipTheme = "pod-alt")
|
|
set_code = create_screen("set_code", "Set Lock code", 'icons/mob/hud_pod.dmi', "set-code", "NORTH+1,WEST+11", tooltipTheme = "pod")
|
|
rts = create_screen("return_to_station", "Return To [capitalize(station_or_ship())]", 'icons/mob/hud_pod.dmi', "return-to-station", "NORTH+1,WEST+12", tooltipTheme = "pod")
|
|
leave = create_screen("leave", "Leave Pod", 'icons/mob/hud_pod.dmi', "leave", "SOUTH,EAST", tooltipTheme = "pod-alt")
|
|
tracking = create_screen("tracking", "Tracking Indicator", 'icons/mob/hud_pod.dmi', "off", "CENTER, CENTER")
|
|
tracking.mouse_opacity = 0
|
|
sensor_lock = create_screen("sensor_lock", "Sensor Lock", 'icons/mob/hud_pod.dmi', "off", "SOUTH+1,EAST")
|
|
sensor_lock.mouse_opacity = 0 //maybe set to one, so that clicking on it will explain what it is
|
|
health_bar = new(3)
|
|
health_bar.add_to_hud(src)
|
|
if (master)
|
|
update_health()
|
|
update_systems()
|
|
update_states()
|
|
|
|
clear_master()
|
|
master = null
|
|
..()
|
|
|
|
proc/detach_all_clients()
|
|
for (var/client/C in clients)
|
|
remove_client(C)
|
|
|
|
if (C.tooltipHolder)
|
|
C.tooltipHolder.inPod = 0
|
|
|
|
proc/check_clients()
|
|
for (var/client/C in clients)
|
|
var/mob/M = C.mob
|
|
if (M.loc != master)
|
|
remove_client(C)
|
|
|
|
if (C.tooltipHolder)
|
|
C.tooltipHolder.inPod = 0
|
|
|
|
proc/update_health()
|
|
check_clients()
|
|
health_bar.update_health_overlay(master.health, master.maxhealth, 0, 0)
|
|
|
|
proc/update_states()
|
|
check_clients()
|
|
if (master.engine)
|
|
if (master.engine.active)
|
|
engine.icon_state = "engine-on"
|
|
wormhole.overlays.len = 0
|
|
else
|
|
engine.icon_state = "engine-off"
|
|
if (!wormhole.overlays.len)
|
|
wormhole.overlays += missing
|
|
|
|
if (master.life_support)
|
|
if (master.life_support.active)
|
|
life_support.icon_state = "life_support-on"
|
|
else
|
|
life_support.icon_state = "life_support-off"
|
|
|
|
if (master.com_system)
|
|
if (master.com_system.active)
|
|
comms.icon_state = "comms-on"
|
|
rts.overlays.len = 0
|
|
use_comms.overlays.len = 0
|
|
else
|
|
comms.icon_state = "comms-off"
|
|
if (!rts.overlays.len)
|
|
rts.overlays += missing
|
|
if (!use_comms.overlays.len)
|
|
use_comms.overlays += missing
|
|
|
|
if (master.m_w_system)
|
|
if (master.m_w_system.active)
|
|
weapon.icon_state = "weapon-on"
|
|
else
|
|
weapon.icon_state = "weapon-off"
|
|
|
|
if (master.sec_system)
|
|
if (master.sec_system.f_active)
|
|
secondary.icon_state = master.sec_system.hud_state
|
|
else if (master.sec_system.active)
|
|
secondary.icon_state = "[master.sec_system.hud_state]-on"
|
|
else
|
|
secondary.icon_state = "[master.sec_system.hud_state]-off"
|
|
|
|
if (master.sensors)
|
|
if (master.sensors.active)
|
|
sensors.icon_state = "sensors-on"
|
|
sensors_use.overlays.len = 0
|
|
else
|
|
sensors.icon_state = "sensors-off"
|
|
if (!sensors_use.overlays.len)
|
|
sensors_use.overlays += missing
|
|
|
|
if (master.lock)
|
|
if (master.lock.code && master.locked)
|
|
lock.icon_state = "lock-locked"
|
|
else
|
|
lock.icon_state = "lock-unlocked"
|
|
if (master.lights)
|
|
if (master.lights.active)
|
|
lights.icon_state = "lights_on"
|
|
else
|
|
lights.icon_state = "lights_off"
|
|
|
|
|
|
proc/update_systems()
|
|
check_clients()
|
|
if (master.engine)
|
|
engine.name = master.engine.name
|
|
engine.overlays.len = 0
|
|
else
|
|
engine.name = "Engine"
|
|
if (!engine.overlays.len)
|
|
engine.overlays += missing
|
|
|
|
if (master.life_support)
|
|
life_support.name = master.life_support.name
|
|
life_support.overlays.len = 0
|
|
else
|
|
life_support.name = "Life Support"
|
|
if (!life_support.overlays.len)
|
|
life_support.overlays += missing
|
|
|
|
if (master.com_system)
|
|
comms.name = master.com_system.name
|
|
comms.overlays.len = 0
|
|
if (!master.com_system.active)
|
|
if (!rts.overlays.len)
|
|
rts.overlays += missing
|
|
if (!use_comms.overlays.len)
|
|
use_comms.overlays += missing
|
|
else
|
|
rts.overlays.len = 0
|
|
use_comms.overlays.len = 0
|
|
else
|
|
comms.name = "Comms"
|
|
if (!comms.overlays.len)
|
|
comms.overlays += missing
|
|
if (!rts.overlays.len)
|
|
rts.overlays += missing
|
|
if (!use_comms.overlays.len)
|
|
use_comms.overlays += missing
|
|
|
|
if (master.m_w_system)
|
|
weapon.name = master.m_w_system.name
|
|
weapon.overlays.len = 0
|
|
else
|
|
weapon.name = "Main Weapon"
|
|
if (!weapon.overlays.len)
|
|
weapon.overlays += missing
|
|
|
|
if (master.sec_system)
|
|
secondary.name = master.sec_system.name
|
|
secondary.overlays.len = 0
|
|
else
|
|
secondary.name = "Secondary System"
|
|
if (!secondary.overlays.len)
|
|
secondary.overlays += missing
|
|
secondary.icon_state = "blank"
|
|
|
|
if (master.sensors)
|
|
sensors.name = master.sensors.name
|
|
sensors.overlays.len = 0
|
|
if (!master.sensors.active)
|
|
sensors_use.overlays.len = 0
|
|
else
|
|
if (!sensors_use.overlays.len)
|
|
sensors_use.overlays += missing
|
|
else
|
|
sensors.name = "Sensors"
|
|
if (!sensors.overlays.len)
|
|
sensors.overlays += missing
|
|
if (!sensors_use.overlays.len)
|
|
sensors_use.overlays += missing
|
|
|
|
if (master.lock)
|
|
lock.name = master.lock.name
|
|
lock.overlays.len = 0
|
|
set_code.overlays.len = 0
|
|
else
|
|
lock.name = "Lock"
|
|
if (!lock.overlays.len)
|
|
lock.overlays += missing
|
|
if (!set_code.overlays.len)
|
|
set_code.overlays += missing
|
|
if (master.lights)
|
|
lights.name = master.lights.name
|
|
lights.overlays.len = 0
|
|
else
|
|
lights.name = "Lights"
|
|
if (!lights.overlays.len)
|
|
lights.overlays += missing
|
|
|
|
clicked(id, mob/user, list/params)
|
|
if (user.loc != master)
|
|
boutput(user, "<span style=\"color:red\">You're not in the pod doofus. (Call 1-800-CODER.)</span>")
|
|
remove_client(user.client)
|
|
|
|
if (user.client.tooltipHolder)
|
|
user.client.tooltipHolder.inPod = 0
|
|
|
|
return
|
|
if (user.getStatusDuration("stunned") > 0 || user.getStatusDuration("weakened") || user.getStatusDuration("paralysis") > 0 || !isalive(user))
|
|
boutput(user, "<span style=\"color:red\">Not when you are incapacitated.</span>")
|
|
return
|
|
// WHAT THE FUCK PAST MARQUESAS
|
|
// GET IT TOGETHER
|
|
// - Future Marquesas
|
|
// switch ("id")
|
|
switch (id)
|
|
if ("engine")
|
|
if (master.engine)
|
|
if (user != master.pilot)
|
|
boutput(user, "<span style=\"color:red\">Only the pilot may do that!</span>")
|
|
return
|
|
master.engine.toggle()
|
|
if ("life_support")
|
|
if (master.life_support)
|
|
master.life_support.toggle()
|
|
if ("comms")
|
|
if (master.com_system)
|
|
master.com_system.toggle()
|
|
update_systems()
|
|
if ("comms_system")
|
|
if(master.com_system)
|
|
if(master.com_system.active)
|
|
master.com_system.External()
|
|
else
|
|
boutput(usr, "[master.ship_message("SYSTEM OFFLINE")]")
|
|
else
|
|
boutput(usr, "[master.ship_message("System not installed in ship!")]")
|
|
if ("weapon")
|
|
if (master.m_w_system)
|
|
master.m_w_system.toggle()
|
|
if ("secondary")
|
|
if (master.sec_system)
|
|
master.sec_system.toggle()
|
|
if ("sensors")
|
|
if (master.sensors)
|
|
master.sensors.toggle()
|
|
if ("sensors_use")
|
|
if (master.sensors && master.sensors.active)
|
|
master.sensors.opencomputer(usr)
|
|
if ("lock")
|
|
if (master.lock)
|
|
if (!master.lock.code || master.lock.code == "")
|
|
master.lock.configure_mode = 1
|
|
if (master)
|
|
master.locked = 0
|
|
master.lock.code = ""
|
|
|
|
boutput(usr, "<span style=\"color:blue\">Code reset. Please type new code and press enter.</span>")
|
|
master.lock.show_lock_panel(usr)
|
|
else if (!master.locked)
|
|
master.locked = 1
|
|
boutput(usr, "<span style=\"color:red\">The lock mechanism clunks locked.</span>")
|
|
else if (master.locked)
|
|
master.locked = 0
|
|
boutput(usr, "<span style=\"color:red\">The ship mechanism clicks unlocked.</span>")
|
|
if ("set_code")
|
|
if (master.lock)
|
|
master.lock.configure_mode = 1
|
|
if (master)
|
|
master.locked = 0
|
|
master.lock.code = ""
|
|
boutput(usr, "<span style=\"color:blue\">Code reset. Please type new code and press enter.</span>")
|
|
master.lock.show_lock_panel(usr)
|
|
if ("return_to_station")
|
|
if(master.com_system)
|
|
if(master.com_system.active)
|
|
master.going_home = 1
|
|
else
|
|
boutput(usr, "[master.ship_message("SYSTEM OFFLINE")]")
|
|
else
|
|
boutput(usr, "[master.ship_message("System not installed in ship!")]")
|
|
if ("leave")
|
|
master.eject(usr)
|
|
if ("wormhole") //HEY THIS DOES SAMETHING AS CLIENT WORMHOLE PROC IN VEHICLE.DM
|
|
if(master.engine && !istype(master,/obj/machinery/vehicle/tank/car))
|
|
if(master.engine.active)
|
|
if(master.engine.ready)
|
|
var/turf/T = master.loc
|
|
if (istype(T) && T.allows_vehicles)
|
|
master.engine.Wormhole()
|
|
else
|
|
boutput(usr, "[master.ship_message("Cannot create wormhole on this flooring!")]")
|
|
else
|
|
boutput(usr, "[master.ship_message("Engine recharging wormhole capabilities!")]")
|
|
else
|
|
boutput(usr, "[master.ship_message("SYSTEM OFFLINE")]")
|
|
else
|
|
boutput(usr, "[master.ship_message("System not installed in ship!")]")
|
|
if ("lights")
|
|
if (master.lights)
|
|
master.lights.toggle()
|
|
|
|
update_states()
|