예제 #1
0
        public ScreenManager(GameType gametype, Game1 game)
        {
            menubase = new Menu_Base(Content_Manager.getInstance().Textures["menubase"]);
            menuoptions = new Menu_Options(Content_Manager.getInstance().Textures["menuoptions"]);
            menuplay = new Menu_Play(Content_Manager.getInstance().Textures["menuplay"]);
            menuSolo = new Menu_Play_Solo(Content_Manager.getInstance().Textures["menusolo"]);
            menusolo1 = new Menu_Play_Solo_World1(Content_Manager.getInstance().Textures["solo1"]);
            menusolo2 = new Menu_Play_Solo_World2(Content_Manager.getInstance().Textures["solo2"]);
            menuMulti = new Menu_Play_Multi(Content_Manager.getInstance().Textures["menumulti"]);
            menupauseoption = new Menu_Pause_Options(Content_Manager.getInstance().Textures["menupauseoption"]);
            casper = new Casper(Content_Manager.getInstance().Textures["Casper"], new Rectangle(0, 0, Res.gI().ScaleX(16), Res.gI().ScaleY(34)));
            player2 = new Casper(Content_Manager.getInstance().Textures["Casper"], new Rectangle(Res.gI().ScaleX(50), Res.gI().ScaleY(50), Res.gI().ScaleX(16), Res.gI().ScaleY(34)));
            casper2 = new Casper(Content_Manager.getInstance().Textures["Player1"], new Rectangle(Res.gI().ScaleX(9000), Res.gI().ScaleY(9000), Res.gI().ScaleX(31), Res.gI().ScaleY(50)));
            controls = new Controls(casper.Position, casper.Velocity, casper.Speed, Keys.W, Keys.A, Keys.D, Keys.S);
            controlsPlayer2 = new Controls(player2.Position, player2.Velocity, player2.Speed, Keys.Up, Keys.Left, Keys.Right, Keys.Down);
            controlsWorld2 = new Controls(casper2.Position, casper2.Velocity, casper2.Speed, Keys.W, Keys.A, Keys.D, Keys.S);

            camera = new Camera(Game1.GetGame().GraphicsDevice.Viewport);
            respawn = true;
            isThere = false;

            d_w1l1_1 = new Decors(Content_Manager.getInstance().Textures["W1L1_1"], new Rectangle(0, 0, Res.gI().ScaleX(2520), Res.gI().ScaleY(1050)));
            d_w1l1_2 = new Decors(Content_Manager.getInstance().Textures["W1L1_2"], new Rectangle(Res.gI().ScaleX(2520), 0, Res.gI().ScaleX(2520), Res.gI().ScaleY(1050)));
            d_w1l2_1 = new Decors(Content_Manager.getInstance().Textures["W1L2_1"], new Rectangle(0, 0, Res.gI().ScaleX(2520), Res.gI().ScaleY(1050)));
            d_w1l2_2 = new Decors(Content_Manager.getInstance().Textures["W1L2_2"], new Rectangle(Res.gI().ScaleX(2520), 0, Res.gI().ScaleX(2520), Res.gI().ScaleY(1050)));
            d_w1l3 = new Decors(Content_Manager.getInstance().Textures["W1L3"], new Rectangle(0, 0, Res.gI().ScaleX(2240), Res.gI().ScaleY(1050)));

            teleport1 = new Rectangle(1240, 400, 80, 80);
            teleport2 = new Rectangle(3480, 480, 80, 280);
            List<Texture2D> textures = new List<Texture2D>();
            textures.Add(Content_Manager.getInstance().Textures["tp"]);
            tp1 = tp2 = tp3=tp4 = new ParticleEngine(textures, new Vector2(0, 0));

            shots = new Shots();
            shots2 = new Shots();
            shots3 = new Shots();

            Game1.GetGame().casperr = casper;
            d_w2l1 = new Decors(Content_Manager.getInstance().Textures["W2L1"], new Rectangle(0, 0, Res.gI().ScaleX(2520), Res.gI().ScaleY(1050)));
            d_w2l2 = new Decors(Content_Manager.getInstance().Textures["W2L2"], new Rectangle(0, 0, Res.gI().ScaleX(2520), Res.gI().ScaleY(1050)));
            d_w2l3 = new Decors(Content_Manager.getInstance().Textures["W2L3"], new Rectangle(0, 0, Res.gI().ScaleX(2520), Res.gI().ScaleY(1050)));
            menupause = new Menu_Pause(Content_Manager.getInstance().Textures["menupause"]);
            w1l1 = new W1L1();
            w1l2 = new W1L2();
            w1l3 = new W1L3();
            w2l1 = new W2L1();
            w2l2 = new W2L2();
            w2l3 = new W2L3();
            spikes = new Spikes();
            sw1l2 = new Sw1l2();
            sw1l3 = new Sw1l3();
            previousgametype = GameType.Exit;
            //AI1 = new AI_basic(Content_Manager.getInstance().Textures["enemy1"], Content_Manager.getInstance().Textures["enemy2"], new Rectangle(Res.gI().ScaleX(960), Res.gI().ScaleY(500), Res.gI().ScaleX(40), Res.gI().ScaleY(40)), new Vector2(3,0),300);
            AI_w1l1 = new AI_W1L1();
            AI_w1l2 = new AI_W1L2();
            AI_w2l1 = new AI_W2L1();
            AI_w2l2 = new AI_W2L2();
            AI_w2l2_2 = new AI_W2L2_2();
            AI_w2l3 = new AI_W2L3();
            AI2 = new AI_moderate(Content_Manager.getInstance().Textures["enemy1"], new Rectangle(Res.gI().ScaleX(100), Res.gI().ScaleY(100), Res.gI().ScaleX(50), Res.gI().ScaleY(50)));
            this.gametype = gametype;
            //List<Rectangle> enemies = spikes.getList().Concat<Rectangle>(AI_w1l1.getListRectangle()).ToList<Rectangle>;
        }
