Example #1
0
        public GameViewModel(IGameSettings gameSettings, IQuestsManager questsManager, IDialogService dialogService)
        {
            _gameSettings  = gameSettings;
            _questsManager = questsManager;
            _dialogService = dialogService;

            _game = Mvx.GetSingleton <IGame>();

            BoardViewModel              = new BoardViewModel(Game.Info.BoardSize);
            BoardViewModel.BoardTapped += (s, e) => OnBoardTapped(e);
            BoardViewModel.IsTouchInputOffsetEnabled = gameSettings.Display.AddTouchInputOffset;
            // Set empty node (should be in the beginning of every gametree) as current node for board rendering
            RefreshBoard(Game.Controller.GameTree.LastNode);

            _uiConnector = new UiConnector(Game.Controller);

            _phaseStartHandlers = new Dictionary <GamePhaseType, Action <IGamePhase> >();
            _phaseEndHandlers   = new Dictionary <GamePhaseType, Action <IGamePhase> >();
            SetupPhaseChangeHandlers(_phaseStartHandlers, _phaseEndHandlers);

            Game.Controller.RegisterConnector(_uiConnector);

            Game.Controller.GameEnded += (s, e) => OnGameEnded(e);
            Game.Controller.GameTree.LastNodeChanged += (s, e) => OnCurrentNodeChanged(e);
            Game.Controller.TurnPlayerChanged        += (s, e) => OnTurnPlayerChanged(e);
            Game.Controller.GamePhaseChanged         += (s, e) => OnGamePhaseChanged(e);
            ObserveDebuggingMessages();
        }
Example #2
0
        public void RefreshViewport(IGameSettings settings, IWindowInfo window, IViewport viewport, bool updateViewportScreenArea)
        {
            var area = viewport.GetScreenArea(settings, window, updateViewportScreenArea);

            ScreenViewport = viewport.ScreenArea;
            _graphics.Viewport(area.X, area.Y, area.Width, area.Height);
        }
Example #3
0
        private void onGameWindowLoaded(TypedParameter settingsParameter, IGameSettings settings)
        {
            TypedParameter gameWindowParameter = new TypedParameter(typeof(IGameWindow), GameWindow);

            Settings = _resolver.Container.Resolve <IRuntimeSettings>(settingsParameter, gameWindowParameter);

            _graphics.ClearColor(0f, 0f, 0f, 1f);

            _graphics.Init();
            _glUtils.GenBuffers();

            Factory = _resolver.Container.Resolve <IGameFactory>();

            IAGSInput input = _resolver.Container.Resolve <IAGSInput>();

            input.Init(settings.VirtualResolution);
            Input = input;
            TypedParameter inputParamater = new TypedParameter(typeof(IInput), Input);
            TypedParameter gameParameter  = new TypedParameter(typeof(IGame), this);

            RenderLoop = _resolver.Container.Resolve <IRendererLoop>(inputParamater, gameParameter, gameWindowParameter);
            updateResolver();
            HitTest       = _resolver.Container.Resolve <IHitTest>();
            AudioSettings = _resolver.Container.Resolve <IAudioSettings>();
            SaveLoad      = _resolver.Container.Resolve <ISaveLoad>();

            _glUtils.AdjustResolution(settings.VirtualResolution.Width, settings.VirtualResolution.Height);

            Events.OnLoad.Invoke();
        }
Example #4
0
 public Board(IShipPositionsRandomizer shipPositionsRandomizer, IGameSettings gameSettings)
 {
     _gameSettings            = gameSettings;
     _shipPositionsRandomizer = shipPositionsRandomizer;
     Ships  = _shipPositionsRandomizer.RandomizeShipsPositions();
     Fields = FillTheFields(Ships);
 }
Example #5
0
 public static void PowerPillEaten(IGameSettings gameSettings, GameState gameState, CellLocation powerPillLocation, GameNotifications gameNotifications)
 {
     gameState.IncreaseScore(50);
     gameNotifications.Publish(GameNotification.EatPowerPill);
     MakeGhostsEdible(gameSettings, gameState);
     gameState.RemovePowerPill(powerPillLocation);
 }
