private void receiveEngineRunCommand(MessageEngineRunCommand msg)
        {
            MessageTick pulse = new MessageTick(0);

            if (msg.RunCommand == EngineRunCommand.RunMax && _runState != TickEngineRunState.RunningMax)
            {
                cancelPulse();
                _numberOfIncompleteSS = _subscribedActorSolarSystems.Count();
                _runState             = TickEngineRunState.RunningMax;
                startTicksTimer();
                receiveTick(pulse);
            }
            else if (msg.RunCommand == EngineRunCommand.RunPulse && _runState != TickEngineRunState.Running)
            {
                _runState  = TickEngineRunState.Running;
                _runCancel = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(0, 5, Self, pulse, ActorRefs.Nobody);
                startTicksTimer();
                receiveTick(pulse);
            }
            else if (msg.RunCommand == EngineRunCommand.Stop && _runState != TickEngineRunState.Stopped)
            {
                _runState = TickEngineRunState.Stopped;
                cancelPulse();
                _secondTimer.Stop();
            }
        }
 private void receiveEngineRunCommand(MessageEngineRunCommand msg)
 {
     MessageTick pulse = new MessageTick(0);
     if (msg.RunCommand == EngineRunCommand.RunMax && _runState != TickEngineRunState.RunningMax)
     {
         cancelPulse();
         _numberOfIncompleteSS = _subscribedActorSolarSystems.Count();
         _runState = TickEngineRunState.RunningMax;
         startTicksTimer();
         receiveTick(pulse);
     }
     else if (msg.RunCommand == EngineRunCommand.RunPulse && _runState != TickEngineRunState.Running)
     {
         _runState = TickEngineRunState.Running;
         _runCancel = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(0, 5, Self, pulse, ActorRefs.Nobody);
         startTicksTimer();
         receiveTick(pulse);
     }
     else if (msg.RunCommand == EngineRunCommand.Stop && _runState != TickEngineRunState.Stopped)
     {
         _runState = TickEngineRunState.Stopped;
         cancelPulse();
         _secondTimer.Stop();
     }
 }
        public ActorTickEngineCoordinator(IActorRef actorTextOutput, Galaxy state)
        {
            _runState        = TickEngineRunState.Stopped;
            _state           = state;
            _state.Actor     = Self;
            _actorTextOutput = actorTextOutput;

            setupChildSolarSystemActors();

            setupTimer();

            Receive <MessageEngineRunCommand>(msg => receiveEngineRunCommand(msg));
            Receive <MessageTick>(msg => receiveTick(msg));
            Receive <MessageEngineSSCompletedCommand>(msg => receiveSSCompleted(msg));
        }
        public ActorTickEngineCoordinator(IActorRef actorTextOutput, Galaxy state)
        {
            _runState = TickEngineRunState.Stopped;
            _state = state;
            _state.Actor = Self;
            _actorTextOutput = actorTextOutput;

            setupChildSolarSystemActors();

            setupTimer();

            Receive<MessageEngineRunCommand>(msg => receiveEngineRunCommand(msg));
            Receive<MessageTick>(msg => receiveTick(msg));
            Receive<MessageEngineSSCompletedCommand>(msg => receiveSSCompleted(msg));
        }