private void processGameResponse(GameRoom room, FiberYieldResponse response) { if (response == null) { ServerLogger.LogDebug("game request over", room); myServerManager.SendGameOver(room); room.Fiber.Run<FiberYieldResponse>(); rooms.Remove(room); room.Unwind(room.Players); return; } switch (response.Type) { case FiberYieldResponseType.AskQuestion: askPlayerQuestion(room, response); break; case FiberYieldResponseType.PlayersLeft: didPlayersLeave(room, response); break; case FiberYieldResponseType.GameOver: gameOver(room); break; case FiberYieldResponseType.Log: gameNoop(room); break; case FiberYieldResponseType.Break: gameNoop(room); break; } }
private void processGameResponse(GameRoom room, FiberYieldResponse response) { if (response == null) { Logger.Log("game request over", LogLevel.DebugInformation); myServerManager.SendGameOver(room); room.Fiber.Run<FiberYieldResponse>(); rooms.Remove(room); room.Unwind(room.Players); return; } switch (response.Type) { case FiberYieldResponseType.AskQuestion: askPlayerQuestion(room, response); break; case FiberYieldResponseType.PlayersLeft: didPlayersLeave(room, response); break; case FiberYieldResponseType.GameOver: gameOver(room); break; case FiberYieldResponseType.Log: logGameConsoleLine(room, response); break; case FiberYieldResponseType.Break: breakGameExecution(room, response); break; } }
private Fiber<List<UserLogicModel>> CreateFiber(GameRoom room, GameObject gameObject, bool emulating, GameDataModel game) { return new Fiber<List<UserLogicModel>>(players => { if (players == null || players.Count == 0) return true; room.Players = players; ServerLogger.LogDebug("game started", room); GameObject sev = null; Script.Eval("sev = new gameObject();"); room.PlayersLeft = new List<UserLogicModel>(); sev.CardGame = new GameCardGame(); sev.CardGame.Emulating = emulating; room.Game = sev; sev.CardGame.SetEmulatedAnswers(room.EmulatedAnswers); sev.CardGame.SetPlayers(players); sev.CardGame.Size = new Size(game.GameLayout.Width, game.GameLayout.Height); foreach (var gameTextModel in game.GameLayout.Texts) { sev.CardGame.TextAreas.Add(new GameCardGameTextArea(new GameCardGameTextAreaOptions() { X = gameTextModel.Left, Y = gameTextModel.Top, Name = gameTextModel.Name, Text = gameTextModel.Text, })); } foreach (var gameSpaceModel in game.GameLayout.Spaces) { sev.CardGame.Spaces.Add(new CardGameTableSpace(new CardGameTableSpaceOptions() { X = gameSpaceModel.Left, Y = gameSpaceModel.Top, Height = gameSpaceModel.Height, Width = gameSpaceModel.Width, Name = gameSpaceModel.Name, Vertical = gameSpaceModel.Vertical, ResizeType = gameSpaceModel.ResizeType })); } foreach (var gameEffect in game.Effects) { sev.CardGame.Effects.Add(new CardGameEffect(new CardGameEffectOptions() { Name = gameEffect.Name, Type = gameEffect.Type, Properties = gameEffect.Properties.Map(a => new CardGameEffectProperty() { Name = a.Name, Value = a.Value }) })); } gameData.TotalGames++; gameData.TotalPlayers += players.Count; sev.CardGame.EmulatedAnswerIndex = 0; //todo to data sev.CardGame.NumberOfCards = 52; sev.CardGame.NumberOfJokers = 0; sev.CardGame.ConfigurationCompleted(); sev.Constructor(); sev.RunGame(); ServerLogger.LogDebug("Doneski", gameData); room.Unwind(players); return true; }); }
private Fiber<List<UserLogicModel>> CreateFiber(GameRoom room, GameObject gameObject, bool emulating) { return new Fiber<List<UserLogicModel>>(players => { if (players == null || players.Count == 0) return true; room.Players = players; Logger.Log("game started", LogLevel.Information); GameObject sev = null; Script.Eval("sev = new gameObject();"); room.PlayersLeft = new List<UserLogicModel>(); sev.CardGame.Emulating = emulating; room.Game = sev; sev.CardGame.SetAnswers(room.Answers); sev.CardGame.SetPlayers(players); gameData.TotalGames++; gameData.TotalPlayers += players.Count; sev.CardGame.AnswerIndex = 0; sev.Constructor(); sev.RunGame(); Logger.Log("Doneski", LogLevel.DebugInformation); room.Unwind(players); return true; }); }