// Start is called before the first frame update public void SetState(PlayerState currentstate) { _currentState = currentstate; }
static void StartGame(Arguments args) { PlayerConfig playerConfig; try { playerConfig = new ConfigFileReader().ReadConfigFile(args.ConfigPath); } catch (FileNotFoundException) { logger.Fatal($"Error: Config file {args.ConfigPath} does not exist!"); return; } catch (InvalidDataException) { logger.Fatal($"Error: File {args.ConfigPath} is invalid!"); return; } catch (Exception e) { logger.Fatal(e.Message); return; } playerConfig.GameName = args.GameName; using (var communicator = new Communicator(args.CommunicationServerAddress, args.CommunicationServerPort)) { var gameService = new GameService(communicator); var playerState = new PlayerState(playerConfig); var messageProvider = new MessageProvider(playerState, communicator); var actionExecutor = new ActionExecutor(messageProvider, playerState); AbstractStrategy strategy; switch (playerConfig.Strategy) { case "blocker": strategy = new BlockerStrategy(playerState, actionExecutor); break; case "sector": strategy = new SectorStrategy(playerState, actionExecutor); break; default: strategy = new TrivialStrategy(playerState, actionExecutor); break; } var player = new Player(playerConfig, gameService, messageProvider, playerState, actionExecutor, strategy); try { player.Start(); } catch (PlayerRejectedException e) { logger.Fatal("Connection rejected: " + e.Message); } catch (OperationCanceledException e) { logger.Fatal(e.Message); } catch (TimeoutException e) { logger.Fatal(e.Message); } catch (SocketException e) { logger.Fatal("Connection failed: " + e.Message); } catch (IOException e) { logger.Fatal(e.Message); } catch (GameAlreadyFinishedException e) { logger.Info(e.Message); } finally { logger.Info("Player disconnected."); } } }