コード例 #1
0
 public override bool IsSerialized()
 {
     if (MyAPIGateway.Multiplayer.IsServer)
     {
         if (O2Generator.Storage != null)
         {
             O2State.SaveState();
             O2Set.SaveSettings();
         }
     }
     return(false);
 }
コード例 #2
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();
             }
         }
     }
 }
コード例 #3
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;
            }
        }
コード例 #4
0
 private void DoorTightnessFix()
 {
     if (!AirPressure)
     {
         _doorsStage1 = true;
         _doorsStage2 = true;
         _doorsStage3 = true;
         _doorsStage4 = true;
         O2Set.Settings.FixRoomPressure = false;
         if (Session.Enforced.Debug == 1)
         {
             Log.Line("AirPressure is disabled");
         }
         return;
     }
     if (!_doorsStage1)
     {
         Doors.Clear();
         foreach (var grid in ShieldComp.DefenseShields.ProtectedEntCache.Keys)
         {
             if (!(grid is MyCubeGrid))
             {
                 continue;
             }
             foreach (var myCube in ((MyCubeGrid)grid).GetFatBlocks())
             {
                 var myDoor = myCube as IMyDoor;
                 if (myDoor != null)
                 {
                     var status = myDoor.Status;
                     if (status == DoorStatus.Opening || status == DoorStatus.Open)
                     {
                         status = DoorStatus.Open;
                         myDoor.CloseDoor();
                     }
                     else
                     {
                         status = DoorStatus.Closed;
                         myDoor.OpenDoor();
                     }
                     Doors.Add(myDoor, status);
                 }
             }
         }
         if (!_isDedicated)
         {
             SendFixBroadcast();
         }
         _doorsStage1 = true;
     }
     else if (!_doorsStage2)
     {
         foreach (var item in Doors)
         {
             if (item.Value == DoorStatus.Open)
             {
                 item.Key.OpenDoor();
             }
             else
             {
                 item.Key.CloseDoor();
             }
         }
         _doorsStage2 = true;
     }
     else if (!_doorsStage3)
     {
         foreach (var item in Doors)
         {
             if (item.Value == DoorStatus.Closed)
             {
                 item.Key.OpenDoor();
             }
         }
         _doorsStage3 = true;
     }
     else if (!_doorsStage4)
     {
         foreach (var item in Doors)
         {
             if (item.Value == DoorStatus.Closed)
             {
                 item.Key.OpenDoor();
                 item.Key.CloseDoor();
             }
         }
         _doorsStage4 = true;
         O2Set.Settings.FixRoomPressure = false;
         O2Set.SaveSettings();
         Doors.Clear();
     }
 }