Example #6
0
        public static void TestKnuthRandomizedParallelOnRange(IGameSettings settings)
        {
            var generator         = new GenerateKeyRangesService();
            var serviceUnderTests = new KnuthSolverRandomizedParallelService(generator);

            TestOnRange(serviceUnderTests, settings, "KnuthRandomizedParallel");
        }
Example #7
0
        public Game(IGameSettings gameSettings, List <List <ActionType> > sequences)
        {
            _gameSettings = gameSettings;
            _sequences    = sequences;

            Board = new Board(gameSettings);
        }
Example #8
0
 public static void CompleteRespawning(GameState gameState, IGameSettings gameSettings)
 {
     MakeGhostsNotEdible(gameState);
     MoveGhostsHome(gameState);
     MovePacManHome(gameState, gameSettings);
     gameState.ShowGhosts();
 }
Example #9
0
        public GameLogic(IGameSettings settings)
        {
            Settings = settings;

            Level = new Level(settings, LoadPlayers());
            Level.Initialise();
        }
 public MineSearchGame(IGameSettings gameSettings)
 {
     var cellsFactory = new MineSearchCellsFactory(gameSettings);
     Cells = cellsFactory.CreateCells();
     RemainingMineCount = gameSettings.MineCount;
     _remainingCellsToReveal = Cells.Count(cell => cell is SafeCell);
 }
Example #11
0
        private void ReadSettings()
        {
            var appSettings = ConfigurationManager.AppSettings;

            _gameSettings = new GameSettings();
            _gameSettings.ReadFromApplicationSettings(appSettings);
        }
Example #12
0
 public AGSInspector(IGameFactory factory, IGameSettings settings, IGameState state)
 {
     _state    = state;
     _props    = new Dictionary <Category, List <InspectorProperty> >();
     _factory  = factory;
     _settings = settings;
 }
Example #13
0
 public AGSFontFactory(IResourceLoader resources, IDevice device, IGameSettings settings)
 {
     _device         = device;
     _resources      = resources;
     _settings       = settings;
     _installedFonts = new ConcurrentDictionary <string, string>();
 }
        public void LoadFrom(IGameSettings settings)
        {
            Title               = settings.Title;
            VirtualResolution   = settings.VirtualResolution;
            Vsync               = settings.Vsync;
            PreserveAspectRatio = settings.PreserveAspectRatio;
            WindowState         = settings.WindowState;
            WindowBorder        = settings.WindowBorder;
            _windowSize         = new AGS.API.Size(_gameWindow.ClientWidth, _gameWindow.ClientHeight);
            var messageBoxSettings = Defaults?.MessageBox;
            var fontSettings       = Defaults?.Fonts;
            var dialogSettings     = Defaults?.Dialog;

            Defaults = settings.Defaults;
            if (Defaults.MessageBox == null)
            {
                Defaults.MessageBox = messageBoxSettings;
            }
            if (Defaults.Fonts == null)
            {
                Defaults.Fonts = fontSettings;
            }
            if (Defaults.Dialog == null)
            {
                Defaults.Dialog = dialogSettings;
            }
        }
Example #15
0
 public GameFieldGraphicsComponent(IGameFieldEntity gameField, IGraphicsSettings graphicsSettings, IGraphicsSystem graphicsSystem, IGameSettings gameSettings)
 {
     _gameFieldEntity  = gameField ?? throw new ArgumentNullException(nameof(gameField));
     _graphicsSettings = graphicsSettings ?? throw new ArgumentNullException(nameof(graphicsSettings));
     _graphicsSystem   = graphicsSystem ?? throw new ArgumentNullException(nameof(graphicsSystem));
     _gameSettings     = gameSettings ?? throw new ArgumentNullException(nameof(gameSettings));
 }
