예제 #1
0
        private Fiber<List<UserLogicModel>> CreateFiber(DebugGameRoom room, GameObject gameObject, bool emulating, GameDataModel game, List<int> breakpoints)
        {
            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.DebugInfo = new DebugInfo() { Breakpoints = breakpoints ?? new List<int>() };
                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;
            });
        }
예제 #2
0
        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;
                                                   });
        }