mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-31 12:41:46 +00:00
* initial commit (broken)
* load the html
* fix this
* Fix various issues with browser statpanel
* Fix Alt Clicking opening up a window and Add back some object verbs to the browser stat panel
* Optimize stat panel and fix guardian verbs
* Restyles Stat Panel, Adds Subpanel Sub-Categories
* Use better layout for verbs in stat panel
* Updates statpanel verb widths to be more dynamic at higher screen resolutions.
* Adjust stat panel grid item widths and breakpoints
* refactors statpanel to use tgui API
* CI moment
* more CI
* this stupid thing
* Apply suggestions from code review
Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
* Update code/modules/client/client_procs.dm
* ci fix
* emergency mc debug view
* temp revert some code change suggestions due to massive runtiming
* proper atom click topic implementation
* optimise
* mob clicking in stat panels work
* yeet spell tab thingy
* yeet simple stat panel pref
* allow insertion of html into MC tab content
* tidy up status tab
* Apply suggestions from code review
* fix this
* fix CI
* oops
* fix index runtime
* fixes MC tab showing up for mentors, fixes runtime
* safeties!
* Return of theme support
* more fixes
* fix view range pref, tidy prefs tab
* Remove old stat panel from themes
* fixes
* make sure verbs don't go missing
* fix ooc/looc breaking
* Revert "make sure verbs don't go missing"
This reverts commit 7d07ad45ed.
* fix this properly
* fix stat panel hitting rate limiters
* fix borg status tab
* Object Window Niceties
* Adds file cycling for icon2base64
* optimizes icon2html() for icon files known to be in the rsc at compile time
* CI moment
* remove dupe emergency shuttle timers
* more robust verb updates
* statpanel tweaks
* zip archived changelog to avoid search results
* optimise
* fix mentor chat wonkyness when disabled
* debug log moment
* i am very smart
* reintroduce this because it was needed
* better time listings
* less jank
* stops telling admins they arent mentors
* returns MC tab pref for admins
* Update code/controllers/subsystem/SSstatpanel.dm
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
* lewcc
* OD typemaker prep
---------
Co-authored-by: GDN <96800819+GDNgit@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: Aylong <alexanderkitsa@gmail.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
60 lines
2.0 KiB
Plaintext
60 lines
2.0 KiB
Plaintext
/// This component behaves similar to connect_loc_behalf, but working off clients and mobs instead of loc
|
|
/// To be clear, we hook into a signal on a tracked client's mob
|
|
/// We retain the ability to react to that signal on a seperate listener, which makes this quite powerful
|
|
/datum/component/connect_mob_behalf
|
|
dupe_mode = COMPONENT_DUPE_UNIQUE
|
|
|
|
/// An assoc list of signal -> procpath to register to the mob our client "owns"
|
|
var/list/connections
|
|
/// The master client we're working with
|
|
var/client/tracked
|
|
/// The mob we're currently tracking
|
|
var/mob/tracked_mob
|
|
|
|
/datum/component/connect_mob_behalf/Initialize(client/tracked, list/connections)
|
|
. = ..()
|
|
if(!istype(tracked))
|
|
return COMPONENT_INCOMPATIBLE
|
|
src.connections = connections
|
|
src.tracked = tracked
|
|
|
|
/datum/component/connect_mob_behalf/RegisterWithParent()
|
|
RegisterSignal(tracked, COMSIG_PARENT_QDELETING, PROC_REF(handle_tracked_qdel))
|
|
update_signals()
|
|
|
|
/datum/component/connect_mob_behalf/UnregisterFromParent()
|
|
unregister_signals()
|
|
UnregisterSignal(tracked, COMSIG_PARENT_QDELETING)
|
|
|
|
tracked = null
|
|
tracked_mob = null
|
|
|
|
/datum/component/connect_mob_behalf/proc/handle_tracked_qdel()
|
|
SIGNAL_HANDLER
|
|
qdel(src)
|
|
|
|
/datum/component/connect_mob_behalf/proc/update_signals()
|
|
unregister_signals()
|
|
// Yes this is a runtime silencer
|
|
// We could be in a position where logout is sent to two things, one thing intercepts it, then deletes the client's new mob
|
|
// It's rare, and the same check in connect_loc_behalf is more fruitful, but it's still worth doing
|
|
if(QDELETED(tracked?.mob))
|
|
return
|
|
tracked_mob = tracked.mob
|
|
RegisterSignal(tracked_mob, COMSIG_MOB_LOGOUT, PROC_REF(on_logout))
|
|
for(var/signal in connections)
|
|
parent.RegisterSignal(tracked_mob, signal, connections[signal])
|
|
|
|
/datum/component/connect_mob_behalf/proc/unregister_signals()
|
|
if(isnull(tracked_mob))
|
|
return
|
|
|
|
parent.UnregisterSignal(tracked_mob, connections)
|
|
UnregisterSignal(tracked_mob, COMSIG_MOB_LOGOUT)
|
|
|
|
tracked_mob = null
|
|
|
|
/datum/component/connect_mob_behalf/proc/on_logout(mob/source)
|
|
SIGNAL_HANDLER
|
|
update_signals()
|