示例#1
0
        private void BeforeInit()
        {
            if (Modulator.CubeGrid.Physics == null)
            {
                return;
            }

            _isServer    = Session.Instance.IsServer;
            _isDedicated = Session.Instance.DedicatedServer;

            ResetComp();

            Session.Instance.Modulators.Add(this);

            CreateUi();
            ModUi.ComputeDamage(this, ModUi.GetDamage(Modulator));

            Entity.TryGetSubpart("Rotor", out _subpartRotor);
            PowerInit();
            Modulator.RefreshCustomInfo();
            StateChange(true);
            if (!Session.Instance.ModAction)
            {
                Session.Instance.ModAction = true;
                Session.AppendConditionToAction <IMyUpgradeModule>((a) => Session.Instance.ModActions.Contains(a.Id), (a, b) => b.GameLogic.GetAs <Modulators>() != null && Session.Instance.ModActions.Contains(a.Id));
            }
            MainInit     = true;
            NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME;
            _bTime       = _isDedicated ? 10 : 1;
            _bInit       = true;
        }
示例#2
0
 internal void TerminalRefresh(bool update = true)
 {
     Modulator.RefreshCustomInfo();
     if (update && InControlPanel && InThisTerminal)
     {
         MyCube.UpdateTerminal();
     }
 }
示例#3
0
 private void ModulatorOn()
 {
     if (_isServer && StateChange())
     {
         NeedUpdate();
         StateChange(true);
         Modulator.RefreshCustomInfo();
     }
 }
示例#4
0
        private void Timing()
        {
            if (_tock60 && !_isDedicated)
            {
                TerminalRefresh();
            }

            if (_tock33)
            {
                if (SettingsUpdated)
                {
                    SettingsUpdated = false;
                    ModSet.SaveSettings();
                    ModState.SaveState();
                    if (Session.Enforced.Debug == 3)
                    {
                        Log.Line($"SettingsUpdated: server:{_isServer} - ModulatorId [{Modulator.EntityId}]");
                    }
                }
            }
            else if (_tock34)
            {
                if (ClientUiUpdate)
                {
                    ClientUiUpdate = false;
                    MyCube.UpdateTerminal();
                    Modulator.RefreshCustomInfo();
                    if (!_isServer)
                    {
                        ModSet.NetworkUpdate();
                    }
                }
            }

            if (_isDedicated || (_subDelayed && _tick > _subTick + 9))
            {
                if (Session.Enforced.Debug == 3)
                {
                    Log.Line($"Delayed tick: {_tick} - hierarchytick: {_subTick}");
                }
                _subDelayed = false;
                HierarchyChanged();
            }
        }
示例#5
0
        private void ModulatorOff()
        {
            var stateChange = StateChange();

            if (stateChange)
            {
                if (_isServer)
                {
                    NeedUpdate();
                    StateChange(true);
                    Modulator.RefreshCustomInfo();
                }
                else
                {
                    StateChange(true);
                    Modulator.RefreshCustomInfo();
                }
            }
        }
示例#6
0
        private bool BlockWorking()
        {
            if (_tock60 || _firstRun)
            {
                _powered = Sink.IsPowerAvailable(_gId, 0.01f);
            }
            if (!MyCube.IsWorking || !_powered)
            {
                if (!_isDedicated && _tock60)
                {
                    Modulator.RefreshCustomInfo();
                }
                ModState.State.Online = false;
                return(false);
            }
            if (ModulatorComp.Modulator == null)
            {
                ModulatorComp.Modulator = this;
            }
            else if (ModulatorComp.Modulator != this)
            {
                if (!ModState.State.Backup || _firstLoop)
                {
                    Session.Instance.BlockTagBackup(Modulator);
                }
                ModState.State.Backup = true;
                ModState.State.Online = false;
                _firstLoop            = false;
                return(false);
            }

            ModState.State.Backup = false;

            if (_tock60 || _firstRun)
            {
                ServerCheckForCompLink();
            }
            ModState.State.Online = true;
            _firstLoop            = false;
            return(true);
        }