예제 #2
0
        public void update(GameTime gametime)
        {
            camera.update(gametime, new Vector2(Res.gI().ScaleX(840), 0));
            keyboardstate = Keyboard.GetState();

            switch (gametype)
            {
                case GameType.Menu_Base_Type:
                    menubase.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Exit;

                    casper = new Casper(Content_Manager.getInstance().Textures["Casper"], new Rectangle(0, 0, Res.gI().ScaleX(16), Res.gI().ScaleY(34)));
                    controls = new Controls(casper.Position, casper.Velocity, casper.Speed, Keys.W, Keys.A, Keys.D, Keys.S);
                    respawn = true;
                    player2 = new Casper(Content_Manager.getInstance().Textures["Casper"], new Rectangle(Res.gI().ScaleX(50), Res.gI().ScaleY(50), Res.gI().ScaleX(16), Res.gI().ScaleY(34)));
                    casper2 = new Casper(Content_Manager.getInstance().Textures["Player1"], new Rectangle(Res.gI().ScaleX(9000), Res.gI().ScaleY(9000), Res.gI().ScaleX(31), Res.gI().ScaleY(50)));
                    controlsPlayer2 = new Controls(player2.Position, player2.Velocity, player2.Speed, Keys.Up, Keys.Left, Keys.Right, Keys.Down);
                    controlsWorld2 = new Controls(casper2.Position, casper2.Velocity, casper2.Speed, Keys.W, Keys.A, Keys.D, Keys.S);

                    shots = new Shots();
                    shots2 = new Shots();
                    shots3 = new Shots();

                    AI_w1l1 = new AI_W1L1();
                    AI_w1l2 = new AI_W1L2();
                    AI_w2l1 = new AI_W2L1();
                    AI_w2l2 = new AI_W2L2();
                    AI_w2l2_2 = new AI_W2L2_2();
                    AI_w2l3 = new AI_W2L3();

                    casper.healthpoint.healthpoint = 15;
                    casper2.healthpoint.healthpoint = 13;
                    //player2.healthpoint.healthpoint = 13;
                    break;
                case GameType.Menu_Play_Type:
                    menuplay.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Base_Type;
                    break;
                case GameType.Menu_Play_Solo_Type:
                    menuSolo.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Play_Type;
                    break;
                case GameType.Menu_Play_Solo_World1_Type:
                    menusolo1.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Play_Solo_Type;
                    break;
                case GameType.Menu_Play_Solo_World2_Type:
                    menusolo2.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Play_Solo_Type;
                    break;
                case GameType.Menu_Play_Multi_Type:
                    // menuMulti.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (previousgametype == GameType.Menu_Play_Solo_World1_Type && respawn == true)
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(200), Res.gI().ScaleY(924));
                        respawn = false;
                    }
                    if (casper.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper.Position);
                    if (casper.Position.X > Res.gI().ScaleX(4200))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));
                    casper.update(gametime, controls, gametype, w1l1.getList(), spikes.getList());
                    player2.update(gametime, controlsPlayer2, gametype, w1l1.getList(), spikes.getList());

                    Game1.GetGame().IsMouseVisible = false;
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        previousgametype = GameType.Menu_Play_Multi_Type;
                        casper.update(gametime, controls, gametype, w1l1.getList(), spikes.getList());
                        player2.update(gametime, controlsPlayer2, gametype, w1l1.getList(), spikes.getList());

                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;

                    }
                    previouskeyboardstate = keyboardstate;
                    break;
                case GameType.Menu_Option_Type:
                    menuoptions.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Base_Type;
                    break;
                case GameType.Menu_Play_Solo_world1_lvl1:
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (respawn == true || casper.healthpoint.respawn == true)
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(200), Res.gI().ScaleY(924));
                        respawn = false;
                        casper.healthpoint.respawn = false;
                    }
                    if (casper.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper.Position);
                    if (casper.Position.X > Res.gI().ScaleX(4200))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));

                    Game1.GetGame().casperr = casper;
                    AI_w1l1.update(gametime);
                    casper.update(gametime, controls, gametype, w1l1.getList(), spikes.getList().Concat<Rectangle>(AI_w1l1.getListRectangle()));
                    Game1.GetGame().IsMouseVisible = false;
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world1_lvl1;
                    }
                    previouskeyboardstate = keyboardstate;
                    break;
                case GameType.Menu_Play_Solo_world1_lvl2:
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (respawn == true || casper.healthpoint.respawn == true)
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(200), Res.gI().ScaleY(244));
                        respawn = false;
                        casper.healthpoint.respawn = false;
                    }
                    if (casper.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper.Position);
                    if (casper.Position.X > Res.gI().ScaleX(4200))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));

                    Game1.GetGame().casperr = casper;
                    AI_w1l2.update(gametime);
                    tp1.EmitterLocation = new Vector2(Res.gI().ScaleX(1280), Res.gI().ScaleY(450));
                    tp1.Update();
                    tp2.EmitterLocation = new Vector2(Res.gI().ScaleX(3490), Res.gI().ScaleY(530));
                    tp2.Update();
                    tp3.EmitterLocation = new Vector2(Res.gI().ScaleX(3490), Res.gI().ScaleY(630));
                    tp3.Update();
                    tp4.EmitterLocation = new Vector2(Res.gI().ScaleX(3490), Res.gI().ScaleY(730));
                    tp4.Update();
                    casper.update(gametime, controls, gametype, w1l2.getList(), sw1l2.getList().Concat<Rectangle>(AI_w1l2.getListRectangle()));
                    Game1.GetGame().IsMouseVisible = false;
                    if (casper.Hitbox.Intersects(teleport1))
                        controls.Position = new Vector2(Res.gI().ScaleX(500), Res.gI().ScaleY(726));
                    if (casper.Hitbox.Intersects(teleport2))
                        controls.Position = new Vector2(Res.gI().ScaleX(3025), Res.gI().ScaleY(366));
                    if (casper.Hitbox.X > 1320 && isThere == false)
                    {
                        BigMonster = new AI_basic(Content_Manager.getInstance().Textures["Wall"], Content_Manager.getInstance().Textures["enemy2"], new Rectangle(Res.gI().ScaleX(500), Res.gI().ScaleY(0), Res.gI().ScaleX(160), Res.gI().ScaleY(1050)), new Vector2(4, 0), 30000);
                        isThere = true;
                    }
                    if (BigMonster != null)
                        BigMonster.update(gametime);
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world1_lvl2;
                    }
                    previouskeyboardstate = keyboardstate;
                    break;
                case GameType.Menu_Play_Solo_world1_lvl3:
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (respawn == true || casper.healthpoint.respawn == true)
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(80), Res.gI().ScaleY(644));//spawn position
                        respawn = false;
                        casper.healthpoint.respawn = false;
                    }
                    if (casper.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper.Position);
                    if (casper.Position.X > Res.gI().ScaleX(1400))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(1400), 0));

                    Game1.GetGame().casperr = casper;
                    casper.update(gametime, controls, gametype, w1l3.getList(), sw1l3.getList());

                    Game1.GetGame().IsMouseVisible = false;
                    // IA
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world1_lvl3;
                    }
                    previouskeyboardstate = keyboardstate;
                    break;
                case GameType.Menu_Play_Solo_world2_lvl1:
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (respawn == true || casper2.healthpoint.respawn == true)
                    {
                        controlsWorld2.Position = new Vector2(Res.gI().ScaleX(55), Res.gI().ScaleY(924));
                        respawn = false;
                        casper2.healthpoint.respawn = false;
                    }
                    if (casper2.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper2.Position);
                    if (casper2.Position.X > Res.gI().ScaleX(1680))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    AI_w2l1.update(gametime, casper2);
                    Game1.GetGame().casperr = casper2;
                    casper2.update(gametime, controlsWorld2, gametype, w2l1.getList(), AI_w2l1.getListRectangle());
                    Game1.GetGame().IsMouseVisible = true;
                    shots.update(gametime, casper2.Position, AI_w2l1.AI_w2l1);
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world2_lvl1;
                    }
                    previouskeyboardstate = keyboardstate;

                    break;
                case GameType.Menu_Play_Solo_world2_lvl2:
                    previousgametype = GameType.Menu_Play_Solo_World2_Type;
                    if (respawn == true || casper2.healthpoint.respawn == true)
                    {
                        controlsWorld2.Position = new Vector2(Res.gI().ScaleX(200), Res.gI().ScaleY(924));
                        respawn = false;
                        casper2.healthpoint.respawn = false;
                    }
                    if (casper2.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper2.Position);
                    if (casper2.Position.X > Res.gI().ScaleX(1680))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    AI_w2l2.update(gametime,casper2);
                    AI_w2l2_2.update(gametime);
                    Game1.GetGame().casperr = casper2;
                    Game1.GetGame().IsMouseVisible = true;
                    shots2.update(gametime, casper2.Position, AI_w2l2.AI_w2l2);
                    casper2.update(gametime, controlsWorld2, gametype, w2l2.getList(), AI_w2l2_2.getListRectangle().Concat<Rectangle>(AI_w2l2.getListRectangle()));
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        //casper.update(gametime);
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world2_lvl2;
                    }
                    previouskeyboardstate = keyboardstate;
                    break;
                case GameType.Menu_Play_Solo_world2_lvl3:
                    previousgametype = GameType.Menu_Play_Solo_World2_Type;
                    if (respawn == true || casper2.healthpoint.respawn == true)
                    {
                        controlsWorld2.Position = new Vector2(Res.gI().ScaleX(200), Res.gI().ScaleY(924));
                        respawn = false;
                        casper2.healthpoint.respawn = false;
                    }
                    if (casper2.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper2.Position);
                    if (casper2.Position.X > Res.gI().ScaleX(1680))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    AI_w2l3.update(gametime, casper2);
                    Game1.GetGame().casperr = casper2;

                    casper2.update(gametime, controlsWorld2, gametype, w2l3.getList(), AI_w2l3.getListRectangle());
                    Game1.GetGame().IsMouseVisible = true;
                    shots3.update(gametime, casper2.Position, AI_w2l3.AI_w2l3);
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world2_lvl3;
                    }
                    previouskeyboardstate = keyboardstate;
                    break;
                case GameType.Exit:
                    Game1.GetGame().Exit();
                    break;
                case GameType.Menu_Pause:
                    if (previousgametype == GameType.Menu_Play_Solo_world2_lvl1 || previousgametype == GameType.Menu_Play_Solo_world2_lvl2 || previousgametype == GameType.Menu_Play_Solo_world2_lvl3)
                    {
                        if (casper2.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper2.Position);
                        if (casper2.Position.X > Res.gI().ScaleX(1680))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    }
                    if (previousgametype == GameType.Menu_Play_Solo_world1_lvl3)
                    {
                        if (casper.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper.Position);
                        if (casper.Position.X > Res.gI().ScaleX(1400))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(1400), 0));
                    }
                    if (previousgametype == GameType.Menu_Play_Solo_world1_lvl1 || previousgametype == GameType.Menu_Play_Solo_world1_lvl2)
                    {
                        if (casper.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper.Position);
                        if (casper.Position.X > Res.gI().ScaleX(4200))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));
                    }

                    //camera.update(gametime, casper.Position);
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = false;
                        gametype = previousgametype;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.ingame);

                    }
                    menupause.update(gametime, ref gametype, ref previousgametype, camera.centre);
                    previouskeyboardstate = keyboardstate;
                    break;
                case GameType.Menu_Pause_Option:
                    //camera.update(gametime, casper.Position);
                    if (previousgametype == GameType.Menu_Play_Solo_world2_lvl1 || previousgametype == GameType.Menu_Play_Solo_world2_lvl2 || previousgametype == GameType.Menu_Play_Solo_world2_lvl3)
                    {
                        if (casper2.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper2.Position);
                        if (casper2.Position.X > Res.gI().ScaleX(1680))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    }
                    if (previousgametype == GameType.Menu_Play_Solo_world1_lvl3)
                    {
                        if (casper.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper.Position);
                        if (casper.Position.X > Res.gI().ScaleX(1400))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(1400), 0));
                    }
                    if (previousgametype == GameType.Menu_Play_Solo_world1_lvl1 || previousgametype == GameType.Menu_Play_Solo_world1_lvl2)
                    {
                        if (casper.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper.Position);
                        if (casper.Position.X > Res.gI().ScaleX(4200))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));
                    }
                    menupauseoption.update(gametime, ref gametype, ref previousgametype, camera.centre);
                    break;
                default:
                    menubase.update(gametime, ref gametype, ref previousgametype);
                    break;
            }
        }
