Beispiel #1
0
        public void ChangeStartButton(GameServerState state)
        {
            switch (state)
            {
            case GameServerState.Off:
                ServerStartButton.Content   = "启动服务端";
                ServerStartButton.IsEnabled = true;
                break;

            case GameServerState.Starting:
                ServerStartButton.Content   = "启动中";
                ServerStartButton.IsEnabled = false;
                break;

            case GameServerState.Running:
                ServerStartButton.Content   = "关闭服务端";
                ServerStartButton.IsEnabled = true;
                break;

            case GameServerState.Stopping:
                ServerStartButton.Content   = "关闭中";
                ServerStartButton.IsEnabled = false;
                break;
            }
        }
 /// <summary>
 /// Perform a transion between states.
 /// </summary>
 /// <param name="transEvent">An event that is occuring when a packet arrives.</param>
 /// <param name="packet">The packet received over the network.</param>
 public void DoTransition(GameServerTransition transEvent, GameData packet)
 {
     Tuple<GameServerState, TransitionAction> transition = null;
     try
     {
         transition = TransitionTable[new Tuple<GameServerState,GameServerTransition>(CurrentState,transEvent)];
         transition.Item2(packet);
         CurrentState = transition.Item1;
     }
     catch (Exception error)
     {
         Debug.WriteLine("You managed to break the GameServerStateMachine. Congratulations, asshole: {0}", new Object[] {error.Message});
         Debug.WriteLine("Violating Transition: {0} - {1} - {2}",new Object[] {CurrentState,transEvent,packet});
         throw error;
     }
     return;
 }
 /// <summary>
 /// Register a new transition inside the state machine.
 /// </summary>
 /// <param name="previousState">The state being transitioned out of.</param>
 /// <param name="eventPacket">The type of packet received over the network.</param>
 /// <param name="nextState">The state to transition into.</param>
 /// <param name="action">An action to perform before transitioning.</param>
 public void RegisterTransition(GameServerState previousState, GameServerTransition transEvent, GameServerState nextState, TransitionAction action)
 {
     TransitionTable.Add(new Tuple<GameServerState, GameServerTransition>(previousState, transEvent), new Tuple<GameServerState, TransitionAction>(nextState, action));
     return;
 }
 /// <summary>
 /// Create a new NetStateMachine.
 /// </summary>
 /// <param name="startingState">The state to begin the NetStateMachine in.</param>
 public GameServerStateMachine(GameServerState startingState)
 {
     CurrentState = startingState;
     TransitionTable = new Dictionary<Tuple<GameServerState,GameServerTransition>,Tuple<GameServerState,TransitionAction>>();
     return;
 }
Beispiel #5
0
 protected virtual void OnGameServerState(bool isServerAvailable)
 {
     GameServerState?.Invoke(new ServerEventArgs(isServerAvailable));
 }