Example #16
0
 public OnlineGameViewModel(IGameSettings gameSettings, IQuestsManager questsManager, IDialogService dialogService)
     : base(gameSettings, questsManager, dialogService)
 {
     (Game.Controller as RemoteGameController).Server.Events.UndoRequestReceived += Events_UndoRequestReceived;
     (Game.Controller as RemoteGameController).Server.Events.UndoDeclined        += Events_UndoDeclined;
     ChatViewModel = new ChatViewModel((Game.Controller as RemoteGameController).Chat, (Game.Controller as RemoteGameController).Connectors.First(connector => connector is IRemoteConnector) as IRemoteConnector);
 }
Example #17
0
 private static async void StartupKgs(IGameSettings settings, IAppNotificationService notifications)
 {
     if (settings.Interface.KgsAutoLogin && settings.Interface.KgsRememberPassword)
     {
         await Connections.Kgs.LoginAsync(settings.Interface.KgsName, settings.Interface.KgsPassword);
     }
 }
Example #18
0
 public FieldElement(IGameSettings gameSettings, GameField field, Tile.Factory tileFactory, Crystal.Factory crystalFactory)
 {
     _field          = field;
     _gameSettings   = gameSettings;
     _tileFactory    = tileFactory;
     _crystalFactory = crystalFactory;
 }
        public IMastermindGame PrepareGame(string answer, IGameSettings gameSettings)
        {
            var checkAnswers   = new AnswerCheckService();
            var mastermindGame = new MastermindGameService(answer, checkAnswers, gameSettings);

            return(mastermindGame);
        }
Example #20
0
        public GameController(IGameSettings gameSettings, int rX, int rY, GraphicsMode graphicsMode,
                              string title, int major, int minor, IDirectoryHandler directoryHandler)
            : base(rX, rY, graphicsMode, title, GameWindowFlags.Default, DisplayDevice.Default,
                   major, minor, GraphicsContextFlags.Default)
        {
            // Add OpenGL/GPU information tags to sentry
            var glVersion   = GL.GetString(StringName.Version);
            var glslVersion = GL.GetString(StringName.ShadingLanguageVersion);
            var gpuVendor   = GL.GetString(StringName.Vendor);
            var renderer    = GL.GetString(StringName.Renderer);

            ServiceLocator.ErrorReporting.AddTags(new Dictionary <string, string>
            {
                { "opengl", glVersion },
                { "glsl", glslVersion },
                { "vendor", gpuVendor },
                { "gpu", renderer }
            });

            // Add backend information tags to sentry
            var sdl = Configuration.RunningOnSdl2;

            Console.WriteLine("Running on SDL2: {0}", sdl);
            ServiceLocator.ErrorReporting.AddTags(new Dictionary <string, string>
            {
                { "sdl", sdl.ToString() }
            });

            KeyDown          += Keyboard_KeyDown;
            this.VSync        = (bool)gameSettings["VSync"] ? VSyncMode.On : VSyncMode.Off;
            this.WindowState  = (WindowState)Enum.Parse(typeof(WindowState), (string)gameSettings["WindowState"]);
            DebugMode.Value   = (bool)gameSettings["Debug"];
            _gameSettings     = gameSettings;
            _directoryHandler = directoryHandler;
        }
Example #21
0
        public static void TestSwaszekOnRange(IGameSettings settings)
        {
            var generator         = new GenerateKeyRangesService();
            var serviceUnderTests = new SwaszekSolverService(generator);

            TestOnRange(serviceUnderTests, settings, "Swaszek");
        }
Example #22
0
        public void RefreshViewport(IGameSettings settings, IGameWindow gameWindow)
        {
            if (settings.PreserveAspectRatio) //http://www.david-amador.com/2013/04/opengl-2d-independent-resolution-rendering/
            {
                float targetAspectRatio = (float)settings.VirtualResolution.Width / settings.VirtualResolution.Height;
                Size  screen            = new Size(gameWindow.Width, gameWindow.Height);
                int   width             = screen.Width;
                int   height            = (int)(width / targetAspectRatio + 0.5f);
                if (height > screen.Height)
                {
                    //It doesn't fit our height, we must switch to pillarbox then
                    height = screen.Height;
                    width  = (int)(height * targetAspectRatio + 0.5f);
                }

                // set up the new viewport centered in the backbuffer
                int viewX = (screen.Width / 2) - (width / 2);
                int viewY = (screen.Height / 2) - (height / 2);

                ScreenViewport = new Rectangle(viewX, viewY, width, height);
                _graphics.Viewport(viewX, viewY, width, height);
            }
            else
            {
                ScreenViewport = new Rectangle(0, 0, gameWindow.Width, gameWindow.Height);
                _graphics.Viewport(0, 0, gameWindow.Width, gameWindow.Height);
            }
        }
