From 236e9e5e0cb103e46eca741af8f78b6a95d5a503 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Sat, 17 Sep 2022 13:40:32 -0700 Subject: [PATCH] ports launchpad targeting icon. (#15844) --- code/__DEFINES/rendering/atom_hud.dm | 3 +- code/_rendering/atom_huds/data_huds.dm | 4 +- .../machinery/computer/launchpad_control.dm | 5 +++ code/game/machinery/launch_pad.dm | 42 ++++++++++++++++++ icons/effects/effects.dmi | Bin 909214 -> 911008 bytes 5 files changed, 51 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/rendering/atom_hud.dm b/code/__DEFINES/rendering/atom_hud.dm index 067c3f801c..25763c0d63 100644 --- a/code/__DEFINES/rendering/atom_hud.dm +++ b/code/__DEFINES/rendering/atom_hud.dm @@ -24,8 +24,9 @@ #define NANITE_HUD "20" #define DIAG_NANITE_FULL_HUD "21" #define RAD_HUD "22" //radation alerts for medical huds +#define DIAG_LAUNCHPAD_HUD "23" //Displays launchpads' targeting reticle //for antag huds. these are used at the /mob level -#define ANTAG_HUD "23" +#define ANTAG_HUD "24" //by default everything in the hud_list of an atom is an image //a value in hud_list with one of these will change that behavior diff --git a/code/_rendering/atom_huds/data_huds.dm b/code/_rendering/atom_huds/data_huds.dm index d25dcb5380..291923ee4e 100644 --- a/code/_rendering/atom_huds/data_huds.dm +++ b/code/_rendering/atom_huds/data_huds.dm @@ -52,10 +52,10 @@ /datum/atom_hud/data/diagnostic /datum/atom_hud/data/diagnostic/basic - hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_NANITE_FULL_HUD) + hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_NANITE_FULL_HUD, DIAG_LAUNCHPAD_HUD) /datum/atom_hud/data/diagnostic/advanced - hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_NANITE_FULL_HUD, DIAG_PATH_HUD) + hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_NANITE_FULL_HUD, DIAG_PATH_HUD,DIAG_LAUNCHPAD_HUD) /datum/atom_hud/data/bot_path hud_icons = list(DIAG_PATH_HUD) diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index 65c91fad76..4ec80b5bb4 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -100,6 +100,7 @@ var/new_x = text2num(params["x"]) var/new_y = text2num(params["y"]) current_pad.set_offset(new_x, new_y) + current_pad.update_indicator() . = TRUE if("move_pos") var/plus_x = text2num(params["x"]) @@ -108,6 +109,7 @@ x = current_pad.x_offset + plus_x, y = current_pad.y_offset + plus_y ) + current_pad.update_indicator() . = TRUE if("rename") . = TRUE @@ -119,12 +121,15 @@ if(usr && alert(usr, "Are you sure?", "Unlink Launchpad", "I'm Sure", "Abort") != "Abort") launchpads -= current_pad selected_id = null + current_pad.update_indicator() . = TRUE if("launch") teleport(usr, current_pad, TRUE) + current_pad.update_indicator() . = TRUE if("pull") teleport(usr, current_pad, FALSE) + current_pad.update_indicator() . = TRUE . = TRUE diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index fa689cc95f..14a90ff3bf 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -6,6 +6,7 @@ use_power = TRUE idle_power_usage = 200 active_power_usage = 2500 + hud_possible = list(DIAG_LAUNCHPAD_HUD) circuit = /obj/item/circuitboard/machine/launchpad var/icon_teleport = "lpad-beam" var/stationary = TRUE //to prevent briefcase pad deconstruction and such @@ -24,6 +25,25 @@ E += M.rating*15 range = E +/obj/machinery/launchpad/Initialize() + . = ..() + prepare_huds() + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.add_to_hud(src) + + var/image/holder = hud_list[DIAG_LAUNCHPAD_HUD] + var/mutable_appearance/MA = new /mutable_appearance() + MA.icon = 'icons/effects/effects.dmi' + MA.icon_state = "launchpad_target" + MA.layer = ABOVE_OPEN_TURF_LAYER + MA.plane = 0 + holder.appearance = MA + update_indicator() + +/obj/machinery/launchpad/Destroy() + qdel(hud_list[DIAG_LAUNCHPAD_HUD]) + return ..() + /obj/machinery/launchpad/examine(mob/user) . = ..() if(in_range(user, src) || isobserver(user)) @@ -32,6 +52,7 @@ /obj/machinery/launchpad/attackby(obj/item/I, mob/user, params) if(stationary) if(default_deconstruction_screwdriver(user, "lpad-idle-o", "lpad-idle", I)) + update_indicator() return if(panel_open) @@ -63,6 +84,17 @@ return FALSE return TRUE +/obj/machinery/launchpad/proc/update_indicator() + var/image/holder = hud_list[DIAG_LAUNCHPAD_HUD] + var/turf/target_turf + if(isAvailable()) + target_turf = locate(x + x_offset, y + y_offset, z) + if(target_turf) + holder.icon_state = indicator_icon + holder.loc = target_turf + else + holder.icon_state = null + /obj/machinery/launchpad/proc/set_offset(x, y) if(teleporting) return @@ -89,11 +121,13 @@ flick(icon_teleport, src) + //Change the indicator's icon to show that we're teleporting if(sending) indicator_icon = "launchpad_launch" else indicator_icon = "launchpad_pull" + update_indicator() playsound(get_turf(src), 'sound/weapons/flash.ogg', 25, TRUE) teleporting = TRUE @@ -103,6 +137,7 @@ //Set the indicator icon back to normal indicator_icon = "launchpad_target" + update_indicator() if(QDELETED(src) || !isAvailable()) return @@ -213,6 +248,7 @@ if(do_after(usr, 30, target = usr)) usr.put_in_hands(briefcase) moveToNullspace() //hides it from suitcase contents + update_indicator() closed = TRUE /obj/machinery/launchpad/briefcase/attackby(obj/item/I, mob/user, params) @@ -249,6 +285,7 @@ user.visible_message("[user] starts setting down [src]...", "You start setting up [pad]...") if(do_after(user, 30, target = user)) pad.forceMove(get_turf(src)) + pad.update_indicator() pad.closed = FALSE user.transferItemToLoc(src, pad, TRUE) SEND_SIGNAL(src, COMSIG_TRY_STORAGE_HIDE_ALL) @@ -322,6 +359,7 @@ var/new_x = text2num(params["x"]) var/new_y = text2num(params["y"]) pad.set_offset(new_x, new_y) + pad.update_indicator() . = TRUE if("move_pos") var/plus_x = text2num(params["x"]) @@ -330,6 +368,7 @@ x = pad.x_offset + plus_x, y = pad.y_offset + plus_y ) + pad.update_indicator() . = TRUE if("rename") . = TRUE @@ -340,12 +379,15 @@ if("remove") . = TRUE if(usr && alert(usr, "Are you sure?", "Unlink Launchpad", "I'm Sure", "Abort") != "Abort") + pad.update_indicator() pad = null if("launch") sending = TRUE teleport(usr, pad) + pad.update_indicator() . = TRUE if("pull") sending = FALSE teleport(usr, pad) + pad.update_indicator() . = TRUE diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 2614e352114d5eb3ef89d36fbce1a438d459c40a..be99d57a3d70c72e31761b10e343635da616871a 100644 GIT binary patch delta 12991 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 H_L2Vwq65Px delta 11183 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