Example #1
0
 public static void Update(PNJ[] pnj, Personnage[] perso, GameTime gameTime, GraphicsDeviceManager graphics, ContentManager Content)
 {
     foreach (PNJ p in pnj)
     {
         p.F_Update(perso, gameTime);
     }
 }
Example #2
0
 public static void Update(GameTime gameTime, GraphicsDeviceManager graphics, ContentManager Content, Personnage[] perso, Monster[] monster, PNJ[] pnj)
 {
     if (continuer)
     {
         continuer = Menu.Update(monster, perso, pnj, graphics, gameTime, Content);
     }
 }
Example #3
0
 public static void LoadNewMap(GameTime gameTime, ContentManager Content, GraphicsDeviceManager graphics, SpriteBatch sb, ref Personnage[] perso, ref Monster[] monster, ref PNJ[] pnj, ref int nbMonster)
 {
     pnj = new PNJ[Map.InitPNJ()];
     perso = new Personnage[GameState.Player];
     nbMonster = Map.Init(monster, pnj);
     monster = new Monster[nbMonster];
     monster = Map.LoadMonster(monster);
     LoadingMenu.Load(perso, monster, pnj, Content, gameTime);
 }
Example #4
0
 private void F_Parler(Personnage[] perso)
 {
     parler = false;
     foreach (Personnage p in perso)
     {
         if (p.G_Interact(this))
         {
             parler = true;
         }
     }
 }
Example #5
0
 public static bool Update(GameTime gameTime, ContentManager Content, GraphicsDeviceManager graphics, SpriteBatch sb, ref Personnage[] perso, ref Monster[] monster, ref PNJ[] pnj, ref int nbPlayer, ref int nbMonster)
 {
     nbPlayer = LoadingMenu.Update(perso, Content);
     if (nbPlayer != 0)
     {
         perso = new Personnage[nbPlayer];
         LoadNewMap(gameTime, Content, graphics, sb, ref perso, ref monster, ref pnj, ref nbMonster);
         return true;
     }
     return false;
 }
Example #6
0
 public Projectile(ContentManager Content, Monster target, Personnage caster, Vector2 position, int damage)
 {
     willExplodeAnd_DESTROY_THE_FACE_OF_DA_MONSSSTTTTTEEEEEERRRRRRRRRRRRRRRRRR = false;
     GOOOOOOOOOO = false;
     imageState = 0;
     objet = Content.Load<Texture2D>("magic/fireball" + imageState);
     this.position = new Vector2(position.X + 40, position.Y + 30);
     this.target = target;
     this.caster = caster;
     this.damage = damage;
     this.time = 0;
 }
Example #7
0
        public static void Draw(Personnage[] perso, Monster[] monster, PNJ[] pnj, SpriteBatch sb, GraphicsDeviceManager graphics, GameTime gameTime)
        {
            graphics.GraphicsDevice.Clear(Color.Pink);
            sb.Begin(SpriteBlendMode.AlphaBlend);

            try
            {
                Map.DrawBack(sb);
                Map.DrawMiddle(sb);
                if (!Map.G_FirstHide())
                {
                    Map.DrawFirst(sb);
                }
                Mob.Draw(perso, monster, pnj, sb, gameTime);
                if (Map.G_FirstHide())
                {
                    Map.DrawFirst(sb);
                }
                Map.DrawBossTrigger(sb, gameTime);
                if (pause)
                {
                    menuObject[0].Draw(sb);
                    Color color = Color.DarkKhaki;
                    if (currentCursor == 0)
                    {
                        color = Color.Gold;
                    }
                    sb.DrawString(GameState.menuFont, LoadingMenu.Local[13], new Vector2(350, 350), color);
                    if (currentCursor == 1)
                    {
                        color = Color.Gold;
                    }
                    else
                    {
                        color = Color.DarkKhaki;
                    }
                    sb.DrawString(GameState.menuFont, LoadingMenu.Local[14], new Vector2(350, 475), color);
                    if (currentCursor == 2)
                    {
                        color = Color.Gold;
                    }
                    else
                    {
                        color = Color.DarkKhaki;
                    }
                    sb.DrawString(GameState.menuFont, LoadingMenu.Local[2], new Vector2(350, 600), color);
                }
            }
            catch (ArgumentNullException) { }

            sb.End();
        }
Example #8
0
        public static void Draw(Personnage[] perso, Monster[] monster, PNJ[] pnj, SpriteBatch sb, GameTime gameTime)
        {
            Vector2[] sort = new Vector2[GameState.Player + GameState.Monster];
            for (int k = 0; k < GameState.Player; k++)
            {
                sort[k].X = k;
                sort[k].Y = perso[k].position.Y + 65;
                if (! perso[k].G_IsAlive())
                    sort[k].Y -= 4242;
            }
            for (int k = 0; k < GameState.Monster; k++)
            {
                sort[k + GameState.Player].X = k + GameState.Player;
                sort[k + GameState.Player].Y = monster[k].position.Y + 155;
                if (!monster[k].G_IsAlive())
                    sort[k + GameState.Player].Y -= 4242;
            }

            for (int i = 0; i < GameState.Player + GameState.Monster; i++)
            {
                int min = -1;
                for (int k = 0; k < GameState.Player + GameState.Monster; k++)
                {
                    if ((sort[k].X != -1) && (min == -1 || sort[k].Y < sort[min].Y))
                    {
                        min = k;
                    }
                }
                array[i] = (int)sort[min].X;
                sort[min].X = -1;
            }

            foreach (int i in array)
            {
                if (i < GameState.Player)
                    perso[i].F_Draw(sb, gameTime, perso);
                else
                    monster[i - GameState.Player].F_Draw(sb);
            }

            PNJ.Draw(pnj, sb);

            foreach (Monster m in monster)
            {
                m.F_DrawDegats(sb, gameTime);
            }

            foreach (Personnage p in perso)
            {
                p.F_DrawDegats(sb, gameTime);
            }
        }