Example #23
0
        public Board(IGameSettings gameSettings)
        {
            Grid = new Tile[gameSettings.BoardXSize, gameSettings.BoardYSize];

            //Initilize Grid
            var xLength = Grid.GetLength(0);
            var ylength = Grid.GetLength(1);

            for (int i = 0; i < xLength; i++)
            {
                for (int j = 0; j < ylength; j++)
                {
                    Grid[i, j] = new Tile();
                }
            }

            //Set Mines
            foreach (var minePoint in gameSettings.Mines)
            {
                Grid[minePoint.X, minePoint.Y].TileType = TileType.Mine;
            }

            //Set Exit
            Grid[gameSettings.Exit.X, gameSettings.Exit.Y].TileType = TileType.Exit;
        }
Example #24
0
 private void initServices()
 {
     m_LivesManager = new LivesManager(r_GameScreen);
     m_ScoreManager = this.Game.Services.GetService(typeof(IScoreManager)) as IScoreManager;
     m_GameSettings = this.Game.Services.GetService(typeof(IGameSettings)) as IGameSettings;
     m_LivesManager.AllPlayersDied += livesManager_AllPlayersDied;
 }
Example #25
0
        public void RefreshViewport(IGameSettings settings, IGameWindow gameWindow)
        { 
            if (settings.PreserveAspectRatio) //http://www.david-amador.com/2013/04/opengl-2d-independent-resolution-rendering/
            {
                float targetAspectRatio = (float)settings.VirtualResolution.Width / settings.VirtualResolution.Height;
                Size screen = new Size(gameWindow.Width, gameWindow.Height);
                int width = screen.Width;
                int height = (int)(width / targetAspectRatio + 0.5f);
                if (height > screen.Height)
                {
                    //It doesn't fit our height, we must switch to pillarbox then
                    height = screen.Height;
                    width = (int)(height * targetAspectRatio + 0.5f);
                }

                // set up the new viewport centered in the backbuffer
                int viewX = (screen.Width / 2) - (width / 2);
                int viewY = (screen.Height / 2) - (height / 2);

                _graphics.Viewport(viewX, viewY, width, height);
            }
            else
            {
                _graphics.Viewport(0, 0, gameWindow.Width, gameWindow.Height);
            }
        }
