mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 23:52:12 +00:00
This is it. The big one. Risk: Very large. This modifies or rewrites several important systems. Some things still need balancing, but that's probably better done if/when this hits dev. changes: New smooth lighting system. Machinery split into three processes: machinery, powernet, pipenet Removed due to breakage. Refactored into multi-step process. Mob process rewritten. NanoUI process rewritten. Objects process rewritten. Tweaked color output of station lights. Slime core lights now emit colored light. Fixed light update frequency issue with fire alarms, hydroponics trays, and airlocks. Increased light emission from bolted airlocks. Miscellaneous performance improvements. New datum pool implementation. New lighting usage profiler. Lighting system now tracks UV light, which is not visible to players. Space now has a parallax effect. Disabled Spin View verbs due to incompatibility with the new lighting system. Disabled hallucination view spin due to incompatibility with the new lighting system. Lighting system now initializes in the lobby before the round starts to reduce BoR deadtime. Added UV light tracking to lighting engine; dionae now gain energy exclusively from UV light. Added colored lighting to a few consoles that used default (white) light.
99 lines
3.1 KiB
Plaintext
99 lines
3.1 KiB
Plaintext
//simplified MC that is designed to fail when procs 'break'. When it fails it's just replaced with a new one.
|
|
//It ensures master_controller.process() is never doubled up by killing the MC (hence terminating any of its sleeping procs)
|
|
//WIP, needs lots of work still
|
|
|
|
var/global/datum/controller/game_controller/master_controller //Set in world.New()
|
|
|
|
var/global/controller_iteration = 0
|
|
var/global/last_tick_duration = 0
|
|
|
|
var/global/air_processing_killed = 0
|
|
var/global/pipe_processing_killed = 0
|
|
|
|
datum/controller/game_controller
|
|
var/list/shuttle_list // For debugging and VV
|
|
|
|
datum/controller/game_controller/New()
|
|
//There can be only one master_controller. Out with the old and in with the new.
|
|
if(master_controller != src)
|
|
log_debug("Rebuilding Master Controller")
|
|
if(istype(master_controller))
|
|
qdel(master_controller)
|
|
master_controller = src
|
|
|
|
if(!job_master)
|
|
job_master = new /datum/controller/occupations()
|
|
job_master.SetupOccupations()
|
|
job_master.LoadJobs("config/jobs.txt")
|
|
admin_notice("<span class='danger'>Job setup complete</span>", R_DEBUG)
|
|
|
|
if(!syndicate_code_phrase) syndicate_code_phrase = generate_code_phrase()
|
|
if(!syndicate_code_response) syndicate_code_response = generate_code_phrase()
|
|
|
|
datum/controller/game_controller/proc/setup()
|
|
world.tick_lag = config.Ticklag
|
|
|
|
spawn(20)
|
|
createRandomZlevel()
|
|
|
|
setup_objects()
|
|
setupgenetics()
|
|
SetupXenoarch()
|
|
|
|
transfer_controller = new
|
|
|
|
|
|
datum/controller/game_controller/proc/setup_objects()
|
|
admin_notice("<span class='danger'>Initializing objects</span>", R_DEBUG)
|
|
sleep(-1)
|
|
objects_initialized = 1
|
|
for(var/A in objects_init_list)
|
|
var/atom/movable/object = A
|
|
if(isnull(object.gcDestroyed))
|
|
object.initialize()
|
|
|
|
objects_init_list.Cut()
|
|
|
|
admin_notice("<span class='danger'>Initializing areas</span>", R_DEBUG)
|
|
sleep(-1)
|
|
for(var/A in all_areas)
|
|
var/area/area = A
|
|
area.initialize()
|
|
|
|
admin_notice("<span class='danger'>Initializing pipe networks</span>", R_DEBUG)
|
|
sleep(-1)
|
|
for(var/obj/machinery/atmospherics/machine in machines)
|
|
machine.build_network()
|
|
|
|
admin_notice("<span class='danger'>Initializing atmos machinery.</span>", R_DEBUG)
|
|
sleep(-1)
|
|
for(var/obj/machinery/atmospherics/unary/U in machines)
|
|
if(istype(U, /obj/machinery/atmospherics/unary/vent_pump))
|
|
var/obj/machinery/atmospherics/unary/vent_pump/T = U
|
|
T.broadcast_status()
|
|
else if(istype(U, /obj/machinery/atmospherics/unary/vent_scrubber))
|
|
var/obj/machinery/atmospherics/unary/vent_scrubber/T = U
|
|
T.broadcast_status()
|
|
|
|
|
|
admin_notice(span("danger", "Caching space parallax."))
|
|
create_global_parallax_icons()
|
|
admin_notice(span("danger", "Done."))
|
|
|
|
admin_notice(span("danger", "Setting up lighting."))
|
|
initialize_lighting()
|
|
admin_notice(span("danger", "Lighting Setup Completed."))
|
|
|
|
//Spawn the contents of the cargo warehouse
|
|
sleep(-1)
|
|
spawn_cargo_stock()
|
|
|
|
// Set up antagonists.
|
|
populate_antag_type_list()
|
|
|
|
//Set up spawn points.
|
|
populate_spawn_points()
|
|
|
|
admin_notice("<span class='danger'>Initializations complete.</span>", R_DEBUG)
|
|
sleep(-1)
|