private void NeedUpdate(bool onState, bool turnOn) { var o2State = O2State.State; if (ShieldComp?.DefenseShields == null) { if (O2State.State.Pressurized) { o2State.Pressurized = false; o2State.VolFilled = 0; o2State.DefaultO2 = 0; o2State.O2Level = 0; o2State.ShieldVolume = 0; O2State.SaveState(); O2State.NetworkUpdate(); } return; } var conState = ShieldComp.DefenseShields.DsState.State; var o2Level = conState.IncreaseO2ByFPercent + ShieldComp.DefaultO2; var o2Change = !o2State.VolFilled.Equals(_shieldVolFilled) || !o2State.DefaultO2.Equals(ShieldComp.DefaultO2) || !o2State.ShieldVolume.Equals(ShieldComp.ShieldVolume) || !o2State.O2Level.Equals(o2Level); if (!onState && turnOn) { o2State.Pressurized = true; o2State.VolFilled = _shieldVolFilled; o2State.DefaultO2 = ShieldComp.DefaultO2; o2State.O2Level = o2Level; o2State.ShieldVolume = ShieldComp.ShieldVolume; O2State.SaveState(); O2State.NetworkUpdate(); } else if (onState & !turnOn) { o2State.Pressurized = false; o2State.VolFilled = _shieldVolFilled; o2State.DefaultO2 = ShieldComp.DefaultO2; o2State.O2Level = o2Level; o2State.ShieldVolume = ShieldComp.ShieldVolume; O2State.SaveState(); O2State.NetworkUpdate(); } else if (o2Change) { o2State.VolFilled = _shieldVolFilled; o2State.DefaultO2 = ShieldComp.DefaultO2; o2State.O2Level = o2Level; o2State.ShieldVolume = ShieldComp.ShieldVolume; O2State.SaveState(); O2State.NetworkUpdate(); } }
public override bool IsSerialized() { if (MyAPIGateway.Multiplayer.IsServer) { if (O2Generator.Storage != null) { O2State.SaveState(); O2Set.SaveSettings(); } } return(false); }
private void SettingsUpdate() { if (_count == 3) { if (SettingsUpdated) { if (Session.Enforced.Debug == 3) { Log.Line($"SettingsUpdated: server:{_isServer} - FixRooms:{O2Set.Settings.FixRoomPressure} - O2GeneratorId [{O2Generator.EntityId}]"); } SettingsUpdated = false; O2Set.SaveSettings(); O2State.SaveState(); if (!ClientUiUpdate && O2Set.Settings.FixRoomPressure) { RestartDoorFix(); } } } else if (_count == 4 && !SettingsUpdated) { if (ClientUiUpdate) { if (Session.Enforced.Debug == 3) { Log.Line($"ClientUiUpdate: server:{_isServer} - FixRooms:{O2Set.Settings.FixRoomPressure} - O2GeneratorId [{O2Generator.EntityId}]"); } ClientUiUpdate = false; MyCube.UpdateTerminal(); O2Generator.RefreshCustomInfo(); if (!_isServer) { O2Set.NetworkUpdate(); } if (O2Set.Settings.FixRoomPressure) { RestartDoorFix(); } } } }
private void StorageSetup() { if (O2Set == null) { O2Set = new O2GeneratorSettings(O2Generator); } if (O2State == null) { O2State = new O2GeneratorState(O2Generator); } if (O2Generator.Storage == null) { O2State.StorageInit(); } O2Set.LoadSettings(); O2State.LoadState(); if (MyAPIGateway.Multiplayer.IsServer) { O2Set.Settings.FixRoomPressure = false; } }