diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 8b682d1f09..f018a8e594 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -9,14 +9,6 @@ holder_type = /obj/machinery/door/airlock wire_count = 12 window_y = 570 - var/datum/wire_hint/bolt_lock_hint - var/datum/wire_hint/bolt_light_hint - var/datum/wire_hint/power_hint - var/datum/wire_hint/backup_power_hint - var/datum/wire_hint/ai_control_hint - var/datum/wire_hint/safeties_hint - var/datum/wire_hint/speed_hint - var/datum/wire_hint/id_scan_hint var/const/AIRLOCK_WIRE_IDSCAN = 1 var/const/AIRLOCK_WIRE_MAIN_POWER1 = 2 @@ -31,27 +23,6 @@ var/const/AIRLOCK_WIRE_SAFETY = 512 var/const/AIRLOCK_WIRE_SPEED = 1024 var/const/AIRLOCK_WIRE_LIGHT = 2048 -/datum/wires/airlock/make_wire_hints() - bolt_lock_hint = new("The door bolts have fallen!", "The door bolts look up.") - bolt_light_hint = new("The door bolt lights are on.", "The door bolt lights are off!") - power_hint = new("The test light is on.", "The test light is off!") - backup_power_hint = new("The backup power light is off!", "The backup power light is on.") - ai_control_hint = new("The 'AI control allowed' light is on.", "The 'AI control allowed' light is off.") - safeties_hint = new("The 'Check Wiring' light is on.", "The 'Check Wiring' light is off.") - speed_hint = new("The 'Check Timing Mechanism' light is on.", "The 'Check Timing Mechanism' light is off.") - id_scan_hint = new("The IDScan light is on.", "The IDScan light is off.") - -/datum/wires/airlock/Destroy() - bolt_lock_hint = null - bolt_light_hint = null - power_hint = null - backup_power_hint = null - ai_control_hint = null - safeties_hint = null - speed_hint = null - id_scan_hint = null - return ..() - /datum/wires/airlock/CanUse(var/mob/living/L) var/obj/machinery/door/airlock/A = holder if(!istype(L, /mob/living/silicon)) @@ -67,14 +38,14 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 var/haspower = A.arePowerSystemsOn() //If there's no power, then no lights will be on. . += ..() - . += bolt_lock_hint.show(A.locked) - . += bolt_light_hint.show(A.lights && haspower) - . += power_hint.show(haspower) - . += backup_power_hint.show(A.backup_power_lost_until) - . += ai_control_hint.show(A.aiControlDisabled == 0 && !A.emagged && haspower) - . += safeties_hint.show(A.safe == 0 && haspower) - . += speed_hint.show(A.normalspeed == 0 && haspower) - . += id_scan_hint.show(A.aiDisabledIdScanner == 0 && haspower) + . += show_hint(0x01, A.locked, "The door bolts have fallen!", "The door bolts look up.") + . += show_hint(0x02, A.lights && haspower, "The door bolt lights are on.", "The door bolt lights are off!") + . += show_hint(0x04, haspower, "The test light is on.", "The test light is off!") + . += show_hint(0x08, A.backup_power_lost_until, "The backup power light is off!", "The backup power light is on.") + . += show_hint(0x10, A.aiControlDisabled == 0 && !A.emagged && haspower, "The 'AI control allowed' light is on.", "The 'AI control allowed' light is off.") + . += show_hint(0x20, A.safe == 0 && haspower, "The 'Check Wiring' light is on.", "The 'Check Wiring' light is off.") + . += show_hint(0x40, A.normalspeed == 0 && haspower, "The 'Check Timing Mechanism' light is on.", "The 'Check Timing Mechanism' light is off.") + . += show_hint(0x80, A.aiDisabledIdScanner == 0 && haspower, "The IDScan light is on.", "The IDScan light is off.") /datum/wires/airlock/UpdateCut(var/index, var/mended) diff --git a/code/datums/wires/alarm.dm b/code/datums/wires/alarm.dm index 712e2aa7e4..7c56bd4e52 100644 --- a/code/datums/wires/alarm.dm +++ b/code/datums/wires/alarm.dm @@ -1,9 +1,6 @@ /datum/wires/alarm holder_type = /obj/machinery/alarm wire_count = 5 - var/datum/wire_hint/lock_hint - var/datum/wire_hint/power_hint - var/datum/wire_hint/ai_control_hint var/const/AALARM_WIRE_IDSCAN = 1 var/const/AALARM_WIRE_POWER = 2 @@ -11,18 +8,6 @@ var/const/AALARM_WIRE_SYPHON = 4 var/const/AALARM_WIRE_AI_CONTROL = 8 var/const/AALARM_WIRE_AALARM = 16 - -/datum/wires/alarm/make_wire_hints() - lock_hint = new("The Air Alarm is locked.", "The Air Alarm is unlocked.") - power_hint = new("The Air Alarm is offline.", "The Air Alarm is working properly!") - ai_control_hint = new("The 'AI control allowed' light is off.", "The 'AI control allowed' light is on.") - -/datum/wires/alarm/Destroy() - lock_hint = null - power_hint = null - ai_control_hint = null - return ..() - /datum/wires/alarm/CanUse(var/mob/living/L) var/obj/machinery/alarm/A = holder if(A.panel_open) @@ -32,9 +17,9 @@ var/const/AALARM_WIRE_AALARM = 16 /datum/wires/alarm/GetInteractWindow() var/obj/machinery/alarm/A = holder . += ..() - . += lock_hint.show(A.locked) - . += power_hint.show(A.shorted || (A.stat & (NOPOWER|BROKEN))) - . += ai_control_hint.show(A.aidisabled) + . += show_hint(0x1, A.locked, "The Air Alarm is locked.", "The Air Alarm is unlocked.") + . += show_hint(0x2, A.shorted || (A.stat & (NOPOWER|BROKEN)), "The Air Alarm is offline.", "The Air Alarm is working properly!") + . += show_hint(0x4, A.aidisabled, "The 'AI control allowed' light is off.", "The 'AI control allowed' light is on.") /datum/wires/alarm/UpdateCut(var/index, var/mended) var/obj/machinery/alarm/A = holder diff --git a/code/datums/wires/apc.dm b/code/datums/wires/apc.dm index 0b00297b41..1b7f43d21f 100644 --- a/code/datums/wires/apc.dm +++ b/code/datums/wires/apc.dm @@ -1,32 +1,18 @@ /datum/wires/apc holder_type = /obj/machinery/power/apc wire_count = 4 - var/datum/wire_hint/lock_hint - var/datum/wire_hint/power_hint - var/datum/wire_hint/ai_control_hint #define APC_WIRE_IDSCAN 1 #define APC_WIRE_MAIN_POWER1 2 #define APC_WIRE_MAIN_POWER2 4 #define APC_WIRE_AI_CONTROL 8 -/datum/wires/apc/make_wire_hints() - lock_hint = new("The APC is locked.", "The APC is unlocked.") - power_hint = new("The APCs power has been shorted.", "The APC is working properly!") - ai_control_hint = new("The 'AI control allowed' light is off.", "The 'AI control allowed' light is on.") - -/datum/wires/apc/Destroy() - lock_hint = null - power_hint = null - ai_control_hint = null - return ..() - /datum/wires/apc/GetInteractWindow() var/obj/machinery/power/apc/A = holder . += ..() - . += lock_hint.show(A.locked) - . += power_hint.show(A.shorted) - . += ai_control_hint.show(A.aidisabled) + . += show_hint(0x1, A.locked, "The APC is locked.", "The APC is unlocked.") + . += show_hint(0x2, A.shorted, "The APCs power has been shorted.", "The APC is working properly!") + . += show_hint(0x4, A.aidisabled, "The 'AI control allowed' light is off.", "The 'AI control allowed' light is on.") /datum/wires/apc/CanUse(var/mob/living/L) diff --git a/code/datums/wires/autolathe.dm b/code/datums/wires/autolathe.dm index fee656cf2f..df625351b8 100644 --- a/code/datums/wires/autolathe.dm +++ b/code/datums/wires/autolathe.dm @@ -2,31 +2,17 @@ holder_type = /obj/machinery/autolathe wire_count = 6 - var/datum/wire_hint/disable_hint - var/datum/wire_hint/shock_hint - var/datum/wire_hint/hack_hint var/const/AUTOLATHE_HACK_WIRE = 1 var/const/AUTOLATHE_SHOCK_WIRE = 2 var/const/AUTOLATHE_DISABLE_WIRE = 4 -/datum/wires/autolathe/make_wire_hints() - disable_hint = new("The red light is off.", "The red light is on.") - shock_hint = new("The green light is off.", "The green light is on.") - hack_hint = new("The blue light is off.", "The blue light is on.") - -/datum/wires/autolathe/Destroy() - disable_hint = null - shock_hint = null - hack_hint = null - return ..() - /datum/wires/autolathe/GetInteractWindow() var/obj/machinery/autolathe/A = holder . += ..() - . += disable_hint.show(A.disabled) - . += shock_hint.show(A.shocked) - . += hack_hint.show(A.hacked) + . += show_hint(0x1, A.disabled, "The red light is off.", "The red light is on.") + . += show_hint(0x2, A.shocked, "The green light is off.", "The green light is on.") + . += show_hint(0x4, A.hacked, "The blue light is off.", "The blue light is on.") /datum/wires/autolathe/CanUse() var/obj/machinery/autolathe/A = holder diff --git a/code/datums/wires/camera.dm b/code/datums/wires/camera.dm index df377c24e3..67210e2179 100644 --- a/code/datums/wires/camera.dm +++ b/code/datums/wires/camera.dm @@ -4,31 +4,14 @@ random = 1 holder_type = /obj/machinery/camera wire_count = 6 - var/datum/wire_hint/view_hint - var/datum/wire_hint/power_hint - var/datum/wire_hint/light_hint - var/datum/wire_hint/alarm_hint - -/datum/wires/camera/make_wire_hints() - view_hint = new("The focus light is on.", "The focus light is off.") - power_hint = new("The power link light is on.", "The power link light is off.") - light_hint = new("The camera light is off.", "The camera light is on.") - alarm_hint = new("The alarm light is on.", "The alarm light is off.") - -/datum/wires/camera/Destroy() - view_hint = null - power_hint = null - light_hint = null - alarm_hint = null - return ..() /datum/wires/camera/GetInteractWindow() . = ..() var/obj/machinery/camera/C = holder - . += view_hint.show(C.view_range == initial(C.view_range)) - . += power_hint.show(C.can_use()) - . += light_hint.show(C.light_disabled) - . += alarm_hint.show(C.alarm_on) + . += show_hint(0x1, C.view_range == initial(C.view_range), "The focus light is on.", "The focus light is off.") + . += show_hint(0x2, C.can_use(), "The power link light is on.", "The power link light is off.") + . += show_hint(0x4, C.light_disabled, "The camera light is off.", "The camera light is on.") + . += show_hint(0x8, C.alarm_on, "The alarm light is on.", "The alarm light is off.") return . /datum/wires/camera/CanUse(var/mob/living/L) diff --git a/code/datums/wires/grid_checker.dm b/code/datums/wires/grid_checker.dm index 62c8a78fa1..355f39ec18 100644 --- a/code/datums/wires/grid_checker.dm +++ b/code/datums/wires/grid_checker.dm @@ -1,20 +1,6 @@ /datum/wires/grid_checker holder_type = /obj/machinery/power/grid_checker wire_count = 8 - var/datum/wire_hint/power_failure_hint - var/datum/wire_hint/lock_out_hint - var/datum/wire_hint/ready_hint - -/datum/wires/grid_checker/make_wire_hints() - power_failure_hint = new("The green light is off.", "The green light is on.") - lock_out_hint = new("The red light is on.", "The red light is off.") - ready_hint = new("The blue light is on.", "The blue light is off.") - -/datum/wires/grid_checker/Destroy() - power_failure_hint = null - lock_out_hint = null - ready_hint = null - return ..() var/const/GRID_CHECKER_WIRE_REBOOT = 1 // This wire causes the grid-check to end, if pulsed. var/const/GRID_CHECKER_WIRE_LOCKOUT = 2 // If cut or pulsed, locks the user out for half a minute. @@ -36,9 +22,9 @@ var/const/GRID_CHECKER_WIRE_NOTHING_2 = 128 // Does nothing, but makes it a bit /datum/wires/grid_checker/GetInteractWindow() var/obj/machinery/power/grid_checker/G = holder . += ..() - . += power_failure_hint.show(G.power_failing) - . += lock_out_hint.show(G.wire_locked_out) - . += ready_hint.show(G.wire_allow_manual_1 && G.wire_allow_manual_2 && G.wire_allow_manual_3) + . += show_hint(0x1, G.power_failing, "The green light is off.", "The green light is on.") + . += show_hint(0x2, G.wire_locked_out, "The red light is on.", "The red light is off.") + . += show_hint(0x4, G.wire_allow_manual_1 && G.wire_allow_manual_2 && G.wire_allow_manual_3, "The blue light is on.", "The blue light is off.") /datum/wires/grid_checker/UpdateCut(var/index, var/mended) diff --git a/code/datums/wires/jukebox.dm b/code/datums/wires/jukebox.dm index ef045bc7ea..e207334ffd 100644 --- a/code/datums/wires/jukebox.dm +++ b/code/datums/wires/jukebox.dm @@ -2,21 +2,6 @@ random = 1 holder_type = /obj/machinery/media/jukebox wire_count = 11 - var/datum/wire_hint/power_hint - var/datum/wire_hint/parental_hint - var/datum/wire_hint/reverse_hint - -/datum/wires/jukebox/make_wire_hints() - power_hint = new("The power light is off.", "The power light is on.") - parental_hint = new("The parental guidance light is off.", "The parental guidance light is on.") - reverse_hint = new("The data light is hauntingly dark.", "The data light is glowing softly.") - -/datum/wires/jukebox/Destroy() - power_hint = null - parental_hint = null - reverse_hint = null - return ..() - var/const/WIRE_POWER = 1 var/const/WIRE_HACK = 2 @@ -40,9 +25,9 @@ var/const/WIRE_NEXT = 1024 /datum/wires/jukebox/GetInteractWindow() var/obj/machinery/media/jukebox/A = holder . += ..() - . += power_hint.show(A.stat & (BROKEN|NOPOWER)) - . += parental_hint.show(A.hacked) - . += reverse_hint.show(IsIndexCut(WIRE_REVERSE)) + . += show_hint(0x1, A.stat & (BROKEN|NOPOWER), "The power light is off.", "The power light is on.") + . += show_hint(0x2, A.hacked, "The parental guidance light is off.", "The parental guidance light is on.") + . += show_hint(0x4, IsIndexCut(WIRE_REVERSE), "The data light is hauntingly dark.", "The data light is glowing softly.") // Give a hint as to what each wire does /datum/wires/jukebox/UpdatePulsed(var/index) diff --git a/code/datums/wires/robot.dm b/code/datums/wires/robot.dm index 20a7960583..ed87a2b1fe 100644 --- a/code/datums/wires/robot.dm +++ b/code/datums/wires/robot.dm @@ -2,23 +2,6 @@ random = 1 holder_type = /mob/living/silicon/robot wire_count = 5 - var/datum/wire_hint/lawsync_hint - var/datum/wire_hint/connected_ai_hint - var/datum/wire_hint/camera_hint - var/datum/wire_hint/lockdown_hint - -/datum/wires/robot/make_wire_hints() - lawsync_hint = new("The LawSync light is on.", "The LawSync light is off.") - connected_ai_hint = new("The AI link light is on.", "The AI link light is off.") - camera_hint = new("The camera light is on.", "The camera light is off.") - lockdown_hint = new("The lockdown light is on.", "The lockdown light is off.") - -/datum/wires/robot/Destroy() - lawsync_hint = null - connected_ai_hint = null - camera_hint = null - lockdown_hint = null - return ..() var/const/BORG_WIRE_LAWCHECK = 1 var/const/BORG_WIRE_MAIN_POWER = 2 // The power wires do nothing whyyyyyyyyyyyyy @@ -29,10 +12,10 @@ var/const/BORG_WIRE_CAMERA = 16 /datum/wires/robot/GetInteractWindow() . = ..() var/mob/living/silicon/robot/R = holder - . += lawsync_hint.show(R.lawupdate) - . += connected_ai_hint.show(R.connected_ai) - . += camera_hint.show((!isnull(R.camera) && R.camera.status == 1)) - . += lockdown_hint.show(R.lockdown) + . += show_hint(0x1, R.lawupdate, "The LawSync light is on.", "The LawSync light is off.") + . += show_hint(0x2, R.connected_ai, "The AI link light is on.", "The AI link light is off.") + . += show_hint(0x4, (!isnull(R.camera) && R.camera.status == 1), "The camera light is on.", "The camera light is off.") + . += show_hint(0x8, R.lockdown, "The lockdown light is on.", "The lockdown light is off.") return . /datum/wires/robot/UpdateCut(var/index, var/mended) diff --git a/code/datums/wires/seedstorage.dm b/code/datums/wires/seedstorage.dm index 5ea1462b76..2a0e315a57 100644 --- a/code/datums/wires/seedstorage.dm +++ b/code/datums/wires/seedstorage.dm @@ -7,23 +7,6 @@ holder_type = /obj/machinery/seed_storage wire_count = 4 random = 1 - var/datum/wire_hint/zap_hint - var/datum/wire_hint/smart_hint - var/datum/wire_hint/hacked_hint - var/datum/wire_hint/lockdown_hint - -/datum/wires/seedstorage/make_wire_hints() - zap_hint = new("The orange light is off.", "The orange light is on.") - smart_hint = new("The red light is off.", "The red light is blinking.") - hacked_hint = new("The green light is on.", "The green light is off.") - lockdown_hint = new("The keypad lock is deployed.", "The keypad lock is retracted.") - -/datum/wires/seedstorage/Destroy() - zap_hint = null - smart_hint = null - hacked_hint = null - lockdown_hint = null - return ..() /datum/wires/seedstorage/CanUse(var/mob/living/L) var/obj/machinery/seed_storage/V = holder @@ -34,10 +17,10 @@ /datum/wires/seedstorage/GetInteractWindow() var/obj/machinery/seed_storage/V = holder . += ..() - . += zap_hint.show(V.seconds_electrified) - . += smart_hint.show(V.smart) - . += hacked_hint.show(V.hacked || V.emagged) - . += lockdown_hint.show(V.lockdown) + . += show_hint(0x1, V.seconds_electrified, "The orange light is off.", "The orange light is on.") + . += show_hint(0x2, V.smart, "The red light is off.", "The red light is blinking.") + . += show_hint(0x4, V.hacked || V.emagged, "The green light is on.", "The green light is off.") + . += show_hint(0x8, V.lockdown, "The keypad lock is deployed.", "The keypad lock is retracted.") /datum/wires/seedstorage/UpdatePulsed(var/index) var/obj/machinery/seed_storage/V = holder diff --git a/code/datums/wires/smartfridge.dm b/code/datums/wires/smartfridge.dm index 7ea943665f..f69e153bbf 100644 --- a/code/datums/wires/smartfridge.dm +++ b/code/datums/wires/smartfridge.dm @@ -1,20 +1,6 @@ /datum/wires/smartfridge holder_type = /obj/machinery/smartfridge wire_count = 3 - var/datum/wire_hint/zap_hint - var/datum/wire_hint/shoot_hint - var/datum/wire_hint/scan_id_hint - -/datum/wires/smartfridge/make_wire_hints() - zap_hint = new("The orange light is off.", "The orange light is on.") - shoot_hint = new("The red light is off.", "The red light is blinking.") - scan_id_hint = new("A purple light is on.", "A yellow light is on.") - -/datum/wires/smartfridge/Destroy() - zap_hint = null - shoot_hint = null - scan_id_hint = null - return ..() /datum/wires/smartfridge/secure random = 1 @@ -33,9 +19,9 @@ var/const/SMARTFRIDGE_WIRE_IDSCAN = 4 /datum/wires/smartfridge/GetInteractWindow() var/obj/machinery/smartfridge/S = holder . += ..() - . += zap_hint.show(S.seconds_electrified) - . += shoot_hint.show(S.shoot_inventory) - . += scan_id_hint.show(S.scan_id) + . += show_hint(0x1, S.seconds_electrified, "The orange light is off.", "The orange light is on.") + . += show_hint(0x2, S.shoot_inventory, "The red light is off.", "The red light is blinking.") + . += show_hint(0x4, S.scan_id, "A purple light is on.", "A yellow light is on.") /datum/wires/smartfridge/UpdatePulsed(var/index) var/obj/machinery/smartfridge/S = holder diff --git a/code/datums/wires/smes.dm b/code/datums/wires/smes.dm index 9b2a3ab0e0..82d93b9fa8 100644 --- a/code/datums/wires/smes.dm +++ b/code/datums/wires/smes.dm @@ -1,20 +1,6 @@ /datum/wires/smes holder_type = /obj/machinery/power/smes/buildable wire_count = 5 - var/datum/wire_hint/io_hint - var/datum/wire_hint/safeties_hint - var/datum/wire_hint/rcon_hint - -/datum/wires/smes/make_wire_hints() - io_hint = new("The green light is off.", "The green light is on.") - safeties_hint = new("The red light is off.", "The red light is blinking.") - rcon_hint = new("The blue light is on.", "The blue light is off.") - -/datum/wires/smes/Destroy() - io_hint = null - safeties_hint = null - rcon_hint = null - return ..() var/const/SMES_WIRE_RCON = 1 // Remote control (AI and consoles), cut to disable var/const/SMES_WIRE_INPUT = 2 // Input wire, cut to disable input, pulse to disable for 60s @@ -33,9 +19,9 @@ var/const/SMES_WIRE_FAILSAFES = 16 // Cut to disable failsafes, mend to reenable /datum/wires/smes/GetInteractWindow() var/obj/machinery/power/smes/buildable/S = holder . += ..() - . += io_hint.show(S.input_cut || S.input_pulsed || S.output_cut || S.output_pulsed) - . += safeties_hint.show(S.safeties_enabled || S.grounding) - . += rcon_hint.show(S.RCon) + . += show_hint(0x1, S.input_cut || S.input_pulsed || S.output_cut || S.output_pulsed, "The green light is off.", "The green light is on.") + . += show_hint(0x2, S.safeties_enabled || S.grounding, "The red light is off.", "The red light is blinking.") + . += show_hint(0x4, S.RCon, "The blue light is on.", "The blue light is off.") /datum/wires/smes/UpdateCut(var/index, var/mended) var/obj/machinery/power/smes/buildable/S = holder diff --git a/code/datums/wires/suit_storage_unit.dm b/code/datums/wires/suit_storage_unit.dm index 2551ef3eb1..fe694d271a 100644 --- a/code/datums/wires/suit_storage_unit.dm +++ b/code/datums/wires/suit_storage_unit.dm @@ -1,20 +1,6 @@ /datum/wires/suit_storage_unit holder_type = /obj/machinery/suit_cycler wire_count = 3 - var/datum/wire_hint/zap_hint - var/datum/wire_hint/safeties_hint - var/datum/wire_hint/locked_hint - -/datum/wires/suit_storage_unit/make_wire_hints() - zap_hint = new("The orange light is off.", "The orange light is on.") - safeties_hint = new("The red light is off.", "The red light is blinking.") - locked_hint = new("The yellow light is on.", "The yellow light is off.") - -/datum/wires/suit_storage_unit/Destroy() - zap_hint = null - safeties_hint = null - locked_hint = null - return ..() var/const/SUIT_STORAGE_WIRE_ELECTRIFY = 1 var/const/SUIT_STORAGE_WIRE_SAFETY = 2 @@ -33,9 +19,9 @@ var/const/SUIT_STORAGE_WIRE_LOCKED = 4 /datum/wires/suit_storage_unit/GetInteractWindow() var/obj/machinery/suit_cycler/S = holder . += ..() - . += zap_hint.show(S.electrified) - . += safeties_hint.show(S.safeties) - . += locked_hint.show(S.locked) + . += show_hint(0x1, S.electrified, "The orange light is off.", "The orange light is on.") + . += show_hint(0x2, S.safeties, "The red light is off.", "The red light is blinking.") + . += show_hint(0x4, S.locked, "The yellow light is on.", "The yellow light is off.") /datum/wires/suit_storage_unit/UpdatePulsed(var/index) var/obj/machinery/suit_cycler/S = holder diff --git a/code/datums/wires/vending.dm b/code/datums/wires/vending.dm index f15dac3fcf..61aadf4b1b 100644 --- a/code/datums/wires/vending.dm +++ b/code/datums/wires/vending.dm @@ -1,23 +1,6 @@ /datum/wires/vending holder_type = /obj/machinery/vending wire_count = 4 - var/datum/wire_hint/zap_hint - var/datum/wire_hint/shoot_hint - var/datum/wire_hint/hidden_hint - var/datum/wire_hint/scan_id_hint - -/datum/wires/vending/make_wire_hints() - zap_hint = new("The orange light is off.", "The orange light is on.") - shoot_hint = new("The red light is off.", "The red light is blinking.") - hidden_hint = new("A green light is on.", "A green light is off.") - scan_id_hint = new("A purple light is on.", "A yellow light is on.") - -/datum/wires/vending/Destroy() - zap_hint = null - shoot_hint = null - hidden_hint = null - scan_id_hint = null - return ..() var/const/VENDING_WIRE_THROW = 1 var/const/VENDING_WIRE_CONTRABAND = 2 @@ -33,10 +16,10 @@ var/const/VENDING_WIRE_IDSCAN = 8 /datum/wires/vending/GetInteractWindow() var/obj/machinery/vending/V = holder . += ..() - . += zap_hint.show(V.seconds_electrified) - . += shoot_hint.show(V.shoot_inventory) - . += hidden_hint.show(V.categories & CAT_HIDDEN) - . += scan_id_hint.show(V.scan_id) + . += show_hint(0x1, V.seconds_electrified, "The orange light is off.", "The orange light is on.") + . += show_hint(0x2, V.shoot_inventory, "The red light is off.", "The red light is blinking.") + . += show_hint(0x4, V.categories & CAT_HIDDEN, "A green light is on.", "A green light is off.") + . += show_hint(0x8, V.scan_id, "A purple light is on.", "A yellow light is on.") /datum/wires/vending/UpdatePulsed(var/index) var/obj/machinery/vending/V = holder diff --git a/code/datums/wires/wire_hint.dm b/code/datums/wires/wire_hint.dm deleted file mode 100644 index a7967f45d7..0000000000 --- a/code/datums/wires/wire_hint.dm +++ /dev/null @@ -1,27 +0,0 @@ -// 'Wire hints' are the pieces of text on the bottom of the window that give you clues on what you're doing. -// E.g. a power light turning on or off. -// They are their own object in order to allow for logic to make them go bold if they change. - -/datum/wire_hint - var/last_state = null // Current state of the hint. Can be TRUE, FALSE, or null if nobody has interacted yet. - var/true_text // Text to display in the hacking window when the current state is true. - var/false_text // Ditto, but shown when false. - -/datum/wire_hint/New(new_true_text, new_false_text) - true_text = new_true_text - false_text = new_false_text - -// Returns text based on the state being inputted. -// If that state is different from last time, the text will be bolded. -/datum/wire_hint/proc/show(current_state) - var/state_changed = FALSE - if(last_state != null) - if(last_state != current_state) - state_changed = TRUE - last_state = current_state - if(last_state) - return state_changed ? "
[true_text]" : "
[true_text]" - return state_changed ? "
[false_text]" : "
[false_text]" - -/datum/wire_hint/proc/reset_memory() - last_state = null \ No newline at end of file diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm index 2824c1b078..645d7cc043 100644 --- a/code/datums/wires/wires.dm +++ b/code/datums/wires/wires.dm @@ -17,6 +17,9 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown" var/wire_count = 0 // Max is 16 var/wires_status = 0 // BITFLAG OF WIRES + var/hint_states = 0 // BITFLAG OF HINT STATES (For tracking if they changed for bolding in UI) + var/hint_states_initialized = FALSE // False until first time window is rendered. + var/list/wires = list() var/list/signallers = list() @@ -26,6 +29,19 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown" var/window_x = 370 var/window_y = 470 +// Note: Its assumed states are boolean. If you ever have a multi-state hint, you must implement that yourself. +/datum/wires/proc/show_hint(flag, current_state, true_text, false_text) + var/state_changed = FALSE + if(hint_states_initialized) + if(!(hint_states & flag) != !current_state) // NOT-ing to convert to boolean + state_changed = TRUE + if(current_state) + hint_states |= flag + return state_changed ? "
[true_text]" : "
[true_text]" + else + hint_states &= ~flag + return state_changed ? "
[false_text]" : "
[false_text]" + /datum/wires/New(var/atom/holder) ..() src.holder = holder @@ -45,7 +61,6 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown" else var/list/wires = same_wires[holder_type] src.wires = wires // Reference the wires list. - make_wire_hints() /datum/wires/Destroy() holder = null @@ -76,6 +91,7 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown" var/html = null if(holder && CanUse(user)) html = GetInteractWindow() + hint_states_initialized = TRUE if(html) user.set_machine(holder) else @@ -109,10 +125,6 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown" return html -// Override to spawn the wire hints here, to avoid touching New(). -/datum/wires/proc/make_wire_hints() - return - /datum/wires/Topic(href, href_list) ..() if(in_range(holder, usr) && isliving(usr)) diff --git a/vorestation.dme b/vorestation.dme index 2a20cbf3fb..f8ea7b7de0 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -453,7 +453,6 @@ #include "code\datums\wires\suit_storage_unit.dm" #include "code\datums\wires\tesla_coil.dm" #include "code\datums\wires\vending.dm" -#include "code\datums\wires\wire_hint.dm" #include "code\datums\wires\wires.dm" #include "code\defines\gases.dm" #include "code\defines\obj.dm"