Files
Aurora.3/code/modules/admin/buildmode/click_handler.dm
2024-04-13 16:14:02 +00:00

53 lines
1.4 KiB
Plaintext

/datum/click_handler/build_mode
handler_flags = CLICK_HANDLER_REMOVE_ON_MOB_LOGOUT
var/dir
var/list/build_modes
var/list/build_buttons
var/datum/build_mode/current_build_mode
/datum/click_handler/build_mode/New(var/mob/user)
..()
build_modes = list()
for(var/mode_type in subtypesof(/datum/build_mode))
var/datum/build_mode/build_mode = new mode_type(src)
build_modes += build_mode
if(build_mode.the_default)
current_build_mode = build_mode
build_buttons = list()
for(var/button_type in subtypesof(/obj/effect/bmode))
var/obj/effect/bmode/build_button = new button_type(src)
build_buttons += build_button
/datum/click_handler/build_mode/Destroy()
QDEL_NULL(current_build_mode)
QDEL_LIST(build_modes)
QDEL_LIST(build_buttons)
. = ..()
/datum/click_handler/build_mode/Enter()
user.client.show_popup_menus = FALSE
for(var/build_button in build_buttons)
user.client.screen += build_button
/datum/click_handler/build_mode/Exit()
user.client.show_popup_menus = TRUE
for(var/build_button in build_buttons)
user.client.screen -= build_button
/datum/click_handler/build_mode/OnDblClick(var/atom/A, var/params)
OnClick(A, params) // We treat double-clicks as normal clicks
/datum/click_handler/build_mode/OnClick(var/atom/A, var/params)
params = params2list(params)
if(A in build_buttons)
var/obj/effect/bmode/build_button = A
build_button.OnClick(params)
else
current_build_mode.OnClick(A, params)