public static void Update(CelestialBody body, double elapsed_s) { // do nothing if storms are disabled if (!Features.SpaceWeather) { return; } StormData bd = DB.Storm(body.name); CreateStorm(bd, body, body.orbit.semiMajorAxis); // send messages if (Body_is_relevant(body)) { switch (bd.storm_state) { case 2: if (bd.msg_storm < 2) { Message.Post(Severity.danger, Lib.BuildString("The coronal mass ejection hit <b>", body.name, "</b> system"), Lib.BuildString("Storm duration: ", Lib.HumanReadableDuration(bd.displayed_duration))); } break; case 1: if (bd.msg_storm < 1 && bd.display_warning) { var tti = bd.storm_time - Planetarium.GetUniversalTime(); Message.Post(Severity.warning, Lib.BuildString("Our observatories report a coronal mass ejection directed toward <b>", body.name, "</b> system"), Lib.BuildString("Time to impact: ", Lib.HumanReadableDuration(tti))); } break; case 0: if (bd.msg_storm == 2) { Message.Post(Severity.relax, Lib.BuildString("The solar storm at <b>", body.name, "</b> system is over")); } break; } } bd.msg_storm = bd.storm_state; }
void Problem_storm(Vessel v, ref List <Texture2D> icons, ref List <string> tooltips) { if (Storm.Incoming(v)) { icons.Add(Textures.storm_yellow); var bd = Lib.IsSun(v.mainBody) ? v.KerbalismData().stormData : DB.Storm(Lib.GetParentPlanet(v.mainBody).name); var tti = bd.storm_time - Planetarium.GetUniversalTime(); tooltips.Add(Lib.BuildString(Lib.Color(Local.Monitor_ejectionincoming, Lib.Kolor.Orange), "\n<i>", Local.Monitor_TimetoimpactCoronalmass, Lib.HumanReadableDuration(tti), "</i>")); //"Coronal mass ejection incoming"Time to impact: } if (Storm.InProgress(v)) { icons.Add(Textures.storm_red); var bd = Lib.IsSun(v.mainBody) ? v.KerbalismData().stormData : DB.Storm(Lib.GetParentPlanet(v.mainBody).name); var remainingDuration = bd.storm_time + bd.displayed_duration - Planetarium.GetUniversalTime(); tooltips.Add(Lib.BuildString(Lib.Color(Local.Monitor_Solarstorminprogress, Lib.Kolor.Red), "\n<i>", Local.Monitor_SolarstormRemaining, Lib.HumanReadableDuration(remainingDuration), "</i>")); //"Solar storm in progress"Remaining duration: } }
/// <summary>return true if a storm is in progress</summary> public static bool InProgress(Vessel v) { var bd = Lib.IsSun(v.mainBody) ? v.KerbalismData().stormData : DB.Storm(Lib.GetParentPlanet(v.mainBody).name); return(bd.storm_state == 2); }
/// <summary>return true if a storm is incoming</summary> public static bool Incoming(Vessel v) { var bd = Lib.IsSun(v.mainBody) ? v.KerbalismData().stormData : DB.Storm(Lib.GetParentPlanet(v.mainBody).name); return(bd.storm_state == 1 && bd.display_warning); }