Files
Aurora.3/code/modules/heavy_vehicle/interface/_interface.dm
mikomyazaki 6074224d00 dreamchecker (#8233)
Implements dreamchecker plus fixes all errors
2020-02-16 20:42:32 +02:00

107 lines
3.3 KiB
Plaintext

#define BAR_CAP 12
/mob/living/heavy_vehicle/proc/refresh_hud()
if(LAZYLEN(pilots))
for(var/thing in pilots)
var/mob/pilot = thing
if(pilot.client)
pilot.client.screen |= hud_elements
if(client)
client.screen |= hud_elements
/mob/living/heavy_vehicle/instantiate_hud()
zone_sel = new
if(!LAZYLEN(hud_elements))
var/i = 1
for(var/hardpoint in hardpoints)
var/obj/screen/movable/mecha/hardpoint/H = new(src, hardpoint)
H.screen_loc = "1:6,[15-i]" //temp
hud_elements |= H
hardpoint_hud_elements[hardpoint] = H
i++
var/list/additional_hud_elements = list(
/obj/screen/movable/mecha/toggle/maint,
/obj/screen/movable/mecha/eject,
/obj/screen/movable/mecha/toggle/hardpoint,
/obj/screen/movable/mecha/toggle/hatch,
/obj/screen/movable/mecha/toggle/hatch_open,
/obj/screen/movable/mecha/radio,
/obj/screen/movable/mecha/toggle/camera,
/obj/screen/movable/mecha/rename
)
if(body && body.pilot_coverage >= 100)
additional_hud_elements += /obj/screen/movable/mecha/toggle/air
i = 0
var/pos = 7
for(var/additional_hud in additional_hud_elements)
var/obj/screen/movable/mecha/M = new additional_hud(src)
M.screen_loc = "1:6,[pos]:[i * -12]"
hud_elements |= M
i++
if(i == 3)
pos--
i = 0
hud_health = new /obj/screen/movable/mecha/health(src)
hud_health.screen_loc = "EAST-1:28,CENTER-3:11"
hud_elements |= hud_health
hud_open = locate(/obj/screen/movable/mecha/toggle/hatch_open) in hud_elements
hud_power = new /obj/screen/movable/mecha/power(src)
hud_power.screen_loc = "EAST-1:12,CENTER-4:25"
hud_elements |= hud_power
refresh_hud()
/mob/living/heavy_vehicle/handle_hud_icons()
for(var/hardpoint in hardpoint_hud_elements)
var/obj/screen/movable/mecha/hardpoint/H = hardpoint_hud_elements[hardpoint]
if(H) H.update_system_info()
handle_hud_icons_health()
var/obj/item/cell/C = get_cell()
if(istype(C))
hud_power.maptext = "[round(get_cell()?.charge)]/[round(get_cell()?.maxcharge)]"
else hud_power.maptext = "CHECK POWER"
refresh_hud()
/mob/living/heavy_vehicle/handle_hud_icons_health()
hud_health.overlays.Cut()
if(!body || !get_cell() || (get_cell().charge <= 0))
return
if(!body.diagnostics || !body.diagnostics.is_functional() || ((emp_damage>EMP_GUI_DISRUPT) && prob(emp_damage*2)))
if(!global.mecha_damage_overlay_cache["critfail"])
global.mecha_damage_overlay_cache["critfail"] = image(icon='icons/mecha/mecha_hud.dmi',icon_state="dam_error")
hud_health.overlays |= global.mecha_damage_overlay_cache["critfail"]
return
var/list/part_to_state = list("legs" = legs,"body" = body,"head" = head,"arms" = arms)
for(var/part in part_to_state)
var/state = 0
var/obj/item/mech_component/MC = part_to_state[part]
if(MC)
if((emp_damage>EMP_GUI_DISRUPT) && prob(emp_damage*3))
state = rand(0,4)
else
state = MC.damage_state
if(!global.mecha_damage_overlay_cache["[part]-[state]"])
var/image/I = image(icon='icons/mecha/mecha_hud.dmi',icon_state="dam_[part]")
switch(state)
if(1)
I.color = "#00ff00"
if(2)
I.color = "#f2c50d"
if(3)
I.color = "#ea8515"
if(4)
I.color = "#ff0000"
else
I.color = "#f5f5f0"
global.mecha_damage_overlay_cache["[part]-[state]"] = I
hud_health.overlays |= global.mecha_damage_overlay_cache["[part]-[state]"]