mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
107 lines
2.9 KiB
Plaintext
107 lines
2.9 KiB
Plaintext
/*
|
|
|
|
Overview:
|
|
The connection_manager class stores connections in each cardinal direction on a turf.
|
|
It isn't always present if a turf has no connections, check if(connections) before using.
|
|
Contains procs for mass manipulation of connection data.
|
|
|
|
Class Vars:
|
|
|
|
NSEWUD - Connections to this turf in each cardinal direction.
|
|
|
|
Class Procs:
|
|
|
|
get(d)
|
|
Returns the connection (if any) in this direction.
|
|
Preferable to accessing the connection directly because it checks validity.
|
|
|
|
place(connection/c, d)
|
|
Called by air_master.connect(). Sets the connection in the specified direction to c.
|
|
|
|
update_all()
|
|
Called after turf/update_air_properties(). Updates the validity of all connections on this turf.
|
|
|
|
erase_all()
|
|
Called when the turf is changed with ChangeTurf(). Erases all existing connections.
|
|
|
|
check(connection/c)
|
|
Checks for connection validity. It's possible to have a reference to a connection that has been erased.
|
|
|
|
|
|
*/
|
|
|
|
/turf/var/tmp/connection_manager/connections
|
|
|
|
/connection_manager/var/connection/N
|
|
/connection_manager/var/connection/S
|
|
/connection_manager/var/connection/E
|
|
/connection_manager/var/connection/W
|
|
|
|
#ifdef ZLEVELS
|
|
/connection_manager/var/connection/U
|
|
/connection_manager/var/connection/D
|
|
#endif
|
|
|
|
/connection_manager/proc/get(d)
|
|
writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/connection_manager/proc/get() called tick#: [world.time]")
|
|
switch(d)
|
|
if(NORTH)
|
|
if(check(N)) return N
|
|
else return null
|
|
if(SOUTH)
|
|
if(check(S)) return S
|
|
else return null
|
|
if(EAST)
|
|
if(check(E)) return E
|
|
else return null
|
|
if(WEST)
|
|
if(check(W)) return W
|
|
else return null
|
|
|
|
#ifdef ZLEVELS
|
|
if(UP)
|
|
if(check(U)) return U
|
|
else return null
|
|
if(DOWN)
|
|
if(check(D)) return D
|
|
else return null
|
|
#endif
|
|
|
|
/connection_manager/proc/place(connection/c, d)
|
|
writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/connection_manager/proc/place() called tick#: [world.time]")
|
|
switch(d)
|
|
if(NORTH) N = c
|
|
if(SOUTH) S = c
|
|
if(EAST) E = c
|
|
if(WEST) W = c
|
|
|
|
#ifdef ZLEVELS
|
|
if(UP) U = c
|
|
if(DOWN) D = c
|
|
#endif
|
|
|
|
/connection_manager/proc/update_all()
|
|
writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/connection_manager/proc/update_all() called tick#: [world.time]")
|
|
if(check(N)) N.update()
|
|
if(check(S)) S.update()
|
|
if(check(E)) E.update()
|
|
if(check(W)) W.update()
|
|
#ifdef ZLEVELS
|
|
if(check(U)) U.update()
|
|
if(check(D)) D.update()
|
|
#endif
|
|
|
|
/connection_manager/proc/erase_all()
|
|
writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/connection_manager/proc/erase_all() called tick#: [world.time]")
|
|
if(check(N)) N.erase()
|
|
if(check(S)) S.erase()
|
|
if(check(E)) E.erase()
|
|
if(check(W)) W.erase()
|
|
#ifdef ZLEVELS
|
|
if(check(U)) U.erase()
|
|
if(check(D)) D.erase()
|
|
#endif
|
|
|
|
/connection_manager/proc/check(connection/c)
|
|
writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/connection_manager/proc/check() called tick#: [world.time]")
|
|
return c && c.valid() |