Make planets more generic

So that Sif doesn't have to be the only one!
This commit is contained in:
Arokha Sieyes
2017-04-14 21:33:37 -04:00
parent 75cc189723
commit aaeae6695a
5 changed files with 27 additions and 21 deletions

View File

@@ -1,11 +1,16 @@
var/datum/controller/process/planet/planet_controller = null
/datum/controller/process/planet /datum/controller/process/planet
var/list/planets = list() var/list/planets = list()
/datum/controller/process/planet/setup() /datum/controller/process/planet/setup()
name = "planet" name = "planet"
planet_controller = src
schedule_interval = 600 // every minute schedule_interval = 600 // every minute
planet_sif = new() var/list/planet_datums = typesof(/datum/planet) - /datum/planet
planets.Add(planet_sif) for(var/P in planet_datums)
var/datum/planet/NP = new P()
planets.Add(NP)
/datum/controller/process/planet/doWork() /datum/controller/process/planet/doWork()
for(var/datum/planet/P in planets) for(var/datum/planet/P in planets)

View File

@@ -977,7 +977,7 @@
if(!check_rights(R_DEBUG)) if(!check_rights(R_DEBUG))
return return
var/datum/planet/planet = input(usr, "Which planet do you want to modify the weather on?", "Change Weather") in list(planet_sif) var/datum/planet/planet = input(usr, "Which planet do you want to modify the weather on?", "Change Weather") in planet_controller.planets
var/datum/weather/new_weather = input(usr, "What weather do you want to change to?", "Change Weather") as null|anything in planet.weather_holder.allowed_weather_types var/datum/weather/new_weather = input(usr, "What weather do you want to change to?", "Change Weather") as null|anything in planet.weather_holder.allowed_weather_types
if(new_weather) if(new_weather)
planet.weather_holder.change_weather(new_weather) planet.weather_holder.change_weather(new_weather)
@@ -993,7 +993,7 @@
if(!check_rights(R_DEBUG)) if(!check_rights(R_DEBUG))
return return
var/datum/planet/planet = input(usr, "Which planet do you want to modify time on?", "Change Time") in list(planet_sif) var/datum/planet/planet = input(usr, "Which planet do you want to modify time on?", "Change Time") in planet_controller.planets
var/datum/time/current_time_datum = planet.current_time var/datum/time/current_time_datum = planet.current_time
var/new_hour = input(usr, "What hour do you want to change to?", "Change Time", text2num(current_time_datum.show_time("hh"))) as null|num var/new_hour = input(usr, "What hour do you want to change to?", "Change Time", text2num(current_time_datum.show_time("hh"))) as null|num

View File

@@ -36,7 +36,12 @@
if(weather_holder) if(weather_holder)
weather_holder.process() weather_holder.process()
// Returns the time datum of Sif. /datum/planet/proc/update_sun_deferred(var/new_range, var/new_brightness, var/new_color)
/proc/get_sif_time() set background = 1
if(planet_sif) set waitfor = 0
return planet_sif.current_time var/i = 0
for(var/turf/simulated/floor/T in outdoor_turfs)
T.set_light(new_range, new_brightness, new_color)
i++
if(i % 30 == 0)
sleep(1)

View File

@@ -13,6 +13,7 @@ var/datum/planet/sif/planet_sif = null
/datum/planet/sif/New() /datum/planet/sif/New()
..() ..()
planet_sif = src
weather_holder = new /datum/weather_holder/sif(src) // Cold weather is also nice. weather_holder = new /datum/weather_holder/sif(src) // Cold weather is also nice.
// This code is horrible. // This code is horrible.
@@ -95,12 +96,11 @@ var/datum/planet/sif/planet_sif = null
spawn(1) spawn(1)
update_sun_deferred(2, new_brightness, new_color) update_sun_deferred(2, new_brightness, new_color)
/datum/planet/proc/update_sun_deferred(var/new_range, var/new_brightness, var/new_color) // We're gonna pretend there are 32 hours in a Sif day instead of 32.64 for the purposes of not losing sanity. We lose 38m 24s but the alternative is a path to madness.
set background = 1 /datum/time/sif
set waitfor = 0 seconds_in_day = 60 * 60 * 32 * 10 // 115,200 seconds. If we did 32.64 hours/day it would be around 117,504 seconds instead.
var/i = 0
for(var/turf/simulated/floor/T in outdoor_turfs) // Returns the time datum of Sif.
T.set_light(new_range, new_brightness, new_color) /proc/get_sif_time()
i++ if(planet_sif)
if(i % 30 == 0) return planet_sif.current_time
sleep(1)

View File

@@ -70,7 +70,3 @@
answer = replacetext(answer, "mm", minute_text) answer = replacetext(answer, "mm", minute_text)
answer = replacetext(answer, "ss", second_text) answer = replacetext(answer, "ss", second_text)
return answer return answer
// We're gonna pretend there are 32 hours in a Sif day instead of 32.64 for the purposes of not losing sanity. We lose 38m 24s but the alternative is a path to madness.
/datum/time/sif
seconds_in_day = 60 * 60 * 32 * 10 // 115,200 seconds. If we did 32.64 hours/day it would be around 117,504 seconds instead.