/
githubmirror
/
vgstation13
Обзор
Документация
Войти
/
githubmirror
/
vgstation13
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
Bleeding-Edge
code/_onclick/hud/action_button.dm
138 строк
4 KB
mentgah
Hopefully fixes tooltips once and for all (#38307)
07 сен 2025, 07:50
Не верифицирован
07 сен 2025, 07:50
1c7ba3a
Код
Авторство
О чём код?
/obj/abstract/screen/movable/action_button var/datum/action/linked_action var/actiontooltipstyle = "" screen_loc = null globalscreen = TRUE /obj/abstract/screen/movable/action_button/Click(location,control,params) if(usr.click_delayer.blocked()) return var/list/modifiers = params2list(params) if(modifiers["shift"]) moved = FALSE usr.update_action_buttons() //redraw buttons that are no longer considered "moved" return TRUE linked_action.Trigger() usr.click_delayer.setDelay(1) return TRUE /obj/abstract/screen/movable/action_button/MouseDrop(over_object, src_location, over_location, src_control, over_control, params) if(istype(over_object, /obj/abstract/screen/movable/action_button) && !istype(over_object, /obj/abstract/screen/movable/action_button/hide_toggle)) var/obj/abstract/screen/movable/action_button/B = over_object var/list/actions = usr.actions actions.Swap(actions.Find(src.linked_action), actions.Find(B.linked_action)) usr.update_action_buttons() //Hide/Show Action Buttons ... Button /obj/abstract/screen/movable/action_button/hide_toggle name = "Hide Buttons" icon = 'icons/mob/actions.dmi' icon_state = "bg_default" var/hidden = FALSE /obj/abstract/screen/movable/action_button/hide_toggle/MouseDrop(over_object, src_location, over_location, src_control, over_control, params) return /obj/abstract/screen/movable/action_button/hide_toggle/Click(location,control,params) var/list/modifiers = params2list(params) if(modifiers["shift"]) moved = FALSE return TRUE usr.hud_used.action_buttons_hidden = !usr.hud_used.action_buttons_hidden hidden = usr.hud_used.action_buttons_hidden if(hidden) name = "Show Buttons" else name = "Hide Buttons" UpdateIcon() usr.update_action_buttons() /obj/abstract/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(mob/living/user) if(isalien(user)) icon_state = "bg_alien" else icon_state = "bg_default" UpdateIcon() /obj/abstract/screen/movable/action_button/hide_toggle/proc/UpdateIcon() overlays = null var/image/img = image(icon, src, hidden ? "show" : "hide") overlays += img /obj/abstract/screen/movable/action_button/MouseEntered(location,control,params) //openToolTip(usr,src,params,title = name,content = desc,theme = actiontooltipstyle) usr.client?.tooltips.show(src, mouse=params, title=name, content=desc) /obj/abstract/screen/movable/action_button/MouseExited() usr.client?.tooltips.hide() /mob/proc/update_action_buttons_icon() for(var/X in actions) var/datum/action/A = X A.UpdateButtonIcon() //This is the proc used to update all the action buttons. /mob/proc/update_action_buttons(reload_screen) if(!hud_used || !client) return if(hud_used.hud_shown != 1) return var/button_number = 0 if(hud_used.action_buttons_hidden) for(var/datum/action/A in actions) A.button.screen_loc = null if(reload_screen) client.screen += A.button else for(var/datum/action/A in actions) button_number++ A.UpdateButtonIcon() var/obj/abstract/screen/movable/action_button/B = A.button if(B.moved) B.screen_loc = B.moved else B.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number) if(reload_screen) client.screen += B if(!button_number) hud_used.hide_actions_toggle.screen_loc = null return if(!hud_used.hide_actions_toggle.moved) hud_used.hide_actions_toggle.screen_loc = hud_used.ButtonNumberToScreenCoords(button_number+1) else hud_used.hide_actions_toggle.screen_loc = hud_used.hide_actions_toggle.moved if(reload_screen) client.screen += hud_used.hide_actions_toggle #define AB_MAX_COLUMNS 10 /datum/hud/proc/ButtonNumberToScreenCoords(number) // TODO : Make this zero-indexed for readabilty var/row = round((number - 1)/AB_MAX_COLUMNS) var/col = ((number - 1)%(AB_MAX_COLUMNS)) + 1 var/coord_col = "+[col-1]" var/coord_col_offset = 4 + 2 * col var/coord_row = "[row ? -row : "+0"]" return "WEST[coord_col]:[coord_col_offset],NORTH[coord_row]:-6" /datum/hud/proc/SetButtonCoords(obj/abstract/screen/button,number) var/row = round((number-1)/AB_MAX_COLUMNS) var/col = ((number - 1)%(AB_MAX_COLUMNS)) + 1 var/x_offset = 32*(col-1) + 4 + 2*col var/y_offset = -32*(row+1) + 26 var/matrix/M = matrix() M.Translate(x_offset,y_offset) button.transform = M