Example #9
0
 public Monster(Vector2 init, int id, int boss)
     : base()
 {
     this.target = null;
     this.id = id;
     this.boss = boss;
     this.spawn = new Rectangle((int)init.X - 200, (int)init.Y - 200, 400, 400);
     this.position = init;
     this.life = (int)(200 * GameState.Level * GameState.Player * boss);
     this.lifeMax = this.life;
     tempsRandom = 0;
     tempsAttaque = -5;
 }
Example #10
0
 public static void Draw(GameTime gameTime, SpriteBatch spriteBatch, GraphicsDeviceManager graphics, ContentManager Content, Personnage[] perso, Monster[] monster, PNJ[] pnj)
 {
     if (continuer)
     {
         Menu.Draw(perso, monster, pnj, spriteBatch, graphics, gameTime);
     }
     else
     {
         if (!Keyboard.GetState().IsKeyDown(Keys.Enter))
         {
             Menu.DrawGameOver(perso, monster, pnj, spriteBatch, graphics, gameTime);
         }
         else
         {
             GameState.Restart(Content);
         }
     }
 }
Example #11
0
        public static void LoadPerso(Personnage[] perso)
        {
            FileStream fs = new FileStream("Save/" + Program.save + ".save", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            sr.ReadLine();
            sr.ReadLine();

            foreach (Personnage p in perso)
            {
                string str = sr.ReadLine();
                str = str.Substring(6);
                p.S_Nom(str);
                sr.ReadLine();
                str = sr.ReadLine();
                str = str.Substring(3);
                p.S_Xp(int.Parse(str));
            }

            sr.Close();
            fs.Close();
        }
Example #12
0
        public static void LoadClass(ref int[] persoClass, Personnage[] perso)
        {
            FileStream fs = new FileStream("Save/" + Program.save + ".save", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            sr.ReadLine();
            sr.ReadLine();

            persoClass = new int[GameState.Player];

            int i = 0;
            foreach (Personnage p in perso)
            {
                sr.ReadLine();
                string str = sr.ReadLine();
                str = str.Substring(7);
                persoClass[i] = int.Parse(str);
                sr.ReadLine();
                i++;
            }

            sr.Close();
            fs.Close();
        }
Example #13
0
        public static void DrawGameOver(Personnage[] perso, Monster[] monster, PNJ[] pnj, SpriteBatch spriteBatch, GraphicsDeviceManager graphics, GameTime gameTime)
        {
            graphics.GraphicsDevice.Clear(Color.Pink);
            spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

            try
            {
                Map.DrawBack(spriteBatch);
                Map.DrawMiddle(spriteBatch);
                if (!Map.G_FirstHide())
                {
                    Map.DrawFirst(spriteBatch);
                }
                Mob.Draw(perso, monster, pnj, spriteBatch, gameTime);
                if (Map.G_FirstHide())
                {
                    Map.DrawFirst(spriteBatch);
                }
            }
            catch (ArgumentNullException) { }
            menuObject[1].Draw(spriteBatch);

            spriteBatch.End();
        }
Example #14
0
        private void F_Update(Personnage[] perso, Monster[] monster, ContentManager Content, GameTime gameTime, GraphicsDeviceManager graphics)
        {
            if (G_IsAlive())
            {
                F_Deplacer();
                F_Cheat(gameTime, perso);
                if (newState.IsKeyDown(Keys.LeftShift))
                {
                    S_ImgState(20);
                }
                F_Attaque(monster, gameTime, Content, perso);
                F_SpecialAttaque(monster, perso, gameTime);
                foreach (Rectangle collision in Map.G_Collision())
                {
                    F_Collision_Objets(collision, gameTime);
                }
                foreach (Monster m in monster)
                {
                    if (m.G_IsAlive())
                        F_Collision_Objets(m.G_Rectangle(), gameTime);
                }
                for (int i = 0; i < projectile.Count; i++)
                {
                    if (projectile[i].Update(gameTime, Content))
                    {
                        projectile.RemoveAt(i);
                    }
                }
                F_Collision_Ecran(graphics, gameTime);
                F_UpdateRegen(gameTime);
            }

            F_UpdateImage(gameTime);
            try
            {
                objet = Content.Load<Texture2D>("perso/" + classe + "/" + imgState);
            }
            catch (ContentLoadException) { }
            S_Deplacement(gameTime);
        }
Example #15
0
 private void F_SpecialAttaque(Monster[] monster, Personnage[] perso, GameTime gameTime)
 {
     switch (classe)
     {
         case 1: F_Booster(gameTime); break;
         case 2: F_BERZERKER(gameTime); break;
         case 3: F_Healing(perso, gameTime); break;
         case 4: F_OverKill(monster, perso, gameTime); break;
     }
 }
Example #16
0
        private void F_OverKill(Monster[] monster, Personnage[] perso, GameTime gameTime)
        {
            newState = Keyboard.GetState();

            Monster[] m_target_ovrkl = new Monster[GameState.Monster];
            Personnage[] p_target_ovrkl = new Personnage[GameState.Player];
            bool p_target = false;
            bool m_target = false;

            tempsActuel = (float)gameTime.TotalGameTime.TotalSeconds;
            if (tempsActuel > tempsAttaque[1] + 3)
            {
                if (newState.IsKeyDown(key[5]) && power >= 500)
                {
                    power -= 500;
                    for (int i = 0; i < GameState.Monster; i++)
                    {
                        m_target_ovrkl[i] = null;
                    }

                    for (int i = 0; i < GameState.Player; i++)
                    {
                        p_target_ovrkl[i] = null;
                    }

                    for (int i = 0; i < GameState.Monster; i++)
                    {
                        m_target_ovrkl[i] = F_DetectMonsters(monster[i]);
                        foreach (Monster m in m_target_ovrkl)
                        {
                            if (m != null)
                                m_target = true;
                        }

                        if (m_target && monster[i].G_IsAlive() && m_target_ovrkl[i] != null)
                        {
                            monster[i].S_Degat((int)((10 + level * 7) * mana), gameTime);
                            if (monster[i].G_Killed())
                            {
                                S_Xp(monster[i].G_MaxLife(), gameTime, perso);
                            }
                        }
                    }

                    for (int i = 0; i < GameState.Player; i++)
                    {
                        if (i != id - 1)
                        {
                            p_target_ovrkl[i] = F_DetectAllies(perso[i]);
                            foreach (Personnage p in p_target_ovrkl)
                            {
                                if (p != null)
                                    p_target = true;
                            }

                            if (p_target && perso[i].G_IsAlive() && p_target_ovrkl[i] != null)
                            {
                                perso[i].S_Degat((int)((level * 3) * mana), gameTime);
                            }
                        }
                    }

                    Son.Play(4);
                    imgState = 101;
                    tempsAttaque[1] = tempsActuel;
                }
            }
            else
            {
                if (tempsActuel > tempsAttaque[1] + 1)
                    if (imgState == 105)
                        imgState = 20;
                    else { }
                else if (tempsActuel > tempsAttaque[1] + 0.8)
                    imgState = 105;
                else if (tempsActuel > tempsAttaque[1] + 0.6)
                    imgState = 104;
                else if (tempsActuel > tempsAttaque[1] + 0.4)
                    imgState = 103;
                else if (tempsActuel > tempsAttaque[1] + 0.2)
                    imgState = 102;
                if (imgState > 100)
                    speed = Vector2.Zero;
            }
        }
Example #17
0
 public static void Load(Personnage[] perso, Monster[] monster, PNJ[] pnj, ContentManager Content, GameTime gameTime)
 {
     Mob.Load(Content);
     SaveLoad.LoadClass(ref persoClasse, perso);
     Personnage.Load(perso, Content);
     SaveLoad.LoadPerso(perso);
     Monster.Load(monster, Content);
     PNJ.Load(pnj, Content);
     Map.Load(Content);
     Map.Update(gameTime, perso, Content);
 }
Example #18
0
        public static int Update(Personnage[] perso, ContentManager Content)
        {
            /******* STATE ********\
             * 0 : Menu principal *
             * 1 : Choix nb perso *
             * 2 : Setup          *
             * 9 : Exit           *
            \**********************/

            newState = Keyboard.GetState();

            #region Raccourcis
            if (newState.IsKeyDown(Keys.F11))
            {
                persoClasse = new int[1];
                persoClasse[0] = 1;
                return 1;
            }
            if (newState.IsKeyDown(Keys.F12))
            {
                persoClasse = new int[2];
                persoClasse[0] = 1;
                persoClasse[1] = 3;
                return 2;
            }
            #endregion

            if (state <= 5 || state == 9)
            {
                float posX = menuObject[1].Position.X;
                if (posX > 42)
                    speedX -= 0.2f;
                if (posX < 42)
                    speedX += 0.2f;
                menuObject[1].S_PosX(posX + speedX / 2);
                menuObject[1].S_PosY(300 + 125 * currentCursor);
            }

            #region Menu principal
            if (state == (int)MenuState.Principal)
            {
                if (newState.IsKeyDown(Keys.Up) && !oldState.IsKeyDown(Keys.Up))
                {
                    currentCursor--;
                    if (currentCursor == -1)
                        currentCursor = 3;
                }
                if (newState.IsKeyDown(Keys.Down) && !oldState.IsKeyDown(Keys.Down))
                {
                    currentCursor = (currentCursor + 1) % 4;
                }
                if (newState.IsKeyDown(Keys.Enter) && !oldState.IsKeyDown(Keys.Enter))
                {
                    if (currentCursor == 0)
                    {
                        state = (int)MenuState.NombrePerso_;
                    }
                    else if (currentCursor == 1)
                    {
                        temp = 0;
                        fs = new FileStream("Config/save", FileMode.Open);
                        sr = new StreamReader(fs);
                        save = new string[int.Parse(sr.ReadLine())];
                        for (int i = 0; i < save.GetLength(0); i++)
                        {
                            save[i] = sr.ReadLine();
                        }
                        sr.Close();
                        fs.Close();
                        if (save.GetLength(0) != 0)
                        {
                            fs = new FileStream("Save/" + save[0] + ".save", FileMode.Open);
                            sr = new StreamReader(fs);
                            state = (int)MenuState.LoadSave_;
                        }
                    }
                    else if (currentCursor == 2)
                    {
                        state = (int)MenuState.Setup_;
                    }
                    else if (currentCursor == 3)
                    {
                        state = (int)MenuState.Exit_;
                    }

                    speedX = 35;
                }
            }
            #endregion
            #region Load
            else if (state == (int)MenuState.LoadSave)
            {
                if (newState.IsKeyDown(Keys.Up) && !oldState.IsKeyDown(Keys.Up))
                {
                    currentCursor--;
                    if (currentCursor == -1)
                        currentCursor = 1;
                }
                if (newState.IsKeyDown(Keys.Down) && !oldState.IsKeyDown(Keys.Down))
                {
                    currentCursor = (currentCursor + 1) % 2;
                }
                if (newState.IsKeyDown(Keys.Left) && !oldState.IsKeyDown(Keys.Left))
                {
                    sr.Close();
                    fs.Close();
                    fs = new FileStream("Save/" + save[temp] + ".save", FileMode.Open);
                    sr = new StreamReader(fs);
                    temp--;
                    if (temp == -1)
                        temp = save.GetLength(0) - 1;
                }
                if (newState.IsKeyDown(Keys.Right) && !oldState.IsKeyDown(Keys.Right))
                {
                    sr.Close();
                    fs.Close();
                    fs = new FileStream("Save/" + save[temp] + ".save", FileMode.Open);
                    sr = new StreamReader(fs);
                    temp = (temp + 1) % save.GetLength(0);
                }
                if (newState.IsKeyDown(Keys.Enter) && !oldState.IsKeyDown(Keys.Enter))
                {
                    sr.Close();
                    fs.Close();
                    if (currentCursor == 0)
                    {
                        menuObject[1] = new Objet(new Vector2(230, 270), Content.Load<Texture2D>("menu/levelSelector"));
                        menuObject[2] = new Objet(new Vector2(233, 0), Content.Load<Texture2D>("menu/_"));
                        Program.save = save[temp];
                        state = (int)MenuState.ChooseLevel;
                        temp = SaveLoad.Loading();
                    }
                    else if (currentCursor == 1)
                    {
                        currentCursor = 0;
                        state = (int)MenuState.Principal;
                    }
                }
            }
            #endregion
            #region ChooseLevel
            else if (state == (int)MenuState.ChooseLevel)
            {
                if (newState.IsKeyDown(Keys.Up) && !oldState.IsKeyDown(Keys.Up))
                {
                    currentCursor--;
                    if (currentCursor == -1)
                        currentCursor = 11;
                }
                if (newState.IsKeyDown(Keys.Down) && !oldState.IsKeyDown(Keys.Down))
                {
                    currentCursor = (currentCursor + 1) % 12;
                }
                if (newState.IsKeyDown(Keys.Left) && !oldState.IsKeyDown(Keys.Left))
                {
                    currentCursor -= 6;
                    if (currentCursor < 0)
                    {
                        currentCursor += 12;
                    }
                }
                if (newState.IsKeyDown(Keys.Right) && !oldState.IsKeyDown(Keys.Right))
                {
                    currentCursor += 6;
                    if (currentCursor > 11)
                    {
                        currentCursor -= 12;
                    }
                }
                if (newState.IsKeyDown(Keys.Enter) && !oldState.IsKeyDown(Keys.Enter))
                {
                    sr.Close();
                    fs.Close();
                    if (currentCursor == 5 || currentCursor == 11)
                    {
                        currentCursor = 0;
                        state = (int)MenuState.Principal;
                        menuObject[1] = new Objet(new Vector2(0, 350), Content.Load<Texture2D>("menu/epee"));
                    }
                    else
                    {
                        if (currentCursor < 5)
                        {
                            GameState.Level = currentCursor + 1;
                        }
                        else
                        {
                            GameState.Level = currentCursor;
                        }
                        return temp;
                    }
                }
            }
            #endregion
            #region Nombre Perso
            else if (state == (int)MenuState.NombrePerso)
            {

                if (newState.IsKeyDown(Keys.Up) && !oldState.IsKeyDown(Keys.Up))
                {
                    currentCursor--;
                    if (currentCursor == -1)
                        currentCursor = 2;
                }
                if (newState.IsKeyDown(Keys.Down) && !oldState.IsKeyDown(Keys.Down))
                {
                    currentCursor = (currentCursor + 1) % 3;
                }
                if (newState.IsKeyDown(Keys.Right) && !oldState.IsKeyDown(Keys.Right))
                {
                    nbPlayer = (nbPlayer % 4) + 1;
                }
                if (newState.IsKeyDown(Keys.Left) && !oldState.IsKeyDown(Keys.Left))
                {
                    nbPlayer--;
                    if (nbPlayer == 0)
                        nbPlayer = 4;
                }
                if (newState.IsKeyDown(Keys.Enter) && !oldState.IsKeyDown(Keys.Enter))
                {
                    if (currentCursor == 0)
                    {
                        persoClasse = new int[nbPlayer];
                        state = (int)MenuState.SelecClasse1;
                        temp = 0;
                    }
                    else if (currentCursor == 1)
                    {
                        state = (int)MenuState.Principal;
                        currentCursor = 0;
                        menuObject[1].S_PosX(-42);
                        speedX = 0;
                    }
                    else if (currentCursor == 2)
                    {
                        Program.gs.Exit();
                    }
                }
            }
            #endregion
            #region Setup
            else if (state == (int)MenuState.Setup)
            {
                if (newState.IsKeyDown(Keys.Up) && !oldState.IsKeyDown(Keys.Up))
                {
                    currentCursor--;
                    if (currentCursor == -1)
                        currentCursor = 3;

                }
                if (newState.IsKeyDown(Keys.Down) && !oldState.IsKeyDown(Keys.Down))
                {
                    currentCursor = (currentCursor + 1) % 4;
                }
                if (newState.IsKeyDown(Keys.Enter) && !oldState.IsKeyDown(Keys.Enter))
                {
                    if (currentCursor == 0)
                    {
                        state = (int)MenuState.SetupVideo;
                    }
                    else if (currentCursor == 1)
                    {
                        state = (int)MenuState.SetupAudio;
                    }
                    else if (currentCursor == 2)
                    {
                        state = (int)MenuState.SetupLocal;
                    }
                    else if (currentCursor == 3)
                    {
                        state = (int)MenuState.Principal;
                        menuObject[1] = new Objet(new Vector2(0, 350), Content.Load<Texture2D>("menu/epee"));
                        speedX = 0;
                    }
                    currentCursor = 0;
                }
            }
            else if (state == (int)MenuState.SetupVideo)
            {
                if (newState.IsKeyDown(Keys.Up) && !oldState.IsKeyDown(Keys.Up))
                {
                    currentCursor--;
                    if (currentCursor == -1)
                        currentCursor = 2;

                }
                if (newState.IsKeyDown(Keys.Down) && !oldState.IsKeyDown(Keys.Down))
                {
                    currentCursor = (currentCursor + 1) % 3;
                }
                if (newState.IsKeyDown(Keys.Right) && !oldState.IsKeyDown(Keys.Right))
                {
                    if (currentCursor == 0)
                        setup[currentCursor] = (setup[currentCursor] + 1) % 3;
                    else if (currentCursor == 1)
                        setup[currentCursor] = (setup[currentCursor] + 1) % 2;
                }
                if (newState.IsKeyDown(Keys.Left) && !oldState.IsKeyDown(Keys.Left))
                {
                    if (currentCursor != 2)
                    {
                        setup[currentCursor]--;
                        if (setup[currentCursor] == -1)
                        {
                            if (currentCursor == 0)
                                setup[currentCursor] = 2;
                            else
                                setup[currentCursor] = 1;
                        }
                    }
                }
                if (newState.IsKeyDown(Keys.Enter) && !oldState.IsKeyDown(Keys.Enter))
                {
                    if (currentCursor <= 1)
                    {
                        ApplyChanges(Content);
                    }
                    else
                    {
                        currentCursor = 0;
                        state = (int)MenuState.Setup;
                        menuObject[1] = new Objet(new Vector2(0, 350), Content.Load<Texture2D>("menu/epee"));
                        speedX = 0;
                    }
                }
            }
            else if (state == (int)MenuState.SetupAudio)
            {
                if (newState.IsKeyDown(Keys.Up) && !oldState.IsKeyDown(Keys.Up))
                {
                    currentCursor--;
                    if (currentCursor == -1)
                        currentCursor = 2;

                }
                if (newState.IsKeyDown(Keys.Down) && !oldState.IsKeyDown(Keys.Down))
                {
                    currentCursor = (currentCursor + 1) % 3;
                }
                if (currentCursor == 0)
                {
                    if (newState.IsKeyDown(Keys.Right) && !oldState.IsKeyDown(Keys.Right))
                    {
                        setup[2] = (setup[2] + 1) % 2;
                    }
                    if (newState.IsKeyDown(Keys.Left) && !oldState.IsKeyDown(Keys.Left))
                    {
                        setup[2]--;
                        if (setup[2] == -1)
                        {
                            setup[2] = 1;
                        }
                    }
                }
                if (currentCursor == 1)
                {
                    if (newState.IsKeyDown(Keys.Right))
                    {
                        setup[3]++;
                        if (setup[3] > 100)
                            setup[3] = 100;
                    }
                    if (newState.IsKeyDown(Keys.Left))
                    {
                        setup[3]--;
                        if (setup[3] < 0)
                            setup[3] = 0;
                    }
                    Program.volume = setup[3];
                    Son.InstanceVolume();
                }
                if (newState.IsKeyDown(Keys.Enter) && !oldState.IsKeyDown(Keys.Enter))
                {
                    if (currentCursor <= 1)
                    {
                        ApplyChanges(Content);
                    }
                    else
                    {
                        currentCursor = 0;
                        state = (int)MenuState.Setup;
                        menuObject[1] = new Objet(new Vector2(0, 350), Content.Load<Texture2D>("menu/epee"));
                        speedX = 0;
                    }
                }
            }
            else if (state == (int)MenuState.SetupLocal)
            {
                if (newState.IsKeyDown(Keys.Up) && !oldState.IsKeyDown(Keys.Up))
                {
                    currentCursor--;
                    if (currentCursor == -1)
                        currentCursor = 2;

                }
                if (newState.IsKeyDown(Keys.Down) && !oldState.IsKeyDown(Keys.Down))
                {
                    currentCursor = (currentCursor + 1) % 3;
                }
                if (newState.IsKeyDown(Keys.Enter) && !oldState.IsKeyDown(Keys.Enter))
                {
                    if (currentCursor <= 1)
                    {
                        setup[4] = currentCursor;
                        ApplyChanges(Content);
                    }
                    else
                    {
                        currentCursor = 0;
                        state = (int)MenuState.Setup;
                        menuObject[1] = new Objet(new Vector2(0, 350), Content.Load<Texture2D>("menu/epee"));
                        speedX = 0;
                    }
                }
            }
            #endregion
            #region Selection Classe
            else if (state >= 5 && state <= 8)
            {
                menuObject[1] = new Objet(new Vector2(100, 500), Content.Load<Texture2D>("perso/1/10"));
                menuObject[2] = new Objet(new Vector2(300, 500), Content.Load<Texture2D>("perso/2/10"));
                menuObject[3] = new Objet(new Vector2(500, 500), Content.Load<Texture2D>("perso/3/10"));
                menuObject[4] = new Objet(new Vector2(700, 500), Content.Load<Texture2D>("perso/4/10"));
                menuObject[5] = new Objet(new Vector2(92 + (200 * currentCursor), 480), Content.Load<Texture2D>("menu/selection"));

                if (newState.IsKeyDown(Keys.Up) && !oldState.IsKeyDown(Keys.Up))
                {
                    temp--;
                    if (temp == -1)
                        temp = 1;

                }
                if (newState.IsKeyDown(Keys.Down) && !oldState.IsKeyDown(Keys.Down))
                {
                    temp = (temp + 1) % 2;
                }
                if (newState.IsKeyDown(Keys.Right) && !oldState.IsKeyDown(Keys.Right))
                {
                    if (temp == 0)
                        currentCursor = (currentCursor + 1) % 4;
                }
                if (newState.IsKeyDown(Keys.Left) && !oldState.IsKeyDown(Keys.Left))
                {
                    if (temp == 0)
                    {
                        currentCursor--;
                        if (currentCursor == -1)
                            currentCursor = 3;
                    }
                }
                if (newState.IsKeyDown(Keys.Enter) && !oldState.IsKeyDown(Keys.Enter))
                {
                    if (temp == 0)
                    {
                        persoClasse[state - 5] = currentCursor + 1;
                        state++;
                        if (state - 5 == nbPlayer)
                        {
                            SaveLoad.NewGame(nbPlayer);
                            return nbPlayer;
                        }
                    }
                    else
                    {
                        currentCursor = 0;
                        speedX = 0;
                        state = 1;
                        menuObject[1] = new Objet(new Vector2(-42, 350), Content.Load<Texture2D>("menu/epee"));
                    }
                }
            }
            #endregion
            #region Other
            else if (state == (int)MenuState.Exit)
            {
                Program.gs.Exit();
            }
            if (state == 10 || state == 20 || state == 110 || state == 300)
            {
                menuObject[1].S_PosX(menuObject[1].Position.X + speedX / 2);
                if (menuObject[1].Position.X > Program.width)
                {
                    state /= 10;
                    currentCursor = 0;
                    menuObject[1].S_PosX(-42);
                    speedX = 0;
                }
            }
            #endregion
            oldState = newState;
            return 0;
        }
Example #19
0
        private void F_Attaque(Monster[] monster, GameTime gameTime, ContentManager Content, Personnage[] perso)
        {
            newState = Keyboard.GetState();
            tempsActuel = (float)gameTime.TotalGameTime.TotalSeconds;
            if (tempsActuel > tempsAttaque[0] + time)
            {
                if (newState.IsKeyDown(key[4]) && (classe == 1 || (classe == 2 && AtkSpe) || power >= 100))
                {
                    oldImage = imgState;
                    bool attaque = false;
                    if (classe == 1 || (classe == 2 && AtkSpe))
                    { }
                    else
                        power -= 100;
                    foreach (Monster m in monster)
                    {
                        if (m.G_IsAlive() && !attaque && ((G_Rectangle().Intersects(m.G_Aggro()) && classe == 4) || (G_Rectangle().Intersects(m.G_Interact()) && classe != 4)))
                        {
                            attaque = true;
                            if (classe == 4)
                            {
                                projectile.Add(new Projectile(Content, m, this, position, (int)((42 + random.Next(10) + 10 * level) * force)));
                            }
                            else
                            {
                                m.S_Degat((int)((42 + random.Next(10) + 10 * level) * force), gameTime);
                                if (m.G_Killed())
                                {
                                    S_Xp(m.G_MaxLife() / 4, gameTime, perso);
                                }
                            }
                        }
                    }
                    if (id == 3)
                        Son.Play(3);

                    tempsAttaque[0] = tempsActuel;
                }
            }
            else if (classe == 1 && !AtkSpe)
            {
                if (tempsActuel > tempsAttaque[0] + 0.35)
                {
                    if (imgState % 10 == -3)
                    {
                        Son.Play(1);
                        imgState = oldImage / 10 * 10;
                    }
                }
                else if (tempsActuel > tempsAttaque[0] + 0.25)
                {
                    ImageTest(-3);
                }
                else if (tempsActuel > tempsAttaque[0] + 0.16)
                {
                    ImageTest(-2);
                }
                else if (tempsActuel > tempsAttaque[0] + 0.07)
                {
                    ImageTest(-1);
                }
                else if (tempsActuel > tempsAttaque[0])
                {
                    ImageTest(0);
                }
            }
            else if (classe == 1 && AtkSpe)
            {
                if (tempsActuel > tempsAttaque[0] + 0.175)
                {
                    if (imgState % 10 == -3)
                    {
                        Son.Play(1);
                        imgState = oldImage / 10 * 10;
                    }
                }
                else if (tempsActuel > tempsAttaque[0] + 0.125)
                {
                    ImageTest(-3);
                }
                else if (tempsActuel > tempsAttaque[0] + 0.08)
                {
                    ImageTest(-2);
                }
                else if (tempsActuel > tempsAttaque[0] + 0.035)
                {
                    ImageTest(-1);
                }
                else if (tempsActuel > tempsAttaque[0])
                {
                    ImageTest(0);
                }
            }
            else if (classe == 2 && !AtkSpe)
            {
                if (tempsActuel > tempsAttaque[0] + 0.3)
                {
                    if (imgState % 10 == -2)
                    {
                        Son.Play(1);
                        imgState = oldImage / 10 * 10;
                    }
                }
                else if (tempsActuel > tempsAttaque[0] + 0.2)
                {
                    ImageTest(-2);
                }
                else if (tempsActuel > tempsAttaque[0] + 0.1)
                {
                    ImageTest(-1);
                }
                else if (tempsActuel > tempsAttaque[0])
                {
                    ImageTest(0);
                }

            }
            else if (classe == 2 && AtkSpe)
            {
                if (tempsActuel > tempsAttaque[0] + 0.3 - (0.3 * 1/6))
                {
                    if (imgState % 10 == -2)
                    {
                        Son.Play(1);
                        imgState = oldImage / 10 * 10;
                    }
                }
                else if (tempsActuel > tempsAttaque[0] + 0.2 - (0.2 * 1/6))
                {
                    ImageTest(-2);
                }
                else if (tempsActuel > tempsAttaque[0] + 0.1 - (0.1 * 1/6))
                {
                    ImageTest(-1);
                }
                else if (tempsActuel > tempsAttaque[0])
                {
                    ImageTest(0);
                }

            }
            else if (classe == 3)
            {
                if (tempsActuel > tempsAttaque[0] + 0.4)
                {
                    if (imgState < 0)
                    {
                        imgState = oldImage / 10 * 10;
                        Son.Play(3);
                    }
                }
                else
                {
                    if (oldImage / 10 == 1 || oldImage / 10 == 2 || oldImage / 10 == 3 || oldImage / 10 == 5 || oldImage / 10 == 6)
                        imgState = -10;
                    else
                        imgState = -20;
                }
            }
            else if (classe == 4)
            {
                if (tempsActuel > tempsAttaque[0] + 0.8)
                {
                    if (imgState % 10 == -3)
                    {
                        imgState = oldImage / 10 * 10;
                    }
                }
                else if (tempsActuel > tempsAttaque[0] + 0.6)
                {
                    for (int i = 0; i < projectile.Count; i++)
                    {
                        projectile[i].StartFiring();
                    }

                    ImageTest(-3);
                }
                else if (tempsActuel > tempsAttaque[0] + 0.4)
                {
                    ImageTest(-2);
                }
                else if (tempsActuel > tempsAttaque[0] + 0.2)
                {
                    ImageTest(-1);
                }
                else if (tempsActuel > tempsAttaque[0])
                {
                    ImageTest(0);
                }
            }

            if (imgState < 0)
                speed = Vector2.Zero;
        }
Example #20
0
        public void F_Draw(SpriteBatch sb, GameTime gameTime, Personnage[] perso)
        {
            if (imgState < 0 && classe == 1)
                sb.Draw(objet, new Vector2((int)position.X - 40, (int)position.Y - 30), Color.White);
            else if (imgState < 100)
                sb.Draw(objet, new Vector2((int)position.X, (int)position.Y), Color.White);
            else
                sb.Draw(objet, new Vector2((int)position.X - 240, (int)position.Y - 210), Color.White);

            if (imgState > 100)
                sb.DrawString(GameState.overKill, "OVERKILL", new Vector2(position.X - 100, position.Y - 120), Color.Firebrick);

            if (tempsLevelUp + 1 > gameTime.TotalRealTime.TotalSeconds)
                sb.DrawString(GameState.overKill, LoadingMenu.Local[18], new Vector2(position.X - 100, position.Y - 80), Color.DarkOrange);

            F_DrawHealth(sb);
            foreach (Projectile proj in projectile)
            {
                proj.Draw(sb);
            }
            if (healState != 0)
            {
                foreach (Personnage p in perso)
                {
                    sb.Draw(heal, new Vector2(p.G_Rectangle().X, p.G_Rectangle().Y - (healState * 10)), Color.White);
                }
            }
        }
Example #21
0
 public static void Update(Personnage[] perso, GameTime gameTime, Monster[] monster, GraphicsDeviceManager graphics, ContentManager Content)
 {
     foreach (Personnage p in perso)
         p.F_Update(perso, monster, Content, gameTime, graphics);
 }
Example #22
0
        public static void Load(Personnage[] perso, ContentManager Content)
        {
            Personnage.portrait = new Objet[GameState.Player];
            if (GameState.Player > 0)
            {
                perso[0] = new Personnage(new Keys[] { Keys.Down, Keys.Right, Keys.Up, Keys.Left, Keys.Space, Keys.RightShift }, new Vector2(300f, 350f), 1, LoadingMenu.PersoClasse[0]);
                portrait[0] = new Objet(new Vector2(15, 10), Content.Load<Texture2D>("ui/" + LoadingMenu.PersoClasse[0]));
            }

            if (GameState.Player > 1)
            {
                perso[1] = new Personnage(new Keys[] { Keys.S, Keys.D, Keys.Z, Keys.Q, Keys.F, Keys.E }, new Vector2(330f, 450f), 2, LoadingMenu.PersoClasse[1]);
                portrait[1] = new Objet(new Vector2(Program.width - 95, 10), Content.Load<Texture2D>("ui/" + LoadingMenu.PersoClasse[1]));
            }

            if (GameState.Player > 2)
            {
                perso[2] = new Personnage(new Keys[] { Keys.NumPad5, Keys.NumPad6, Keys.NumPad8, Keys.NumPad4, Keys.NumPad0, Keys.NumPad7 }, new Vector2(360f, 550f), 3, LoadingMenu.PersoClasse[2]);
                portrait[2] = new Objet(new Vector2(15, 115), Content.Load<Texture2D>("ui/" + LoadingMenu.PersoClasse[2]));
            }

            if (GameState.Player > 3)
            {
                perso[3] = new Personnage(new Keys[] { Keys.L, Keys.M, Keys.O, Keys.K, Keys.J, Keys.P }, new Vector2(390f, 650f), 4, LoadingMenu.PersoClasse[3]);
                portrait[3] = new Objet(new Vector2(Program.width - 95, 115), Content.Load<Texture2D>("ui/" + LoadingMenu.PersoClasse[3]));
            }

            foreach (Personnage p in perso)
                p.F_Load(Content);
        }
Example #23
0
        public static void Save(Personnage[] p)
        {
            FileStream fs = new FileStream("Save/" + Program.save + ".save", FileMode.Truncate);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine("levelMap=" + GameState.MaxLevel);
            sw.WriteLine("nombrePerso=" + GameState.Player);

            foreach (Personnage perso in p)
            {
                sw.WriteLine("perso=" + perso.G_Nom());
                sw.WriteLine("classe=" + perso.G_Class());
                sw.WriteLine("xp=" + perso.G_Xp().ToString());
            }

            sw.Close();
            fs.Close();
        }
Example #24
0
        private static bool GameOver(Personnage[] perso, ContentManager Content)
        {
            bool continuer = false;
            foreach (Personnage p in perso)
            {
                if (p.G_IsAlive())
                {
                    continuer = true;
                }
            }

            return continuer;
        }
Example #25
0
        public static bool Update(Monster[] monster, Personnage[] perso, PNJ[] pnj, GraphicsDeviceManager graphics, GameTime gameTime, ContentManager Content)
        {
            if (pause)
            {
                UpdatePause(Content);
            }
            else
            {
                newState = Keyboard.GetState();
                Monster.Update(monster, gameTime, perso, Content);
                Personnage.Update(perso, gameTime, monster, graphics, Content);
                PNJ.Update(pnj, perso, gameTime, graphics, Content);
                Monster.Resu(monster);
                if (!Map.Update(gameTime, perso, Content))
                    return false;

                pause = (newState.IsKeyDown(Keys.Escape) && !oldState.IsKeyDown(Keys.Escape));
                oldState = newState;
            }
            return GameOver(perso, Content);
        }
Example #26
0
        private void F_Cheat(GameTime gameTime, Personnage[] perso)
        {
            newState = Keyboard.GetState();

            if (newState.IsKeyDown(Keys.C))
            {
                S_Xp(xpMax/10, gameTime);
            }
        }
Example #27
0
 private void F_Update(Personnage[] perso, GameTime gameTime)
 {
     S_Deplacement(gameTime);
     F_Parler(perso);
 }
Example #28
0
        private Personnage F_DetectAllies(Personnage p)
        {
            Personnage p_ = null;

            if (p.G_Rectangle().Intersects(new Rectangle((int)position.X - 50, (int)position.Y - 50, 100 + (int)objet.Width, 100 + (int)objet.Height)))
                p_ = p;

            return p_;
        }
Example #29
0
 public void S_Xp(int xp_, GameTime gameTime, Personnage[] perso)
 {
     this.xp = xp_;
     foreach (Personnage p in perso)
     {
         p.S_Xp(xp_ / 4, gameTime);
     }
     while (this.xp >= xpMax)
     {
         S_Stats();
         this.xp = this.xp - xpMax;
         level++;
         xpMax = 100 * level;
         life = lifeMax;
         power = powerMax;
     }
 }
Example #30
0
 private void F_Healing(Personnage[] perso, GameTime gameTime)
 {
     tempsActuel = (float)gameTime.TotalGameTime.TotalSeconds;
     if (tempsActuel > tempsAttaque[1] + 0.5)
     {
         if (newState.IsKeyDown(key[5]) && power >= 500)
         {
             power -= 500;
             foreach (Personnage p in perso)
             {
                 p.S_Life((int)(20 * mana));
             }
             tempsAttaque[1] = tempsActuel;
         }
     }
     else if (tempsActuel > tempsAttaque[1] + 0.45)
     {
         healState = 0;
     }
     else if (tempsActuel > tempsAttaque[1] + 0.35)
     {
         healState = 8;
     }
     else if (tempsActuel > tempsAttaque[1] + 0.3)
     {
         healState = 7;
     }
     else if (tempsActuel > tempsAttaque[1] + 0.25)
     {
         healState = 6;
     }
     else if (tempsActuel > tempsAttaque[1] + 0.2)
     {
         healState = 5;
     }
     else if (tempsActuel > tempsAttaque[1] + 0.15)
     {
         healState = 4;
     }
     else if (tempsActuel > tempsAttaque[1] + 0.1)
     {
         healState = 3;
     }
     else if (tempsActuel > tempsAttaque[1] + 0.05)
     {
         healState = 2;
     }
     else if (tempsActuel > tempsAttaque[1])
     {
         healState = 1;
     }
 }