Example #26
0
 public Game(IGameSettings settings)
 {
     BlindStructure = settings.BlindStructure;
     InitialStack   = settings.InitialStack;
     Seed           = settings.Seed;
     Deck           = new Deck(Seed);
 }
        /// <summary>
        /// Initializes the model.
        /// </summary>
        /// <param name="gameType">Type of the game.</param>
        /// <param name="gameSettings">The game settings.</param>
        /// <param name="selectedGame">The selected game.</param>
        /// <returns>IGame.</returns>
        protected virtual IGame InitModel(IGameType gameType, IGameSettings gameSettings, string selectedGame)
        {
            var game = GetModelInstance <IGame>();

            game.Type                      = gameType.Name;
            game.Name                      = gameType.Name;
            game.IsSelected                = selectedGame == gameType.Name;
            game.UserDirectory             = gameType.UserDirectory;
            game.SteamAppId                = gameType.SteamAppId;
            game.WorkshopDirectory         = gameType.WorkshopDirectory;
            game.LogLocation               = gameType.LogLocation;
            game.ChecksumFolders           = gameType.ChecksumFolders;
            game.GameFolders               = gameType.GameFolders ?? new List <string>();
            game.BaseGameDirectory         = gameType.BaseGameDirectory;
            game.AdvancedFeaturesSupported = gameType.AdvancedFeaturesSupported;
            game.LauncherSettingsFileName  = gameType.LauncherSettingsFileName;
            game.LauncherSettingsPrefix    = gameType.LauncherSettingsPrefix;
            game.RemoteSteamUserDirectory  = gameType.RemoteSteamUserDirectory;
            game.CloseAppAfterGameLaunch   = true;
            var setExeLocation     = true;
            var setUserDirLocation = true;

            if (gameSettings != null)
            {
                game.CloseAppAfterGameLaunch = gameSettings.CloseAppAfterGameLaunch.GetValueOrDefault(true);
                game.RefreshDescriptors      = gameSettings.RefreshDescriptors;
                if (!string.IsNullOrWhiteSpace(gameSettings.LaunchArguments))
                {
                    game.LaunchArguments = gameSettings.LaunchArguments;
                }
                if (!string.IsNullOrWhiteSpace(gameSettings.ExecutableLocation))
                {
                    setExeLocation          = false;
                    game.ExecutableLocation = gameSettings.ExecutableLocation;
                }
                if (!string.IsNullOrWhiteSpace(gameSettings.UserDirectory))
                {
                    setUserDirLocation = false;
                    game.UserDirectory = gameSettings.UserDirectory;
                }
            }
            if (setExeLocation || setUserDirLocation)
            {
                var settings = GetDefaultGameSettings(game);
                if (setExeLocation)
                {
                    game.ExecutableLocation = settings.ExecutableLocation ?? string.Empty;
                    game.LaunchArguments    = settings.LaunchArguments ?? string.Empty;
                }
                if (setUserDirLocation)
                {
                    game.UserDirectory = settings.UserDirectory;
                }
            }
            if (string.IsNullOrWhiteSpace(game.UserDirectory))
            {
                game.UserDirectory = gameType.UserDirectory;
            }
            return(game);
        }
Example #28
0
        internal Controller(IGameSettings settings, IPokemonData[, ][] pms)
        {
            GameSettings = settings;
            Board        = new Board(GameSettings);

            Teams = new Team[2];
            var ppt = settings.Mode.PlayersPerTeam();

            for (int t = 0; t < Teams.Length; ++t)
            {
                var players = new Player[ppt];
                players[0] = new Player(this, t, 0, pms[t, 0]);
                if (ppt == 2)
                {
                    players[1] = new Player(this, t, 1, pms[t, 1]);
                }
                Teams[t] = new Team(t, players, settings);
            }

            ReportBuilder    = new ReportBuilder(this);
            SwitchController = new SwitchController(this);
            InputController  = new InputController(this);
            TurnController   = new TurnController(this);
#if TEST
            randomSeeds = new Random(1);
            random      = new Random(randomSeeds.Next());
#else
            random = new Random();
#endif
            Timer = new GoTimer(GameSettings.Mode.PlayersPerTeam() == 1 ? new Player[] { Teams[0].GetPlayer(0), Teams[1].GetPlayer(0) } : new Player[] { Teams[0].GetPlayer(0), Teams[0].GetPlayer(1), Teams[1].GetPlayer(0), Teams[1].GetPlayer(1) });
            Timer.Start();
        }
Example #29
0
        public Level(IGameSettings settings, ReadOnlyDictionary <string, IGameEntity> players)
        {
            Board   = new PlayerBoard(settings);
            Players = players;

            ActionManager = new ActionManager(Board);
        }
