Beispiel #1
0
        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();
            }
        }
Beispiel #2
0
 public override bool IsSerialized()
 {
     if (MyAPIGateway.Multiplayer.IsServer)
     {
         if (O2Generator.Storage != null)
         {
             O2State.SaveState();
             O2Set.SaveSettings();
         }
     }
     return(false);
 }
Beispiel #3
0
 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();
             }
         }
     }
 }
Beispiel #4
0
        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;
            }
        }