mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-14 03:12:30 +00:00
Ports the changes to clicking and build mode made in https://github.com/Baystation12/Baystation12/pull/16292
53 lines
1.4 KiB
Plaintext
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)
|