protected override void OnControllerStop(Controller controller) { if (controller is MenuController) { MenuController.ExitCode exitCode = (MenuController.ExitCode)controller.exitCode; if (exitCode == MenuController.ExitCode.Quit) { Application.sharedApplication.Stop(); return; } switch (exitCode) { case MenuController.ExitCode.SingleStart: { StartController(new GameLobbyController()); break; } case MenuController.ExitCode.MultiplayerStart: { StartController(new MultiplayerController()); break; } case MenuController.ExitCode.DebugClientStart: { StartController(new DebugMultiplayerController(DebugMultiplayerController.Mode.Client)); break; } case MenuController.ExitCode.DebugServerStart: { StartController(new DebugMultiplayerController(DebugMultiplayerController.Mode.Server)); break; } } } else if (controller is MultiplayerController) { MultiplayerController.ExitCode exitCode = (MultiplayerController.ExitCode)controller.exitCode; if (exitCode == MultiplayerController.ExitCode.Cancel) { StartMainMenuController(); return; } switch (exitCode) { case MultiplayerController.ExitCode.Create: break; case MultiplayerController.ExitCode.Join: break; } } else if (controller is GameController) { StartMainMenuController(); } else if (controller is GameLobbyController) { GameLobbyController.ExitCode exitCode = (GameLobbyController.ExitCode)controller.exitCode; switch (exitCode) { case GameLobbyController.ExitCode.StartGame: { GameLobbyController glc = controller as GameLobbyController; Scheme selectedScheme = glc.GetSelectedScheme(); GameSettings settings = new GameSettings(selectedScheme); settings.inputEntries = glc.CreateInputEntries(); StartController(GameController.Local(settings)); break; } case GameLobbyController.ExitCode.Cancel: { StartMainMenuController(); break; } } } else if (controller is DebugMultiplayerController) { DebugMultiplayerController.ExitCode exitCode = (DebugMultiplayerController.ExitCode)controller.exitCode; switch (exitCode) { case DebugMultiplayerController.ExitCode.Cancel: { StartMainMenuController(); break; } case DebugMultiplayerController.ExitCode.ClientStarted: { ServerInfo info = controller.exitData as ServerInfo; Debug.Assert(info != null); GameSettings settings = new GameSettings(info.scheme); StartController(GameController.Client(settings)); break; } case DebugMultiplayerController.ExitCode.ServerStarted: { ServerInfo info = controller.exitData as ServerInfo; Debug.Assert(info != null); GameSettings settings = new GameSettings(info.scheme); settings.inputEntries = new GameSettings.InputEntry[] { new GameSettings.InputEntry(0, InputMapping.CreatePlayerInput(InputType.Keyboard1)) }; StartController(GameController.Server(settings)); break; } } } }
public static GameController Client(GameSettings settings) { return new GameControllerClient(settings); }
protected GameController(GameSettings settings) { this.settings = settings; }
public LocalGameController(GameSettings settings) : base(settings) { Debug.CheckArgumentNotNull(settings.inputEntries); Debug.CheckArgument(settings.inputEntries.Length > 0); }
public static GameController Server(GameSettings settings) { return new GameControllerServer(settings); }
public static GameController Local(GameSettings settings) { return new LocalGameController(settings); }