Updated auxmos (see desc)

1. All callbacks are now auxmos-side, using new auxcallbacks.
2. Heat processing is now paused for and has been optimized by making it have fewer callbacks.
This commit is contained in:
Putnam
2020-12-10 12:03:28 -08:00
parent 65920283f5
commit d1277ad7b2
15 changed files with 32 additions and 58 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -151,17 +151,14 @@ SUBSYSTEM_DEF(air)
if(currentpart == SSAIR_TURF_CONDUCTION)
timer = TICK_USAGE_REAL
process_turf_heat(CALLBACK(GLOBAL_PROC,/proc/heat_post_process))
if(process_turf_heat(MC_TICK_REMAINING_MS))
pause()
cost_superconductivity = MC_AVERAGE(cost_superconductivity, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer))
if(state != SS_RUNNING)
return
resumed = 0
currentpart = SSAIR_REBUILD_PIPENETS
/proc/heat_post_process(turf/T,new_temp)
T.temperature = new_temp
T.temperature_expose()
/datum/controller/subsystem/air/proc/process_pipenets(resumed = 0)
if (!resumed)
src.currentrun = networks.Copy()
@@ -223,15 +220,8 @@ SUBSYSTEM_DEF(air)
if(MC_TICK_CHECK)
return
/proc/post_process_equalize(turf/open/T,turf/open/otherT,amount)
if(!istype(T) || !istype(otherT))
return
T.update_visuals()
otherT.update_visuals()
T.consider_pressure_difference(otherT,amount)
/datum/controller/subsystem/air/proc/process_turf_equalize(resumed = 0)
if(process_turf_equalize_extools((Master.current_ticklimit - TICK_USAGE) * world.tick_lag,CALLBACK(GLOBAL_PROC,/proc/post_process_equalize)))
if(process_turf_equalize_extools(MC_TICK_REMAINING_MS))
pause()
/*
//cache for sanic speed
@@ -250,25 +240,8 @@ SUBSYSTEM_DEF(air)
return
*/
/proc/post_process_turf(flags,turf/open/T,list/tiles_with_diffs)
if(!isopenturf(T))
return
if(flags & 2)
T.air.react()
if(flags & 1)
T.update_visuals()
for(var/list/pair in tiles_with_diffs)
var/turf/open/enemy_tile = pair[1]
if(istype(enemy_tile))
var/difference = pair[2]
if(difference > 0)
T.consider_pressure_difference(enemy_tile, difference)
else
enemy_tile.consider_pressure_difference(T, -difference)
/datum/controller/subsystem/air/proc/process_turfs(resumed = 0)
var/datum/callback/post_process = CALLBACK(GLOBAL_PROC,/proc/post_process_turf)
if(process_turfs_extools(post_process))
if(process_turfs_extools(MC_TICK_REMAINING_MS))
pause()
/*
//cache for sanic speed
@@ -291,7 +264,7 @@ SUBSYSTEM_DEF(air)
T.update_visuals()
/datum/controller/subsystem/air/proc/process_excited_groups(resumed = 0)
if(!process_excited_groups_extools(CALLBACK(GLOBAL_PROC,/proc/post_process_excited_turf)))
if(!process_excited_groups_extools(MC_TICK_REMAINING_MS))
pause()
/datum/controller/subsystem/air/proc/process_turfs_extools()

View File

@@ -4,17 +4,11 @@ SUBSYSTEM_DEF(callbacks)
wait = 1
priority = FIRE_PRIORITY_CALLBACKS
/proc/_process_callbacks()
SScallbacks.can_fire = 0
SScallbacks.flags |= SS_NO_FIRE
CRASH("Auxtools not found! Callback subsystem shutting itself off.")
/proc/_process_callbacks_priority()
/proc/process_callbacks()
SScallbacks.can_fire = 0
SScallbacks.flags |= SS_NO_FIRE
CRASH("Auxtools not found! Callback subsystem shutting itself off.")
/datum/controller/subsystem/callbacks/fire()
_process_callbacks_priority()
if(TICK_CHECK || _process_callbacks(MC_TICK_REMAINING_MS))
if(process_callbacks(null,MC_TICK_REMAINING_MS))
pause()

View File

@@ -69,7 +69,7 @@
ChangeTurf(/turf/open/floor/plating/rust)
/turf/open/floor/wood/cold
temperature = 255.37
initial_temperature = 255.37
/turf/open/floor/wood/airless
initial_gas_mix = AIRLESS_ATMOS

View File

@@ -177,7 +177,7 @@
icon = 'icons/turf/floors/ice_turf.dmi'
icon_state = "unsmooth"
initial_gas_mix = FROZEN_ATMOS
temperature = 180
initial_temperature = 180
planetary_atmos = TRUE
baseturfs = /turf/open/floor/plating/ice
slowdown = 1
@@ -201,10 +201,10 @@
canSmoothWith = list(/turf/open/floor/plating/ice/smooth, /turf/open/floor/plating/ice, /turf/open/floor/plating/ice/colder)
/turf/open/floor/plating/ice/colder
temperature = 140
initial_temperature = 140
/turf/open/floor/plating/ice/temperate
temperature = 255.37
initial_temperature = 255.37
/turf/open/floor/plating/ice/break_tile()
return
@@ -221,7 +221,7 @@
icon = 'icons/turf/snow.dmi'
icon_state = "snowplating"
initial_gas_mix = FROZEN_ATMOS
temperature = 180
initial_temperature = 180
attachment_holes = FALSE
planetary_atmos = TRUE
footstep = FOOTSTEP_SAND
@@ -240,10 +240,10 @@
icon_state = "smooth"
/turf/open/floor/plating/snowed/colder
temperature = 140
initial_temperature = 140
/turf/open/floor/plating/snowed/temperatre
temperature = 255.37
initial_temperature = 255.37
/turf/open/floor/plating/snowed/smoothed/icemoon
initial_gas_mix = ICEMOON_DEFAULT_ATMOS

View File

@@ -13,7 +13,7 @@
density = TRUE
blocks_air = 1
layer = EDGED_TURF_LAYER
temperature = TCMB
initial_temperature = 293.15
var/environment_type = "asteroid"
var/turf/open/floor/plating/turf_type = /turf/open/floor/plating/asteroid/airless
var/mineralType = null

View File

@@ -4,7 +4,7 @@
name = "\proper space"
intact = 0
temperature = TCMB
initial_temperature = TCMB
thermal_conductivity = 0
heat_capacity = 700000

View File

@@ -13,7 +13,7 @@
// This shouldn't be modified directly, use the helper procs.
var/list/baseturfs = /turf/baseturf_bottom
var/temperature = T20C
var/initial_temperature = T20C
var/to_be_destroyed = 0 //Used for fire, if a melting temperature was reached, it will be destroyed
var/max_fire_temperature_sustained = 0 //The max temperature of the fire which it was subjected to
@@ -95,6 +95,10 @@
/turf/proc/__auxtools_update_turf_temp_info()
/turf/return_temperature()
/turf/proc/set_temperature()
/turf/proc/Initalize_Atmos(times_fired)
CALCULATE_ADJACENT_TURFS(src)

View File

@@ -76,7 +76,7 @@
return air
/turf/temperature_expose()
if(temperature > heat_capacity)
if(return_temperature() > heat_capacity)
to_be_destroyed = TRUE
/turf/open/proc/eg_reset_cooldowns()
@@ -179,7 +179,10 @@
//////////////////////////SPACEWIND/////////////////////////////
/turf/open/proc/consider_pressure_difference(turf/T, difference)
/turf/proc/consider_pressure_difference()
return
/turf/open/consider_pressure_difference(turf/T, difference)
if(difference > pressure_difference)
pressure_direction = get_dir(src, T)
pressure_difference = difference

View File

@@ -243,8 +243,8 @@ GLOBAL_LIST_INIT(auxtools_atmos_initialized,FALSE)
//acounts for changes in temperature
var/turf/model_parent = model.parent_type
if(model.temperature != initial(model.temperature) || model.temperature != initial(model_parent.temperature))
set_temperature(model.temperature)
if(model.return_temperature() != initial(model.initial_temperature) || model.return_temperature() != initial(model_parent.initial_temperature))
set_temperature(model.return_temperature())
return 1

View File

@@ -156,7 +156,7 @@
/turf/open/floor/plasteel/dark/snowdin
initial_gas_mix = FROZEN_ATMOS
planetary_atmos = 1
temperature = 180
initial_temperature = 180
/turf/open/lava/plasma
name = "liquid plasma"

View File

@@ -61,7 +61,7 @@
var/datum/effect_system/spark_spread/s = new
s.set_up(3, 1, T)
s.start()
T.temperature = 5000
T.set_temperature(5000)
T.hotspot_expose(50000, 50000, TRUE, TRUE)

View File

@@ -939,7 +939,7 @@
loc_temp = obj_temp
else if(isspaceturf(get_turf(src)))
var/turf/heat_turf = get_turf(src)
loc_temp = heat_turf.temperature
loc_temp = heat_turf.return_temperature()
return loc_temp
/mob/living/proc/get_standard_pixel_x_offset(lying = 0)

View File

@@ -14,7 +14,7 @@
if(T.air)
if(T.initial_gas_mix)
T.air.parse_gas_string(T.initial_gas_mix)
T.temperature = T.air.return_temperature()
T.set_temperature(T.air.return_temperature())
else
T.air.copy_from_turf(T)