diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm
index c9a31a48c2..0d1a8ba78d 100644
--- a/code/game/objects/items/airlock_painter.dm
+++ b/code/game/objects/items/airlock_painter.dm
@@ -140,7 +140,8 @@
var/stored_decal_total = "warningline"
var/color_list = list("","red","white")
var/dir_list = list(1,2,4,8)
- var/decal_list = list(list("Warning Line","warningline"),
+ var/decal_list = list(
+ list("Warning Line","warningline"),
list("Warning Line Corner","warninglinecorner"),
list("Caution Label","caution"),
list("Directional Arrows","arrows"),
@@ -165,9 +166,23 @@
return
. = ..()
-/obj/item/airlock_painter/decal/AltClick(mob/user)
+/obj/item/airlock_painter/decal/AltClick(mob/user) //sandstorm change - everything that makes this work is on same path to this but on sandcode
. = ..()
- ui_interact(user)
+ var/decal_category = list(
+ "Decal" = image(icon = 'icons/turf/decals.dmi', icon_state = "[stored_decal]", dir = stored_dir),
+ "Color" = image(icon = 'icons/obj/crayons.dmi', icon_state = "crayonred"),
+ "Dir" = image(icon = 'icons/obj/device.dmi', icon_state = "pinonfar", dir = stored_dir)
+ )
+ var/cat_chosen = show_radial_menu(user,src,decal_category, custom_check = CALLBACK(src,.proc/check_menu,user), require_near = TRUE, tooltips = TRUE)
+ if(!check_menu(user))
+ return
+ switch(cat_chosen)
+ if("Decal")
+ choose_decal(user)
+ if("Color")
+ choose_color(user)
+ if("Dir")
+ choose_dir(user)
/obj/item/airlock_painter/decal/Initialize()
. = ..()
@@ -180,57 +195,10 @@
stored_decal_total = "[stored_decal][yellow_fix][stored_color]"
return
-/obj/item/airlock_painter/decal/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
- ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
- if(!ui)
- ui = new(user, src, ui_key, "decal_painter", name, 500, 400, master_ui, state)
- ui.open()
-
-/obj/item/airlock_painter/decal/ui_data(mob/user)
- var/list/data = list()
- data["decal_direction"] = stored_dir
- data["decal_color"] = stored_color
- data["decal_style"] = stored_decal
- data["decal_list"] = list()
- data["color_list"] = list()
- data["dir_list"] = list()
-
- for(var/i in decal_list)
- data["decal_list"] += list(list(
- "name" = i[1],
- "decal" = i[2]
- ))
- for(var/j in color_list)
- data["color_list"] += list(list(
- "colors" = j
- ))
- for(var/k in dir_list)
- data["dir_list"] += list(list(
- "dirs" = k
- ))
- return data
-
-/obj/item/airlock_painter/decal/ui_act(action,list/params)
- if(..())
- return
- switch(action)
- //Lists of decals and designs
- if("select decal")
- var/selected_decal = params["decals"]
- stored_decal = selected_decal
- if("select color")
- var/selected_color = params["colors"]
- stored_color = selected_color
- if("selected direction")
- var/selected_direction = text2num(params["dirs"])
- stored_dir = selected_direction
- update_decal_path()
- . = TRUE
-
/obj/item/airlock_painter/decal/debug
name = "extreme decal painter"
icon_state = "decal_sprayer_ex"
/obj/item/airlock_painter/decal/debug/Initialize()
. = ..()
- ink = new /obj/item/toner/extreme(src)
\ No newline at end of file
+ ink = new /obj/item/toner/extreme(src)
diff --git a/sandcode/code/game/objects/items/airlock_painter.dm b/sandcode/code/game/objects/items/airlock_painter.dm
new file mode 100644
index 0000000000..1310f213b2
--- /dev/null
+++ b/sandcode/code/game/objects/items/airlock_painter.dm
@@ -0,0 +1,142 @@
+
+/obj/item/airlock_painter/decal/proc/check_menu(mob/living/user)
+ if(!istype(user))
+ return FALSE
+ if(user.incapacitated() || !user.Adjacent(src))
+ return FALSE
+ return TRUE
+
+/obj/item/airlock_painter/decal/proc/choose_decal(user)
+ var/decal_list_img = list(
+ "Warning Line" = image(icon = 'icons/turf/decals.dmi', icon_state = "warningline", dir = stored_dir),
+ "Warning Line Corner" = image(icon = 'icons/turf/decals.dmi', icon_state = "warninglinecorner", dir = stored_dir),
+ "Caution Label" = image(icon = 'icons/turf/decals.dmi', icon_state = "caution", dir = stored_dir),
+ "Directional Arrows" = image(icon = 'icons/turf/decals.dmi', icon_state = "arrows", dir = stored_dir),
+ "Stand Clear Label" = image(icon = 'icons/turf/decals.dmi', icon_state = "stand_clear", dir = stored_dir),
+ "Box" = image(icon = 'icons/turf/decals.dmi', icon_state = "box", dir = stored_dir),
+ "Box Corner" = image(icon = 'icons/turf/decals.dmi', icon_state = "box_corners", dir = stored_dir),
+ "Delivery Marker" = image(icon = 'icons/turf/decals.dmi', icon_state = "delivery", dir = stored_dir),
+ "Warning Box" = image(icon = 'icons/turf/decals.dmi', icon_state = "warn_full", dir = stored_dir)
+ )
+ var/choice = show_radial_menu(user,src,decal_list_img, custom_check = CALLBACK(src,.proc/check_menu,user), require_near = TRUE, tooltips = TRUE)
+ if(!check_menu(user))
+ return
+ switch(choice)
+ if("Warning Line")
+ var/picked_decal = decal_list[1]
+ stored_decal = picked_decal[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] decal to '[choice]'.")
+ update_decal_path()
+ if("Warning Line Corner")
+ var/picked_decal = decal_list[2]
+ stored_decal = picked_decal[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] decal to '[choice]'.")
+ update_decal_path()
+ if("Caution Label")
+ var/picked_decal = decal_list[3]
+ stored_decal = picked_decal[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] decal to '[choice]'.")
+ update_decal_path()
+ if("Directional Arrows")
+ var/picked_decal = decal_list[4]
+ stored_decal = picked_decal[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] decal to '[choice]'.")
+ update_decal_path()
+ if("Stand Clear Label")
+ var/picked_decal = decal_list[5]
+ stored_decal = picked_decal[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] decal to '[choice]'.")
+ update_decal_path()
+ if("Box")
+ var/picked_decal = decal_list[6]
+ stored_decal = picked_decal[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] decal to '[choice]'.")
+ update_decal_path()
+ if("Box Corner")
+ var/picked_decal = decal_list[7]
+ stored_decal = picked_decal[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] decal to '[choice]'.")
+ update_decal_path()
+ if("Delivery Marker")
+ var/picked_decal = decal_list[8]
+ stored_decal = picked_decal[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] decal to '[choice]'.")
+ update_decal_path()
+ if("Warning Box")
+ var/picked_decal = decal_list[9]
+ stored_decal = picked_decal[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] decal to '[choice]'.")
+ update_decal_path()
+ else
+ to_chat(user, "You decided not to change the decal.")
+
+/obj/item/airlock_painter/decal/proc/choose_color(user)
+ var/choose_color = list(
+ "Disable" = image(icon = 'icons/turf/decals.dmi', icon_state = "[stored_decal]", dir = stored_dir),
+ "Red" = image(icon = 'icons/obj/crayons.dmi', icon_state = "crayonred"),
+ "White" = image(icon = 'icons/obj/crayons.dmi', icon_state = "crayonwhite")
+ )
+ var/choice = show_radial_menu(user,src,choose_color, custom_check = CALLBACK(src,.proc/check_menu,user), require_near = TRUE, tooltips = TRUE)
+ if(!check_menu(user))
+ return
+ switch(choice)
+ if("Disable")
+ stored_color = color_list[1]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You disable [src]'s painter.")
+ update_decal_path()
+ if("Red")
+ stored_color = color_list[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] color to '[choice]'.")
+ update_decal_path()
+ if("White")
+ stored_color = color_list[3]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] color to '[choice]'.")
+ update_decal_path()
+ else
+ to_chat(user, "You decided not to change the color.")
+
+/obj/item/airlock_painter/decal/proc/choose_dir(user)
+ var/choose_dir = list(
+ "North" = image(icon = 'icons/turf/decals.dmi', icon_state = "[stored_decal]", dir = 1),
+ "East" = image(icon = 'icons/turf/decals.dmi', icon_state = "[stored_decal]", dir = 4),
+ "South" = image(icon = 'icons/turf/decals.dmi', icon_state = "[stored_decal]", dir = 2),
+ "West" = image(icon = 'icons/turf/decals.dmi', icon_state = "[stored_decal]", dir = 8)
+ )
+ var/choice = show_radial_menu(user,src,choose_dir, custom_check = CALLBACK(src,.proc/check_menu,user), require_near = TRUE, tooltips = TRUE)
+ if(!check_menu(user))
+ return
+ switch(choice)
+ if("North")
+ stored_dir = dir_list[1]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] direction to '[choice]'.")
+ update_decal_path()
+ if("South")
+ stored_dir = dir_list[2]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] direction to '[choice]'.")
+ update_decal_path()
+ if("East")
+ stored_dir = dir_list[3]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] direction to '[choice]'.")
+ update_decal_path()
+ if("West")
+ stored_dir = dir_list[4]
+ playsound(src, 'sound/effects/pop.ogg', 50, 0)
+ to_chat(user, "You change [src] direction to '[choice]'.")
+ update_decal_path()
+ else
+ to_chat(user, "You decided not to change the direction.")
diff --git a/tgstation.dme b/tgstation.dme
index c291654f82..84303ef470 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3502,6 +3502,7 @@
#include "sandcode\code\game\machinery\pipe\construction.dm"
#include "sandcode\code\game\mecha\mech_fabricator.dm"
#include "sandcode\code\game\objects\effects\contraband.dm"
+#include "sandcode\code\game\objects\items\airlock_painter.dm"
#include "sandcode\code\game\objects\items\BSRPD.dm"
#include "sandcode\code\game\objects\items\cards_ids.dm"
#include "sandcode\code\game\objects\items\circuitboards\computer_circuitboards.dm"