Merge pull request #49613 from SteelSlayer/airlock-painter-improvements

Airlock painter code improvements. Fixes some mixed up in-hand sprites for it
This commit is contained in:
skoglol
2020-02-29 22:50:59 +01:00
committed by GitHub
3 changed files with 41 additions and 72 deletions
+23 -72
View File
@@ -1126,82 +1126,33 @@
locked = TRUE
return
/obj/machinery/door/airlock/proc/change_paintjob(obj/item/airlock_painter/W, mob/user)
if(!W.can_use(user))
// gets called when a player uses an airlock painter on this airlock
/obj/machinery/door/airlock/proc/change_paintjob(obj/item/airlock_painter/painter, mob/user)
if((!in_range(src, user) && loc != user) || !painter.can_use(user)) // user should be adjacent to the airlock, and the painter should have a toner cartridge that isn't empty
return
var/list/optionlist
if(airlock_material == "glass")
optionlist = list("Standard", "Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Science", "Virology", "Mining", "Maintenance", "External", "External Maintenance")
// reads from the airlock painter's `available paintjob` list. lets the player choose a paint option, or cancel painting
var/current_paintjob = input(user, "Please select a paintjob for this airlock.") as null|anything in sortList(painter.available_paint_jobs)
if(!current_paintjob) // if the user clicked cancel on the popup, return
return
var/airlock_type = painter.available_paint_jobs["[current_paintjob]"] // get the airlock type path associated with the airlock name the user just chose
var/obj/machinery/door/airlock/airlock = new airlock_type // we need to create an new instance of the airlock and assembly to read vars from them
var/obj/structure/door_assembly/assembly = new airlock.assemblytype
if(airlock_material == "glass" && assembly.noglass) // prevents painting glass airlocks with a paint job that doesn't have a glass version, such as the freezer
to_chat(user, "<span class='warning'>This paint job can only be applied to non-glass airlocks.</span>")
else
optionlist = list("Standard", "Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Freezer", "Science", "Virology", "Mining", "Maintenance", "External", "External Maintenance")
// applies the user-chosen airlock's icon, overlays and assemblytype to the src airlock
painter.use_paint(user)
icon = airlock.icon
overlays_file = airlock.overlays_file
assemblytype = airlock.assemblytype
update_icon()
var/paintjob = input(user, "Please select a paintjob for this airlock.") in sortList(optionlist)
if((!in_range(src, usr) && loc != usr) || !W.use_paint(user))
return
switch(paintjob)
if("Standard")
icon = 'icons/obj/doors/airlocks/station/public.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly
if("Public")
icon = 'icons/obj/doors/airlocks/station2/glass.dmi'
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_public
if("Engineering")
icon = 'icons/obj/doors/airlocks/station/engineering.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_eng
if("Atmospherics")
icon = 'icons/obj/doors/airlocks/station/atmos.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_atmo
if("Security")
icon = 'icons/obj/doors/airlocks/station/security.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_sec
if("Command")
icon = 'icons/obj/doors/airlocks/station/command.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_com
if("Medical")
icon = 'icons/obj/doors/airlocks/station/medical.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_med
if("Research")
icon = 'icons/obj/doors/airlocks/station/research.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_research
if("Freezer")
icon = 'icons/obj/doors/airlocks/station/freezer.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_fre
if("Science")
icon = 'icons/obj/doors/airlocks/station/science.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_science
if("Virology")
icon = 'icons/obj/doors/airlocks/station/virology.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_viro
if("Mining")
icon = 'icons/obj/doors/airlocks/station/mining.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_min
if("Maintenance")
icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_mai
if("External")
icon = 'icons/obj/doors/airlocks/external/external.dmi'
overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_ext
if("External Maintenance")
icon = 'icons/obj/doors/airlocks/station/maintenanceexternal.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_extmai
update_icon()
// these are just hanging around but are never placed, we need to delete them
qdel(airlock)
qdel(assembly)
/obj/machinery/door/airlock/CanAStarPass(obj/item/card/id/ID)
//Airlock is passable if it is open (!density), bot has access, and is not bolted shut or powered off)
@@ -15,6 +15,24 @@
usesound = 'sound/effects/spray2.ogg'
var/obj/item/toner/ink = null
/// Associate list of all paint jobs the airlock painter can apply. The key is the name of the airlock the user will see. The value is the type path of the airlock
var/list/available_paint_jobs = list(
"Public" = /obj/machinery/door/airlock/public,
"Engineering" = /obj/machinery/door/airlock/engineering,
"Atmospherics" = /obj/machinery/door/airlock/atmos,
"Security" = /obj/machinery/door/airlock/security,
"Command" = /obj/machinery/door/airlock/command,
"Medical" = /obj/machinery/door/airlock/medical,
"Research" = /obj/machinery/door/airlock/research,
"Freezer" = /obj/machinery/door/airlock/freezer,
"Science" = /obj/machinery/door/airlock/science,
"Mining" = /obj/machinery/door/airlock/mining,
"Maintenance" = /obj/machinery/door/airlock/maintenance,
"External" = /obj/machinery/door/airlock/external,
"External Maintenance"= /obj/machinery/door/airlock/maintenance/external,
"Virology" = /obj/machinery/door/airlock/virology,
"Standard" = /obj/machinery/door/airlock
)
/obj/item/airlock_painter/Initialize()
. = ..()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB