/tg/ Station 13 - Modules - TypesDefine Details

code/__DEFINES/MC.dm

SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier)

SS_NO_INITsubsystem does not initialize.
SS_NO_FIREsubsystem does not fire. (like can_fire = 0, but keeps it from getting added to the processing subsystems list) (Requires a MC restart to change)
SS_BACKGROUNDSubsystem only runs on spare cpu (after all non-background subsystems have ran that tick) SS_BACKGROUND has its own priority bracket, this overrides SS_TICKER's priority bump
SS_NO_TICK_CHECKsubsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background))
SS_TICKERTreat wait as a tick count, not DS, run every wait ticks. (also forces it to run first in the tick (unless SS_BACKGROUND)) (implies all runlevels because of how it works) This is designed for basically anything that works as a mini-mc (like SStimer)
SS_KEEP_TIMINGkeep the subsystem's timing on point by firing early if it fired late last fire because of lag ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds.
SS_POST_FIRE_TIMINGCalculate its next fire after its fired. (IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be) This flag overrides SS_KEEP_TIMING

SUBSYSTEM STATES

SS_IDLEaint doing shit.
SS_QUEUEDqueued to run
SS_RUNNINGactively running
SS_PAUSEDpaused by mc_tick_check
SS_SLEEPINGfire() slept.
SS_PAUSINGin the middle of pausing

Define Details

SS_BACKGROUND

Subsystem only runs on spare cpu (after all non-background subsystems have ran that tick) SS_BACKGROUND has its own priority bracket, this overrides SS_TICKER's priority bump

SS_IDLE

aint doing shit.

SS_KEEP_TIMING

keep the subsystem's timing on point by firing early if it fired late last fire because of lag ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds.

SS_NO_FIRE

subsystem does not fire. (like can_fire = 0, but keeps it from getting added to the processing subsystems list) (Requires a MC restart to change)

SS_NO_INIT

subsystem does not initialize.

SS_NO_TICK_CHECK

subsystem does not tick check, and should not run unless there is enough time (or its running behind (unless background))

SS_PAUSED

paused by mc_tick_check

SS_PAUSING

in the middle of pausing

SS_POST_FIRE_TIMING

Calculate its next fire after its fired. (IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be) This flag overrides SS_KEEP_TIMING

SS_QUEUED

queued to run

SS_RUNNING

actively running

SS_SLEEPING

fire() slept.

SS_TICKER

Treat wait as a tick count, not DS, run every wait ticks. (also forces it to run first in the tick (unless SS_BACKGROUND)) (implies all runlevels because of how it works) This is designed for basically anything that works as a mini-mc (like SStimer)