예제 #3
0
        public void update(GameTime gametime)
        {
            camera.update(gametime, new Vector2(Res.gI().ScaleX(840), 0));
            keyboardstate = Keyboard.GetState();

            switch (gametype)
            {

                case GameType.Menu_Base_Type:

                    menubase.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Exit;

                    casper = new Casper(Content_Manager.getInstance().Textures["Casper"], new Rectangle(0, 0, Res.gI().ScaleX(16), Res.gI().ScaleY(34)));
                    controls = new Controls(casper.Position, casper.Velocity, casper.Speed, Keys.W, Keys.A, Keys.D, Keys.S);
                    respawn = true;
                    player2 = new Casper(Content_Manager.getInstance().Textures["Casper"], new Rectangle(Res.gI().ScaleX(50), Res.gI().ScaleY(50), Res.gI().ScaleX(16), Res.gI().ScaleY(34)));
                    casper2 = new Casper(Content_Manager.getInstance().Textures["Player1"], new Rectangle(Res.gI().ScaleX(9000), Res.gI().ScaleY(9000), Res.gI().ScaleX(31), Res.gI().ScaleY(50)));
                    controlsPlayer2 = new Controls(player2.Position, player2.Velocity, player2.Speed, Keys.Up, Keys.Left, Keys.Right, Keys.Down);
                    controlsWorld2 = new Controls(casper2.Position, casper2.Velocity, casper2.Speed, Keys.W, Keys.A, Keys.D, Keys.S);

                    shots = new Shots();
                    shots2 = new Shots();
                    shots3 = new Shots();

                    deltaboss = 0;

                    bigM = true;

                    finLvl1 = new Rectangle(Res.gI().ScaleX(4620),Res.gI().ScaleY(270),Res.gI().ScaleX(200),Res.gI().ScaleY(50));
                    finLvl2 = new Rectangle(Res.gI().ScaleX(4600),Res.gI().ScaleY(700),Res.gI().ScaleX(200),Res.gI().ScaleY(60));
                    finLvl6 = new Rectangle(Res.gI().ScaleX(40), Res.gI().ScaleY(700), Res.gI().ScaleX(70), Res.gI().ScaleY(90));
                    finLvl4 = new Rectangle(Res.gI().ScaleX(2410),Res.gI().ScaleY(60),Res.gI().ScaleX(70),Res.gI().ScaleY(90));
                    finLvl5 = new Rectangle(Res.gI().ScaleX(40),Res.gI().ScaleY(900),Res.gI().ScaleX(70),Res.gI().ScaleY(90));
                    //finLvl3 = new Rectangle(Res.gI().ScaleX(1838), Res.gI().ScaleY(259), Res.gI().ScaleX(23), Res.gI().ScaleY(24));

                    AI_w1l1 = new AI_W1L1();
                    AI_w1l2 = new AI_W1L2();
                    AI_w2l1 = new AI_W2L1();
                    AI_w2l2 = new AI_W2L2();
                    AI_w2l2_2 = new AI_W2L2_2();
                    AI_w2l3 = new AI_W2L3();
                    Boss = new AI_basic(Content_Manager.getInstance().Textures["PlayerDroite1"], Content_Manager.getInstance().Textures["PlayerGauche1"], new Rectangle(Res.gI().ScaleX(820), Res.gI().ScaleY(150), Res.gI().ScaleX(30), Res.gI().ScaleY(50)), new Vector2(4, 0), Res.gI().ScaleX(610));
                    // 820x y150 x1430 y150 30 50
                    Game1.GetGame().IsMouseVisible = true;

                    casper.healthpoint.healthpoint = 15;
                    casper2.healthpoint.healthpoint = 5;
                    //player2.healthpoint.healthpoint = 13;
                    break;
                case GameType.Menu_Play_Type:
                    menuplay.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Base_Type;
                    break;
                case GameType.Menu_Play_Solo_Type:
                    menuSolo.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Play_Type;
                    break;
                case GameType.Menu_Play_Solo_World1_Type:
                    menusolo1.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Play_Solo_Type;
                    break;
                case GameType.Menu_Play_Solo_World2_Type:
                    menusolo2.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Play_Solo_Type;
                    break;
                case GameType.Menu_Play_Multi_Type:
                    // menuMulti.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (respawn)
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(200), Res.gI().ScaleY(924));
                        respawn = false;
                    }
                    if (casper.healthpoint.respawn)
                    {
                        controls.Position = controlsPlayer2.Position;
                        casper.healthpoint.respawn = false;
                    }
                    if (player2.healthpoint.respawn)
                    {
                        controlsPlayer2.Position = controls.Position;
                        player2.healthpoint.respawn = false;
                    }
                    if (casper.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper.Position);
                    if (casper.Position.X > Res.gI().ScaleX(4200))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));
                    AI_w1l1.update(gametime);
                    casper.update(gametime, controls, gametype, w1l1.getList(), spikes.getList().Concat<Rectangle>(AI_w1l1.getListRectangle()));
                    player2.update(gametime, controlsPlayer2, gametype, w1l1.getList(), spikes.getList().Concat<Rectangle>(AI_w1l1.getListRectangle()));

                    Game1.GetGame().IsMouseVisible = false;
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        previousgametype = GameType.Menu_Play_Multi_Type;
                        casper.update(gametime, controls, gametype, w1l1.getList(), spikes.getList().Concat<Rectangle>(AI_w1l1.getListRectangle()));
                        player2.update(gametime, controlsPlayer2, gametype, w1l1.getList(), spikes.getList().Concat<Rectangle>(AI_w1l1.getListRectangle()));

                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;

                    }
                    previouskeyboardstate = keyboardstate;
                    break;
                case GameType.Menu_Option_Type:
                    menuoptions.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Base_Type;
                    break;
                case GameType.Menu_Play_Solo_world1_lvl1:
                    Game1.GetGame().IsMouseVisible = false;
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (respawn || casper.healthpoint.respawn)
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(200), Res.gI().ScaleY(924));
                        respawn = false;
                        casper.healthpoint.respawn = false;
                    }
                    if (casper.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper.Position);
                    if (casper.Position.X > Res.gI().ScaleX(4200))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));

                    Game1.GetGame().casperr = casper;
                    AI_w1l1.update(gametime);
                    casper.update(gametime, controls, gametype, w1l1.getList(), spikes.getList().Concat<Rectangle>(AI_w1l1.getListRectangle()));
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world1_lvl1;
                    }
                    previouskeyboardstate = keyboardstate;

                    /// fin du lvl
                    if (casper.Hitbox.Intersects(finLvl1))
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(200), Res.gI().ScaleY(244));
                        bigM = true;
                        gametype = GameType.Menu_Play_Solo_world1_lvl2;
                    }
                    ///
                    break;
                case GameType.Menu_Play_Solo_world1_lvl2:
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (respawn || casper.healthpoint.respawn)
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(200), Res.gI().ScaleY(244));
                        respawn = false;
                        casper.healthpoint.respawn = false;
                        bigM = true;
                    }
                    if (casper.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper.Position);
                    if (casper.Position.X > Res.gI().ScaleX(4200))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));

                    Game1.GetGame().casperr = casper;
                    AI_w1l2.update(gametime);
                    tp1.EmitterLocation = new Vector2(Res.gI().ScaleX(1280), Res.gI().ScaleY(450));
                    tp1.Update();
                    tp2.EmitterLocation = new Vector2(Res.gI().ScaleX(3490), Res.gI().ScaleY(530));
                    tp2.Update();
                    tp3.EmitterLocation = new Vector2(Res.gI().ScaleX(3490), Res.gI().ScaleY(630));
                    tp3.Update();
                    tp4.EmitterLocation = new Vector2(Res.gI().ScaleX(3490), Res.gI().ScaleY(730));
                    tp4.Update();
                    casper.update(gametime, controls, gametype, w1l2.getList(), sw1l2.getList().Concat<Rectangle>(AI_w1l2.getListRectangle()));
                    Game1.GetGame().IsMouseVisible = false;
                    if (casper.Hitbox.Intersects(teleport1))
                        controls.Position = new Vector2(Res.gI().ScaleX(500), Res.gI().ScaleY(726));
                    if (casper.Hitbox.Intersects(teleport2))
                        controls.Position = new Vector2(Res.gI().ScaleX(3025), Res.gI().ScaleY(366));
                    if (controls.Position.X > 1320 && bigM)
                    {
                        BigMonster = new AI_basic(Content_Manager.getInstance().Textures["Wall"], Content_Manager.getInstance().Textures["enemy2"], new Rectangle(Res.gI().ScaleX(500), Res.gI().ScaleY(0), Res.gI().ScaleX(160), Res.gI().ScaleY(1050)), new Vector2(6, 0), 30000);
                        bigM = false;
                    }
                    if (BigMonster != null)
                    {
                        BigMonster.update(gametime);
                        if (casper.Hitbox.Intersects(BigMonster.Hitbox))
                        {
                            respawn = true;
                            casper.healthpoint.healthpoint -= 1;
                            SoundManager.hp.Play();
                        }
                    }
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world1_lvl2;
                    }
                    previouskeyboardstate = keyboardstate;

                    // fin lvl
                    if (casper.Hitbox.Intersects(finLvl2))
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(80), Res.gI().ScaleY(644));
                        gametype = GameType.Menu_Play_Solo_world1_lvl3;
                    }
                    break;
                case GameType.Menu_Play_Solo_world1_lvl3:
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (respawn || casper.healthpoint.respawn)
                    {
                        controls.Position = new Vector2(Res.gI().ScaleX(80), Res.gI().ScaleY(644));//spawn position
                        respawn = false;
                        casper.healthpoint.respawn = false;
                    }
                    if (casper.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper.Position);
                    if (casper.Position.X > Res.gI().ScaleX(1400))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(1400), 0));
                    deltaboss++;
                    if (deltaboss > 60)
                        deltaboss = 0;

                    Game1.GetGame().casperr = casper;
                    Boss.update(gametime);
                    casper.update(gametime, controls, gametype, w1l3.getList(), sw1l3.getList());

                    Game1.GetGame().IsMouseVisible = false;
                    // IA
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world1_lvl3;
                    }
                    previouskeyboardstate = keyboardstate;

                    if (casper.Hitbox.Intersects(finLvl3))
                    {
                        gametype = GameType.Trans1;
                        controlsWorld2.Position = new Vector2(Res.gI().ScaleX(55), Res.gI().ScaleY(924));
                    }
                    break;
                case GameType.Menu_Play_Solo_world2_lvl1:
                    previousgametype = GameType.Menu_Play_Solo_World1_Type;
                    if (respawn || casper2.healthpoint.respawn)
                    {
                        controlsWorld2.Position = new Vector2(Res.gI().ScaleX(55), Res.gI().ScaleY(924));
                        respawn = false;
                        casper2.healthpoint.respawn = false;
                        AI_w2l1 = new AI_W2L1();
                    }
                    if (casper2.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper2.Position);
                    if (casper2.Position.X > Res.gI().ScaleX(1680))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    AI_w2l1.update(gametime, casper2);
                    Game1.GetGame().casperr = casper2;
                    casper2.update(gametime, controlsWorld2, gametype, w2l1.getList(), AI_w2l1.getListRectangle());
                    Game1.GetGame().IsMouseVisible = true;
                    shots.update(gametime, casper2.Position, AI_w2l1.AI_w2l1);
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        //MediaPlayer.Volume = 0.7f;
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world2_lvl1;
                    }
                    previouskeyboardstate = keyboardstate;

                    //fin lvl
                    if (casper2.Hitbox.Intersects(finLvl4))
                    {
                        gametype = GameType.Menu_Play_Solo_world2_lvl2;
                        controlsWorld2.Position = new Vector2(Res.gI().ScaleX(2420), Res.gI().ScaleY(80));
                    }
                    break;
                case GameType.Menu_Play_Solo_world2_lvl2:
                    previousgametype = GameType.Menu_Play_Solo_World2_Type;
                    if (respawn || casper2.healthpoint.respawn)
                    {
                        controlsWorld2.Position = new Vector2(Res.gI().ScaleX(2420), Res.gI().ScaleY(80));
                        respawn = false;
                        casper2.healthpoint.respawn = false;
                        AI_w2l2 = new AI_W2L2();
                    }
                    if (casper2.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper2.Position);
                    if (casper2.Position.X > Res.gI().ScaleX(1680))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    AI_w2l2.update(gametime, casper2);
                    AI_w2l2_2.update(gametime);
                    Game1.GetGame().casperr = casper2;
                    Game1.GetGame().IsMouseVisible = true;
                    shots2.update(gametime, casper2.Position, AI_w2l2.AI_w2l2);
                    casper2.update(gametime, controlsWorld2, gametype, w2l2.getList(), AI_w2l2_2.getListRectangle().Concat<Rectangle>(AI_w2l2.getListRectangle()));
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        //casper.update(gametime);
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world2_lvl2;
                    }
                    previouskeyboardstate = keyboardstate;

                    //fin lvl

                    if (casper2.Hitbox.Intersects(finLvl5))
                    {
                        gametype = GameType.Menu_Play_Solo_world2_lvl3;
                        controlsWorld2.Position = new Vector2(Res.gI().ScaleX(55), Res.gI().ScaleY(924));
                    }

                    break;
                case GameType.Menu_Play_Solo_world2_lvl3:
                    previousgametype = GameType.Menu_Play_Solo_World2_Type;
                    if (respawn || casper2.healthpoint.respawn)
                    {
                        controlsWorld2.Position = new Vector2(Res.gI().ScaleX(55), Res.gI().ScaleY(924));
                        respawn = false;
                        casper2.healthpoint.respawn = false;
                        AI_w2l3 = new AI_W2L3();
                    }
                    if (casper2.Position.X > Res.gI().ScaleX(840))
                        camera.update(gametime, casper2.Position);
                    if (casper2.Position.X > Res.gI().ScaleX(1680))
                        camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    AI_w2l3.update(gametime, casper2);
                    Game1.GetGame().casperr = casper2;

                    casper2.update(gametime, controlsWorld2, gametype, w2l3.getList(), AI_w2l3.getListRectangle());
                    Game1.GetGame().IsMouseVisible = true;
                    shots3.update(gametime, casper2.Position, AI_w2l3.AI_w2l3);
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {
                        Game1.GetGame().IsMouseVisible = true;
                        MediaPlayer.Stop();
                        MediaPlayer.Play(SoundManager.pause);
                        gametype = GameType.Menu_Pause;
                        previousgametype = GameType.Menu_Play_Solo_world2_lvl3;
                    }
                    previouskeyboardstate = keyboardstate;
                    if (AI_w2l3.getListRectangle().Count==0)
                    {
                        gametype = GameType.End1;
                    }

                    break;
                case GameType.Exit:
                    Game1.GetGame().Exit();
                    break;
                case GameType.Menu_Pause:
                    if (previousgametype == GameType.Menu_Play_Solo_world2_lvl1 || previousgametype == GameType.Menu_Play_Solo_world2_lvl2 || previousgametype == GameType.Menu_Play_Solo_world2_lvl3)
                    {
                        if (casper2.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper2.Position);
                        if (casper2.Position.X > Res.gI().ScaleX(1680))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    }
                    if (previousgametype == GameType.Menu_Play_Solo_world1_lvl3)
                    {
                        if (casper.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper.Position);
                        if (casper.Position.X > Res.gI().ScaleX(1400))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(1400), 0));
                    }
                    if (previousgametype == GameType.Menu_Play_Solo_world1_lvl1 || previousgametype == GameType.Menu_Play_Solo_world1_lvl2)
                    {
                        if (casper.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper.Position);
                        if (casper.Position.X > Res.gI().ScaleX(4200))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));
                    }

                    //camera.update(gametime, casper.Position);
                    if (keyboardstate.IsKeyDown(Keys.Escape) && previouskeyboardstate.IsKeyUp(Keys.Escape))
                    {

                        ////////// test avec previous game stqt
                        Game1.GetGame().IsMouseVisible = false;
                        MediaPlayer.Stop();
                        gametype = previousgametype;
                        if (previousgametype == GameType.Menu_Play_Solo_world1_lvl2)
                        {
                            MediaPlayer.Play(SoundManager.ingame2);
                        }
                        if (previousgametype == GameType.Menu_Play_Solo_world1_lvl3)
                        {
                            MediaPlayer.Play(SoundManager.ingame3);
                        }
                        if (previousgametype == GameType.Menu_Play_Solo_world2_lvl3)
                        {
                            MediaPlayer.Play(SoundManager.ingame4);
                        }
                        if (previousgametype == GameType.Menu_Play_Solo_world2_lvl1)
                        {
                            MediaPlayer.Play(SoundManager.ingame6);
                        }
                        if (previousgametype == GameType.Menu_Play_Solo_world2_lvl2)
                        {
                            MediaPlayer.Play(SoundManager.ingame5);
                        }

                    }
                    menupause.update(gametime, ref gametype, ref previousgametype, camera.centre);
                    previouskeyboardstate = keyboardstate;
                    break;
                case GameType.Menu_Pause_Option:
                    //camera.update(gametime, casper.Position);
                    if (previousgametype == GameType.Menu_Play_Solo_world2_lvl1 || previousgametype == GameType.Menu_Play_Solo_world2_lvl2 || previousgametype == GameType.Menu_Play_Solo_world2_lvl3)
                    {
                        if (casper2.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper2.Position);
                        if (casper2.Position.X > Res.gI().ScaleX(1680))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(1680), 0));
                    }
                    if (previousgametype == GameType.Menu_Play_Solo_world1_lvl3)
                    {
                        if (casper.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper.Position);
                        if (casper.Position.X > Res.gI().ScaleX(1400))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(1400), 0));
                    }
                    if (previousgametype == GameType.Menu_Play_Solo_world1_lvl1 || previousgametype == GameType.Menu_Play_Solo_world1_lvl2)
                    {
                        if (casper.Position.X > Res.gI().ScaleX(840))
                            camera.update(gametime, casper.Position);
                        if (casper.Position.X > Res.gI().ScaleX(4200))
                            camera.update(gametime, new Vector2(Res.gI().ScaleX(4200), 0));
                    }
                    menupauseoption.update(gametime, ref gametype, ref previousgametype, camera.centre);
                    break;
                case GameType.Intro1:
                    cinematic.update(GameType.Intro2);
                    break;
                case GameType.Intro2:
                    cinematic.update(GameType.Intro3);
                    break;
                case GameType.Intro3:
                    cinematic.update(GameType.Menu_Play_Solo_world1_lvl1);
                    break;
                case GameType.Trans1:
                    cinematic.update(GameType.Trans2);
                    break;
                case GameType.Trans2:
                    cinematic.update(GameType.Trans3);
                    break;
                case GameType.Trans3:
                    cinematic.update(GameType.Menu_Play_Solo_world2_lvl1);
                    break;
                case GameType.End1:
                    cinematic.update(GameType.End2);
                    break;
                case GameType.End2:
                    cinematic.update(GameType.End3);
                    break;
                case GameType.End3:
                    cinematic.update(GameType.Menu_Base_Type);
                    break;
                case GameType.Dead:
                    cinematic.update(GameType.Menu_Base_Type);
                    break;
                case GameType.Menu_Play_Multi_Type2:
                    menumulti2.update(gametime, ref gametype, ref previousgametype);
                    previousgametype = GameType.Menu_Play_Multi_Type;
                    break;
                default:
                    menubase.update(gametime, ref gametype, ref previousgametype);
                    break;
            }
        }