mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
finishes work on adapting the goon process scheduler for BS12.
This commit is contained in:
@@ -96,6 +96,29 @@
|
||||
#include "code\controllers\subsystems.dm"
|
||||
#include "code\controllers\verbs.dm"
|
||||
#include "code\controllers\voting.dm"
|
||||
#include "code\controllers\Processes\air.dm"
|
||||
#include "code\controllers\Processes\disease.dm"
|
||||
#include "code\controllers\Processes\emergencyShuttle.dm"
|
||||
#include "code\controllers\Processes\event.dm"
|
||||
#include "code\controllers\Processes\inactivity.dm"
|
||||
#include "code\controllers\Processes\lighting.dm"
|
||||
#include "code\controllers\Processes\machinery.dm"
|
||||
#include "code\controllers\Processes\mob.dm"
|
||||
#include "code\controllers\Processes\nanoui.dm"
|
||||
#include "code\controllers\Processes\obj.dm"
|
||||
#include "code\controllers\Processes\pipenet.dm"
|
||||
#include "code\controllers\Processes\powernet.dm"
|
||||
#include "code\controllers\Processes\Shuttle.dm"
|
||||
#include "code\controllers\Processes\sun.dm"
|
||||
#include "code\controllers\Processes\supply.dm"
|
||||
#include "code\controllers\Processes\ticker.dm"
|
||||
#include "code\controllers\Processes\vote.dm"
|
||||
#include "code\controllers\ProcessScheduler\core\_define.dm"
|
||||
#include "code\controllers\ProcessScheduler\core\_stubs.dm"
|
||||
#include "code\controllers\ProcessScheduler\core\process.dm"
|
||||
#include "code\controllers\ProcessScheduler\core\processScheduler.dm"
|
||||
#include "code\controllers\ProcessScheduler\core\updateQueue.dm"
|
||||
#include "code\controllers\ProcessScheduler\core\updateQueueWorker.dm"
|
||||
#include "code\controllers\subsystem\alarms.dm"
|
||||
#include "code\datums\ai_laws.dm"
|
||||
#include "code\datums\browser.dm"
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
var/global/datum/controller/game_controller/master_controller //Set in world.New()
|
||||
|
||||
var/global/controller_iteration = 0
|
||||
var/global/last_tick_timeofday = world.timeofday
|
||||
var/global/last_tick_duration = 0
|
||||
|
||||
var/global/air_processing_killed = 0
|
||||
@@ -53,8 +52,8 @@ datum/controller/game_controller/New()
|
||||
|
||||
if(!syndicate_code_phrase) syndicate_code_phrase = generate_code_phrase()
|
||||
if(!syndicate_code_response) syndicate_code_response = generate_code_phrase()
|
||||
if(!emergency_shuttle) emergency_shuttle = new /datum/emergency_shuttle_controller()
|
||||
if(!shuttle_controller) shuttle_controller = new /datum/shuttle_controller()
|
||||
// if(!emergency_shuttle) emergency_shuttle = new /datum/emergency_shuttle_controller() // handled in scheduler
|
||||
// if(!shuttle_controller) shuttle_controller = new /datum/shuttle_controller()
|
||||
|
||||
datum/controller/game_controller/proc/setup()
|
||||
world.tick_lag = config.Ticklag
|
||||
@@ -65,12 +64,12 @@ datum/controller/game_controller/proc/setup()
|
||||
spawn(20)
|
||||
createRandomZlevel()
|
||||
|
||||
if(!air_master)
|
||||
/* if(!air_master) // handled in scheduler
|
||||
air_master = new /datum/controller/air_system()
|
||||
air_master.Setup()
|
||||
|
||||
if(!ticker)
|
||||
ticker = new /datum/controller/gameticker()
|
||||
ticker = new /datum/controller/gameticker()*/
|
||||
|
||||
setup_objects()
|
||||
setupgenetics()
|
||||
@@ -80,11 +79,11 @@ datum/controller/game_controller/proc/setup()
|
||||
|
||||
transfer_controller = new
|
||||
|
||||
spawn(0)
|
||||
/* spawn(0) // handled in scheduler
|
||||
if(ticker)
|
||||
ticker.pregame()
|
||||
|
||||
lighting_controller.initializeLighting()
|
||||
lighting_controller.initializeLighting()*/
|
||||
|
||||
|
||||
datum/controller/game_controller/proc/setup_objects()
|
||||
@@ -135,10 +134,6 @@ datum/controller/game_controller/proc/process()
|
||||
while(1) //far more efficient than recursively calling ourself
|
||||
if(!Failsafe) new /datum/controller/failsafe()
|
||||
|
||||
var/currenttime = world.timeofday
|
||||
last_tick_duration = (currenttime - last_tick_timeofday) / 10
|
||||
last_tick_timeofday = currenttime
|
||||
|
||||
if(processing)
|
||||
var/timer
|
||||
var/start_time = world.timeofday
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
solar_next_update = world.time // init the timer
|
||||
angle = rand (0,360) // the station position to the sun is randomised at round start
|
||||
|
||||
/hook/startup/proc/createSun()
|
||||
/*/hook/startup/proc/createSun() // handled in scheduler
|
||||
sun = new /datum/sun()
|
||||
return 1
|
||||
return 1*/
|
||||
|
||||
// calculate the sun's position given the time of day
|
||||
// at the standard rate (100%) the angle is increase/decreased by 6 degrees every minute.
|
||||
|
||||
@@ -156,9 +156,12 @@ var/global/datum/controller/gameticker/ticker
|
||||
if(admins_number == 0)
|
||||
send2adminirc("Round has started with no admins online.")
|
||||
|
||||
supply_controller.process() //Start the supply shuttle regenerating points -- TLE
|
||||
/* supply_controller.process() //Start the supply shuttle regenerating points -- TLE // handled in scheduler
|
||||
master_controller.process() //Start master_controller.process()
|
||||
lighting_controller.process() //Start processing DynamicAreaLighting updates
|
||||
*/
|
||||
|
||||
processScheduler.start()
|
||||
|
||||
for(var/obj/multiz/ladder/L in world) L.connect() //Lazy hackfix for ladders. TODO: move this to an actual controller. ~ Z
|
||||
|
||||
@@ -313,7 +316,7 @@ var/global/datum/controller/gameticker/ticker
|
||||
|
||||
mode.process()
|
||||
|
||||
emergency_shuttle.process()
|
||||
// emergency_shuttle.process() //handled in scheduler
|
||||
|
||||
var/game_finished = 0
|
||||
var/mode_finished = 0
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
/datum/game_mode/malfunction/process()
|
||||
if (apcs >= 3 && malf_mode_declared)
|
||||
AI_win_timeleft -= ((apcs/6)*last_tick_duration) //Victory timer now de-increments based on how many APCs are hacked. --NeoFite
|
||||
AI_win_timeleft -= ((apcs/6)*tickerProcess.getLastTickerTimeDuration()) //Victory timer now de-increments based on how many APCs are hacked. --NeoFite
|
||||
..()
|
||||
if (AI_win_timeleft<=0)
|
||||
check_win()
|
||||
|
||||
@@ -259,3 +259,6 @@ var/max_explosion_range = 14
|
||||
var/global/obj/item/device/radio/intercom/global_announcer = new(null)
|
||||
|
||||
var/list/station_departments = list("Command", "Medical", "Engineering", "Science", "Security", "Cargo", "Civilian")
|
||||
|
||||
var/global/const/TICKS_IN_DAY = 864000
|
||||
var/global/const/TICKS_IN_SECOND = 10
|
||||
@@ -798,20 +798,61 @@ note dizziness decrements automatically in the mob's Life() proc.
|
||||
stat(null,"CPU:\t[world.cpu]")
|
||||
stat(null,"Instances:\t[world.contents.len]")
|
||||
if(statpanel("Status") && master_controller)
|
||||
stat(null,"MasterController-[last_tick_duration] ([master_controller.processing?"On":"Off"]-[controller_iteration])")
|
||||
/* stat(null,"MasterController-[last_tick_duration] ([master_controller.processing?"On":"Off"]-[controller_iteration])") // all this is now under the scheduler
|
||||
stat(null,"Air-[master_controller.air_cost]\tSun-[master_controller.sun_cost]")
|
||||
stat(null,"Mob-[master_controller.mobs_cost]\t#[mob_list.len]")
|
||||
stat(null,"Dis-[master_controller.diseases_cost]\t#[active_diseases.len]")
|
||||
stat(null,"Mch-[master_controller.machines_cost]\t#[machines.len]")
|
||||
stat(null,"Obj-[master_controller.objects_cost]\t#[processing_objects.len]")
|
||||
stat(null,"Net-[master_controller.networks_cost]\tPnet-[master_controller.powernets_cost]")
|
||||
stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]")
|
||||
stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]")*/
|
||||
stat(null,"Event-[master_controller.events_cost]\t#[event_manager.active_events.len]")
|
||||
alarm_manager.stat_entry()
|
||||
stat(null,"Tick-[master_controller.ticker_cost]\tALL-[master_controller.total_cost]")
|
||||
else
|
||||
stat(null,"MasterController-ERROR")
|
||||
|
||||
|
||||
if(processScheduler.getIsRunning())
|
||||
var/datum/controller/process/process
|
||||
|
||||
process = processScheduler.getProcess("ticker")
|
||||
stat(null, "TIC\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("air")
|
||||
stat(null, "AIR\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("lighting")
|
||||
stat(null, "LIG\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("mob")
|
||||
stat(null, "MOB([mob_list.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("machinery")
|
||||
stat(null, "MAC([machines.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("obj")
|
||||
stat(null, "OBJ([processing_objects.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("pipenet")
|
||||
stat(null, "PIP([pipe_networks.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("powernet")
|
||||
stat(null, "POW([powernets.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("nanoui")
|
||||
stat(null, "NAN([nanomanager.processing_uis.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("disease")
|
||||
stat(null, "DIS([active_diseases.len])\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
process = processScheduler.getProcess("sun")
|
||||
stat(null, "SUN\t - #[process.getTicks()]\t - [process.getLastRunTime()]")
|
||||
|
||||
else
|
||||
stat(null, "processScheduler is not running.")
|
||||
|
||||
|
||||
if(listed_turf && client)
|
||||
if(!TurfAdjacent(listed_turf))
|
||||
listed_turf = null
|
||||
|
||||
@@ -60,15 +60,22 @@ var/global/datum/global_init/init = new ()
|
||||
// Create autolathe recipes, as above.
|
||||
populate_lathe_recipes()
|
||||
|
||||
processScheduler = new
|
||||
master_controller = new /datum/controller/game_controller()
|
||||
spawn(1)
|
||||
|
||||
processScheduler.deferSetupFor(/datum/controller/process/ticker)
|
||||
processScheduler.setup()
|
||||
|
||||
master_controller.setup()
|
||||
|
||||
|
||||
|
||||
spawn(3000) //so we aren't adding to the round-start lag
|
||||
if(config.ToRban)
|
||||
ToRban_autoupdate()
|
||||
if(config.kick_inactive)
|
||||
KickInactiveClients()
|
||||
/* if(config.kick_inactive) // handled in scheduler
|
||||
KickInactiveClients()*/
|
||||
|
||||
#undef RECOMMENDED_VERSION
|
||||
|
||||
@@ -209,6 +216,9 @@ var/world_topic_spam_protect_time = world.timeofday
|
||||
/*spawn(0)
|
||||
world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg')) // random end sounds!! - LastyBatsy
|
||||
*/
|
||||
|
||||
processScheduler.stop()
|
||||
|
||||
for(var/client/C in clients)
|
||||
if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite
|
||||
C << link("byond://[config.server]")
|
||||
@@ -228,7 +238,7 @@ var/world_topic_spam_protect_time = world.timeofday
|
||||
log_access("AFK: [key_name(C)]")
|
||||
C << "\red You have been inactive for more than 10 minutes and have been disconnected."
|
||||
del(C)
|
||||
#undef INACTIVITY_KICK
|
||||
//#undef INACTIVITY_KICK
|
||||
|
||||
|
||||
/hook/startup/proc/loadMode()
|
||||
|
||||
Reference in New Issue
Block a user