//method for sending data about game ended fact to the players private static void EngineInstance_EndTheGame(object sender, EventArgs e) { var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Info($"Procedure of sending info to players about game ended started."); //stop game timer GameStateHolder.StopGameTimer(); //calling the method from game state handler class MakaoEngineHostGameStateHandler.ExecutePlayersDataSendingAlgorithm(CurrentPlayersData.Count, currentGameSetup.AmountOfDecks, currentGameSetup.AmountOfJokers, currentGameSetup.AmountOfStartCards, DataSenderType.GameFinished); }
public static bool ExecutePlayersDataSendingAlgorithm(int amountOfPlayers, int amountOfDecks, int amountOfJokers, int amountOfCards, DataSenderType dataType) { //list of data received from clients bool output = false; bool gameCreated; //start the engine with proper amount of players, decks etc. switch (dataType) { case DataSenderType.EngineInstanceCreatedData: gameCreated = GameStateHolder.CreateNewGame(amountOfPlayers, amountOfDecks, amountOfJokers, amountOfCards); GameStateHolder.StartGameTimer(); break; case DataSenderType.EngineInstanceUpdateData: case DataSenderType.GameFinished: default: gameCreated = GameStateHolder.EngineConstructed; break; } if (gameCreated) { //collecting personalized data for each user - starting new game data List <object> requestsList = null; List <string> listOfID = null; switch (dataType) { case DataSenderType.EngineInstanceCreatedData: (requestsList, listOfID) = CollectPlayersPersonalizedDataGameCreation(typeof(PersonalizedForSpecificPlayerStartGameDataRequest)); break; case DataSenderType.EngineInstanceUpdateData: (requestsList, listOfID) = CollectPlayersPersonalizedDataGameCreation(typeof(PersonalizedPlayerDataRequest)); break; } //send this data to each client if ((requestsList != null && listOfID != null) || dataType == DataSenderType.GameFinished) { switch (dataType) { case DataSenderType.EngineInstanceCreatedData: GameStateDataSender sender = new GameStateDataSender(); output = ClientResponseAnalyzer(sender.SendDataAboutCreationOfNewRoom(requestsList, listOfID)); break; case DataSenderType.EngineInstanceUpdateData: GameStateDataSender semder2 = new GameStateDataSender(); output = ClientResponseAnalyzer(semder2.SendUpdatedDataToPlayers(requestsList, listOfID)); break; case DataSenderType.GameFinished: GameStateDataSender sender3 = new GameStateDataSender(); output = ClientResponseAnalyzer(sender3.SendGameFinishedDataToPlayers(CollectEndGameData())); break; } } else { var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Error($"Didn't collect players personalized data, method returned at least one null. Type: {dataType.ToString()}."); } } else { var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Error("Game didn't start."); } return(output); }