protected void RestartGame()
        {
            life         = 3;
            points       = 0;
            isSplash     = false;
            isSummary    = false;
            isSpacePress = false;

            isPPress = false;

            nameEnemy.Clear();
            nameBullet.Clear();
            BulletsToRemove.Clear();

            objectsToCheckForCollision.Clear();

            screenManager.moveFontOnTheScreen(GameStatesEnum.GAME, "life_font", new Point(25, 460));
            screenManager.changeTextOfTheFontOnScreen(GameStatesEnum.GAME, "life_font", "Life: " + life);

            screenManager.moveFontOnTheScreen(GameStatesEnum.GAME, "point_font", new Point(85, 460));
            screenManager.changeTextOfTheFontOnScreen(GameStatesEnum.GAME, "point_font", "Points: " + points);

            currentGameState = GameStatesEnum.GAME;
        }
        protected void playGame()
        {
            if (Keyboard.GetState().IsKeyDown(Keys.Left) && screenManager.getScreen(GameStatesEnum.GAME).GetGameObject("plane").ObjectShape.X > 0)
            {
                screenManager.getScreen(GameStatesEnum.GAME).GetGameObject("plane").MovmentVector = new MovmentVector(plane_x_direction, plane_y_direction);
            }
            else if (Keyboard.GetState().IsKeyDown(Keys.Right) && screenManager.getScreen(GameStatesEnum.GAME).GetGameObject("plane").ObjectShape.X < width)
            {
                screenManager.getScreen(GameStatesEnum.GAME).GetGameObject("plane").MovmentVector = new MovmentVector(-plane_x_direction, plane_y_direction);
            }
            else
            {
                screenManager.getScreen(GameStatesEnum.GAME).GetGameObject("plane").MovmentVector = new MovmentVector(0, 0);
            }



            if (Keyboard.GetState().IsKeyDown(Keys.Space) && !isSpacePress)
            {
                generateBullet();
                isSpacePress = true;
            }
            else if (Keyboard.GetState().IsKeyUp(Keys.Space) && isSpacePress)
            {
                isSpacePress = false;
            }



            foreach (var bullet in nameBullet)
            {
                List <string> collision_objects = new List <string>();
                current_enemies.ForEach(enemy => collision_objects.Add(enemy));
                collision_objects.Add("plane");
                pottentialCollisionObjectName = screenManager.getScreen(GameStatesEnum.GAME).checkIfObjectIsInCollisionWithOtherObjects(bullet, collision_objects);

                if (pottentialCollisionObjectName != null && pottentialCollisionObjectName != "plane")
                {
                    if (pottentialCollisionObjectName == enemy_selected_to_charge_name)
                    {
                        was_enemy_shoot_down = true;
                    }
                    screenManager.getScreen(GameStatesEnum.GAME).removeObject(pottentialCollisionObjectName);

                    current_enemies.Remove(pottentialCollisionObjectName);
                    RemoveEnemyFromHisDictionnary(pottentialCollisionObjectName);
                    BulletsToRemove.Add(bullet);


                    points++;

                    screenManager.moveFontOnTheScreen(GameStatesEnum.GAME, "point_font", new Point(85, 460));
                    screenManager.changeTextOfTheFontOnScreen(GameStatesEnum.GAME, "point_font", "Points: " + points);
                }
                else if (pottentialCollisionObjectName == "plane")
                {
                    BulletsToRemove.Add(bullet);
                    life--;


                    screenManager.getScreen(GameStatesEnum.GAME).moveObjectToTheMiddleOfTheWidth("plane",
                                                                                                 screenManager.getSelectedScreenHeight(GameStatesEnum.GAME) -
                                                                                                 (screenManager.getGameObjectFromTheScreen(GameStatesEnum.GAME, "plane").ObjectShape.Height + 25));

                    screenManager.moveFontOnTheScreen(GameStatesEnum.GAME, "life_font", new Point(25, 460));
                    screenManager.changeTextOfTheFontOnScreen(GameStatesEnum.GAME, "life_font", "Life: " + life);
                }
            }

            foreach (var bullet in BulletsToRemove)
            {
                screenManager.getScreen(GameStatesEnum.GAME).removeObject(bullet);
                nameBullet.Remove(bullet);
            }
            BulletsToRemove.Clear();


            if (enemy_arrival_dict["left_top"].Count == 0)
            {
                generateEnemiesOnTheMap("left_top");
                left_top_index = 0;
                move_left_top  = true;
            }
            if (enemy_arrival_dict["left_bottom"].Count == 0)
            {
                generateEnemiesOnTheMap("left_bottom");
                left_bottom_index = 0;
                move_left_bottom  = true;
            }
            if (enemy_arrival_dict["right_top"].Count == 0)
            {
                generateEnemiesOnTheMap("right_top");
                right_top_index = 0;
                move_right_top  = true;
            }
            if (enemy_arrival_dict["right_bottom"].Count == 0)
            {
                generateEnemiesOnTheMap("right_bottom");
                right_bottom_index = 0;
                move_right_bottom  = true;
            }
            //TODO: Tymczasowo twardo zakodowane wartości
            if (move_left_top)
            {
                moveEnemiesFromSelectedGroupByCurve("left_top", ref left_top_index);
            }
            if (move_left_bottom)
            {
                moveEnemiesFromSelectedGroupByCurve("left_bottom", ref left_bottom_index);
            }
            if (move_right_top)
            {
                moveEnemiesFromSelectedGroupByCurve("right_top", ref right_top_index);
            }
            if (move_right_bottom)
            {
                moveEnemiesFromSelectedGroupByCurve("right_bottom", ref right_bottom_index);
            }
            if (enemy_movment_counter == 0)
            {
                enemy_x_movment = -enemy_x_movment;
                //ruch przeciwników w lewo i prawo
                foreach (var enemy in current_enemies)
                {
                    screenManager.getGameObjectFromTheScreen(currentGameState, enemy).changeMovementVector(enemy_x_movment,
                                                                                                           screenManager.getGameObjectFromTheScreen(currentGameState, enemy).MovmentVector.Y_movment);
                }

                enemy_movment_counter = 60;
            }
            else
            {
                enemy_movment_counter--;
            }
            if (enemy_charge_counter == 0 && is_enemy_charging == false)
            {
                ChargeEnemy();
                was_enemy_shoot_down   = false;
                lasting_charge_counter = 60;
                enemy_charge_counter   = 240;
            }
            else if (enemy_charge_counter > 0 && is_enemy_charging == false)
            {
                enemy_charge_counter--;
            }
            if (lasting_charge_counter == 0 && is_enemy_charging == true)
            {
                if (was_enemy_shoot_down == false)
                {
                    generate_enemy_bullet();
                }

                make_enemy_return();
                lasting_return_counter = 60;
            }
            else if (lasting_charge_counter > 0 && is_enemy_charging == true)
            {
                lasting_charge_counter--;
            }

            if (lasting_return_counter == 0 && is_enemy_returning == true && is_enemy_charging == false)
            {
                stopEnemy();
            }
            else if (lasting_return_counter > 0 && is_enemy_returning == true && is_enemy_charging == false)
            {
                lasting_return_counter--;
            }


            if (life == 0)
            {
                currentGameState = GameStatesEnum.SUMMARY;
            }
        }