public SpaceInvadersGameScreen(GameStructure i_Game) : base(i_Game)
 {
     this.BlendState = Microsoft.Xna.Framework.Graphics.BlendState.NonPremultiplied;
     m_IsGameStarted = false;
     initDefaultData();
     m_CurrentLevel      = 1;
     m_CollisionsManager = Game.Services.GetService(typeof(ICollisionsManager)) as CollisionsManager;
     m_GamePauseScreen   = new GamePauseScreen(Game as GameStructure);
     m_GameOverSound     = SoundFactoryMethod.CreateSound(Game as GameStructure, eSoundName.GameOver);
     m_LevelWinSound     = SoundFactoryMethod.CreateSound(Game as GameStructure, eSoundName.LevelWin);
     m_BackGroundMusic   = SoundFactoryMethod.CreateSound(Game as GameStructure, eSoundName.BackgroundMusic);
 }
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
            Services.AddService(typeof(SpriteBatch), spriteBatch);

            var scorpionDictionary = DictionaryLoader.GetDictionary(GameSettings.firstName, Content);
            var subZeroDictionary  = DictionaryLoader.GetDictionary(GameSettings.secondName, Content);
            var firstHealth        = new HealthBar(GameSettings.HealthBar, Content.Load <Texture2D>("DamageBar"));
            var secondHealth       = new HealthBar(new Vector2(width - GameSettings.HealthBar.X, GameSettings.HealthBar.Y), Content.Load <Texture2D>("DamageBar"));
            var firstMoves         = new PlayerControls();

            firstMoves.GetFirstPlayerKeyboard();
            var secondMoves = new PlayerControls();

            secondMoves.GetSecondPlayerKeyboard();

            //first player
            var firstSprite = new SpriteAnimation(GameSettings.SpriteWidth, GameSettings.SpriteHeigth, false)
            {
                SpriteTexture = scorpionDictionary,
                Moves         = firstMoves,
                Position      = new Vector2(GameSettings.FirstPosition.X - 100, GameSettings.FirstPosition.Y)
            };

            //second player
            var secondSprite = new SpriteAnimation(GameSettings.SpriteWidth, GameSettings.SpriteHeigth, true)
            {
                SpriteTexture = subZeroDictionary,
                Moves         = secondMoves,
                Position      = new Vector2(GameSettings.FirstPosition.X + 100, GameSettings.FirstPosition.Y)
            };

            //game screen
            var arenaRect    = new Rectangle(0, 0, graphics.GraphicsDevice.Adapter.CurrentDisplayMode.Width, graphics.GraphicsDevice.Adapter.CurrentDisplayMode.Height);
            var arenaTexture = Content.Load <Texture2D>("Arenas//TheDeadPoolArena");

            gameScreen = new GameScreen(this, Content.Load <SpriteFont>("Pristina"), Content.Load <SpriteFont>("Courier New"), width, arenaTexture, arenaRect)
            {
                FirstSprite    = firstSprite,
                FirstHealthBar = firstHealth,

                SecondSprite    = secondSprite,
                SecondHealthBar = secondHealth,
            };

            //menu screen
            var font         = Content.Load <SpriteFont>("Narkisim");
            var gameNameItem = new MenuItem
            {
                MenuFont         = font,
                MenuItemPosition = new Vector2(width / 2, 100),
                MenuItemName     = "Mortal Kombat",
                MenuItemOrigin   = font.MeasureString("Mortal Kombat") / 2
            };

            font = Content.Load <SpriteFont>("Viner Hand ITC");
            var startItem = new MenuItem
            {
                MenuFont         = font,
                MenuItemPosition = new Vector2(width / 2, 300),
                MenuItemName     = "New game",
                MenuItemOrigin   = font.MeasureString("New game") / 2
            };
            var helpItem = new MenuItem
            {
                MenuFont         = font,
                MenuItemPosition = new Vector2(width / 2, 400),
                MenuItemName     = "Help",
                MenuItemOrigin   = font.MeasureString("Help") / 2
            };
            var exitItem = new MenuItem
            {
                MenuFont         = font,
                MenuItemPosition = new Vector2(width / 2, 500),
                MenuItemName     = "Exit",
                MenuItemOrigin   = font.MeasureString("Exit") / 2
            };
            var menuItems = new MenuItem[]
            {
                startItem,
                helpItem,
                exitItem,
                gameNameItem
            };
            var texture = Content.Load <Texture2D>("BackgroundMenu");
            var rect    = new Rectangle(0, 0, graphics.GraphicsDevice.Adapter.CurrentDisplayMode.Width,
                                        graphics.GraphicsDevice.Adapter.CurrentDisplayMode.Height);

            menuScreen = new MenuScreen(this, menuItems, texture, rect);

            //help screen
            helpScreen = new HelpScreen(this, texture, rect, Content.Load <SpriteFont>("Courier new"), Content.Load <SpriteFont>("Viner Hand ITC"), firstMoves, secondMoves);

            //game pause screen
            font = Content.Load <SpriteFont>("Viner Hand ITC");
            var resumeItem = new MenuItem
            {
                MenuFont         = font,
                MenuItemPosition = new Vector2(width / 2, 300),
                MenuItemName     = "Resume",
                MenuItemOrigin   = font.MeasureString("Resume") / 2
            };

            exitItem = new MenuItem
            {
                MenuFont         = font,
                MenuItemPosition = new Vector2(width / 2, 400),
                MenuItemName     = "Exit",
                MenuItemOrigin   = font.MeasureString("Exit") / 2
            };
            menuItems = new MenuItem[]
            {
                resumeItem,
                exitItem
            };
            gamePauseScreen = new GamePauseScreen(this, menuItems);

            //game restart screen
            font = Content.Load <SpriteFont>("Viner Hand ITC");
            var restartItem = new MenuItem
            {
                MenuFont         = font,
                MenuItemPosition = new Vector2(width / 2, 300),
                MenuItemName     = "New game",
                MenuItemOrigin   = font.MeasureString("New game") / 2
            };

            exitItem = new MenuItem
            {
                MenuFont         = font,
                MenuItemPosition = new Vector2(width / 2, 400),
                MenuItemName     = "Exit",
                MenuItemOrigin   = font.MeasureString("Exit") / 2
            };
            menuItems = new MenuItem[]
            {
                restartItem,
                exitItem
            };
            gameRestartScreen = new GameRestartScreen(this, menuItems);

            Components.Add(menuScreen);
            Components.Add(gameScreen);
            Components.Add(helpScreen);
            Components.Add(gamePauseScreen);
            Components.Add(gameRestartScreen);
            menuScreen.Show();
        }