Example #30
0
        public GameOutward(IGameSettings settings, string[,] players, ReportFragment fragment)
        {
            Settings   = settings;
            Board      = new BoardOutward(Settings);
            TurnNumber = fragment.TurnNumber;
            var ppp = settings.Mode.PokemonsPerPlayer();

            Board.Players[0, 0] = new PlayerOutward(players[0, 0], ppp);
            Board.Players[1, 0] = new PlayerOutward(players[1, 0], ppp);
            Board.Players[0, 0].SetAll(fragment.P00);
            Board.Players[1, 0].SetAll(fragment.P10);
            if (Settings.Mode.PlayersPerTeam() == 2)
            {
                Board.Players[0, 1] = new PlayerOutward(players[0, 1], ppp);
                Board.Players[1, 1] = new PlayerOutward(players[1, 1], ppp);
                Board.Players[0, 1].SetAll(fragment.P01);
                Board.Players[1, 1].SetAll(fragment.P11);
            }
            Board.Weather = fragment.Weather;
            foreach (var pm in fragment.Pokemons)
            {
                pm.Init(this);
            }
#if TEST
            LogAppended = delegate { };
            TurnEnd     = delegate { };
#endif
        }
Example #31
0
        public Game(ICollection <string> userIds, IMapInfo mapInfo, IGameSettings settings)
        {
            if (userIds == null)
            {
                throw new ArgumentNullException(nameof(userIds));
            }
            if (mapInfo == null)
            {
                throw new ArgumentNullException(nameof(mapInfo));
            }
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            this.actionPoints = settings.ActionPoints;

            var tanks = userIds.Select(x => new Tank(new Health(settings.TankHealthPoint), x)).ToArray();

            var map = new Map(new MapCreationData(mapInfo, tanks), new BattlefieldBuilder(),
                              new RandomSpawnService());

            // намерено скрываем типы используемых интерфейсов внутри класса игры
            this.mapAdapter    = new MapAdapter(map);
            this.bulletService = new BulletService(this.mapAdapter, settings.BulletActionPoints);
            this.moveService   = new MoveService(this.mapAdapter);
            this.zoneService   = new ZoneService(this.mapAdapter, settings.ZoneRadius);

            this.DestroyedObjects = new DestroyedInfo(new Dictionary <string, Coordinates>(), new ICellContentInfo[0]);
        }
Example #32
0
        private void InitializeStyle()
        {
            IGameSettings settingsService = Mvx.Resolve <IGameSettings>();

            ControlStyle controlStyle = settingsService.Display.ControlStyle;

            switch (controlStyle)
            {
            case ControlStyle.Wood:
                Application.Current.Resources.Add(typeof(Button), Application.Current.Resources["woodButtonStyle"]);
                Application.Current.Resources.Add(typeof(ToggleButton), Application.Current.Resources["woodToggleButtonStyle"]);        // Not currently used

                Application.Current.Resources["DefaultButtonStyle"] = Application.Current.Resources["woodButtonStyle"];
                break;

            case ControlStyle.Lite:
                Application.Current.Resources.Add(typeof(Button), Application.Current.Resources["liteButtonStyle"]);
                Application.Current.Resources.Add(typeof(ToggleButton), Application.Current.Resources["liteToggleButtonStyle"]);

                Application.Current.Resources["DefaultButtonStyle"] = Application.Current.Resources["liteButtonStyle"];
                break;

            case ControlStyle.OperatingSystem:
                Application.Current.Resources.Add(typeof(Button), Application.Current.Resources["OperatingSystemButtonStyle"]);

                Application.Current.Resources["DefaultButtonStyle"] = Application.Current.Resources["OperatingSystemButtonStyle"];
                break;
            }
        }
 public void Init(IGameSettings gameSettings)
 {
     if (_gameSettings != null)
     {
         throw new InvalidOperationException("GameSettings has already been initialized");
     }
     _gameSettings = gameSettings;
 }
 /// <summary>
 /// Initializes a copy of the <see cref="IGameSettings"/> class.
 /// </summary>
 /// <param name="rhs">Settings to copy.</param>
 public GameSettings(IGameSettings rhs)
 {
     Rows = rhs.Rows;
     Columns = rhs.Columns;
     MineCount = rhs.MineCount;
     PointGenerator = rhs.PointGenerator;
     UseQuestionableState = rhs.UseQuestionableState;
 }
        public TexasHoldemGame(IGameSettings settings)
        {
            if (settings.MaxBuyIn < settings.MinBuyIn)
            {
                throw new ArgumentException("Cannot have a smaller MinBuyIn than MaxBuyIn.");
            }

            _settings = settings;
            _players = new HashSet<Player>();
        }
 public AGSRuntimeSettings(IGameSettings settings, IGameWindow gameWindow, IMessagePump messagePump, IGLUtils glUtils)
 {
     _glUtils = glUtils;
     _gameWindow = gameWindow;
     _messagePump = messagePump;
     Title = settings.Title;
     VirtualResolution = settings.VirtualResolution;
     Vsync = settings.Vsync;
     PreserveAspectRatio = settings.PreserveAspectRatio;
     WindowState = settings.WindowState;
     WindowBorder = settings.WindowBorder;
 }
Example #37
0
        public AGSGameWindow(IGameSettings settings, IGameWindowSize windowSize, Resolver resolver)
        {
            _windowSize = windowSize;
            _gameWindow = new GameWindow(settings.WindowSize.Width, settings.WindowSize.Height, 
                                         GraphicsMode.Default, settings.Title);
            
            var updater = new ContainerBuilder();
            updater.RegisterType<AGSInput>().SingleInstance().As<IInput>();
            updater.RegisterInstance(_gameWindow);
            updater.Update(resolver.Container);

            _updateFrameArgs = new FrameEventArgs();
            _renderFrameArgs = new FrameEventArgs();
            _gameWindow.UpdateFrame += onUpdateFrame;
            _gameWindow.RenderFrame += onRenderFrame;
        }
Example #38
0
        /// <summary>
        /// The default Constructor.
        /// </summary>
        public SceneManager(GameWindow gameWindow, Camera camera, FontLibrary fontLibrary, string fontPath, IDirectoryHandler directoryHandler, IGameSettings gameSettings, ValueWrapper<bool> debug)
        {
            GameWindow = gameWindow;
            SceneList = new List<Scene>();
            _scenesToAdd = new List<Scene>();
            _scenesToRemove = new List<Scene>();

            Directories = directoryHandler;

            FontPath = fontPath;
            GameFontLibrary = fontLibrary;
            DefaultFont = GameFontLibrary.GetFirstOrDefault(GameFontType.Default);
            FontDrawing = new QFontDrawing();
            FontDrawing.ProjectionMatrix = camera.ScreenProjectionMatrix;

            ScreenCamera = camera;
            ScreenCamera.Center = Vector2.Zero;
            ScreenCamera.MaximumScale = new Vector2(10000, 10000);

            GameSettings = gameSettings;

            Debug = debug;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MineSearchGameViewModel"/> class.
        /// </summary>
        /// <param name="gameSettings">Game settings to use.</param>
        public MineSearchGameViewModel(IGameSettings gameSettings)
        {
            NewGameCommand = new DelegateCommand<IGameSettings>(NewGame);
            StartGameCommand = new DelegateCommand(StartGame);
            EndGameCommand = new DelegateCommand(EndGame);

            _gameTimer = new DispatcherTimer
            {
                Interval = TimeSpan.FromSeconds(GameTimerIntervalSeconds)
            };
            _gameTimer.Tick += GameTimerOnTick;

            NewGame(gameSettings);
        }
        private void NewGame(IGameSettings gameSettings)
        {
            InactivateGame();

            if (gameSettings != null)
            {
                GameSettings = gameSettings;
            }

            Game = new MineSearchGame(GameSettings);
            CreateCellViewModels();
            GameDurationSeconds = 0;
            GameStatus = GameStatus.Neutral;

            //PrintBoard();
        }
        public AGSSayLocationProvider(IGameSettings settings, IObject obj)
		{
            _settings = settings;
			_obj = obj;
		}
 /// <summary>
 /// Initializes a new instance of the <see cref="MineSearchCellsFactory"/> class.
 /// </summary>
 /// <param name="gameSettings">Game settings.</param>
 public MineSearchCellsFactory(IGameSettings gameSettings)
 {
     _gameSettings = gameSettings;
 }