Exemplo n.º 1
0
 // Passage au prochain personnage
 public void NextCharacter(MoveTilesSprite moveTileSprite, FightTilesSprite fightTilesSprite, CrossedSwordsButton crossedSwordsButton,
                           bool crossedSwordsButtonClicked)
 {
     crossedSwordsButton.ResetList();
     crossedSwordsButton.CharactersTargetable(false);
     if (Game1.Characters[Game1.Count].FacingRight)
     {
         Game1.Characters[Game1.Count].AnimationIdleRightSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                       (Game1.Characters[Game1.Count].AnimationIdleRightSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                       Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
         Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationIdleRightSprite;
     }
     else
     {
         Game1.Characters[Game1.Count].AnimationIdleLeftSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                      (Game1.Characters[Game1.Count].AnimationIdleLeftSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                      Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
         Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationIdleLeftSprite;
     }
     Game1.Count++;
     if (Game1.Count == Game1.Characters.Count)
     {
         Game1.Count = 0;
     }
     Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].CharacterSelectedSprite(Game1.Characters,
                                                                                                           Game1.Count);
     Game1.CharacterHasMoved   = false;
     Game1.CharacterHasStriked = false;
     if (crossedSwordsButtonClicked)
     {
         crossedSwordsButton.CharactersTargetable(true);
     }
     moveTileSprite.ResetMap();
     fightTilesSprite.ResetMap();
 }
Exemplo n.º 2
0
 // Fin de mouvement du personnage
 public void MoveEnds(MoveTilesSprite moveTileSprite, FightTilesSprite fightTilesSprite)
 {
     if (((int)Game1.AnimationTemp.Direction.X == (int)Game1.AnimationTemp.Position.X) &&
         ((int)Game1.AnimationTemp.Direction.Y == (int)Game1.AnimationTemp.Position.Y) && Game1.RightMove)
     {
         Game1.Characters[Game1.Count].AnimationIdleSelectedRightSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                               (Game1.Characters[Game1.Count].AnimationIdleSelectedRightSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                               Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
         Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationIdleSelectedRightSprite;
         Game1.AnimationTemp.Position = new Vector2(-10, -10);
         moveTileSprite.ResetMap();
         fightTilesSprite.ResetMap();
         Game1.Characters[Game1.Count].FacingRight = true;
         Game1.Moving = false;
     }
     else if (((int)Game1.AnimationTemp.Direction.X == (int)Game1.AnimationTemp.Position.X) &&
              ((int)Game1.AnimationTemp.Direction.Y == (int)Game1.AnimationTemp.Position.Y) && !Game1.RightMove)
     {
         Game1.Characters[Game1.Count].AnimationIdleSelectedLeftSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                              (Game1.Characters[Game1.Count].AnimationIdleSelectedLeftSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                              Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
         Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationIdleSelectedLeftSprite;
         Game1.AnimationTemp.Position = new Vector2(-10, -10);
         moveTileSprite.ResetMap();
         fightTilesSprite.ResetMap();
         Game1.Characters[Game1.Count].FacingRight = false;
         Game1.Moving = false;
     }
 }
        // Clic sur un personnage ciblable
        public void ClicOnTargetableCharacter(int mouseX, int mouseY, FightTilesSprite fightTileSprite, GraphicsDeviceManager graphics)
        {
            var topBottomScreen       = (graphics.PreferredBackBufferHeight - BattlefieldBackgroundSprite.BlockHeight * 12 - 20) / 2;
            var tempPosXTileCharCount = ((int)Game1.Characters[Game1.Count].AnimationSprite.Position.X + Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X / 2) /
                                        BattlefieldBackgroundSprite.BlockWidth;
            var tempPosYTileCharCount = ((int)Game1.Characters[Game1.Count].AnimationSprite.Position.Y - topBottomScreen +
                                         Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.Y) / BattlefieldBackgroundSprite.BlockHeight;
            var tempPosXTileCharStrikable = ((int)Game1.Characters[_characterStrikableIndex].AnimationSprite.Position.X + Game1.Characters[_characterStrikableIndex].AnimationSprite.Definition.FrameSize.X / 2) /
                                            BattlefieldBackgroundSprite.BlockWidth;
            var tempPosYTileCharStrikable = ((int)Game1.Characters[_characterStrikableIndex].AnimationSprite.Position.Y - topBottomScreen +
                                             Game1.Characters[_characterStrikableIndex].AnimationSprite.Definition.FrameSize.Y) / BattlefieldBackgroundSprite.BlockHeight;

            if (fightTileSprite.FtMap[tempPosYTileCharStrikable, tempPosXTileCharStrikable] == 2)
            {
                if (mouseX > Game1.Characters[_characterStrikableIndex].AnimationSprite.Position.X + Game1.Characters[_characterStrikableIndex].AnimationSprite.Definition.FrameSize.X / 2
                    - BattlefieldBackgroundSprite.BlockWidth / 2 && mouseX <Game1.Characters[_characterStrikableIndex].AnimationSprite.Position.X +
                                                                            Game1.Characters[_characterStrikableIndex].AnimationSprite.Definition.FrameSize.X / 2 + BattlefieldBackgroundSprite.BlockWidth / 2 && mouseY>
                    tempPosYTileCharStrikable * BattlefieldBackgroundSprite.BlockHeight + BattlefieldBackgroundSprite.BlockHeight / 2 + topBottomScreen -
                    Game1.Characters[_characterStrikableIndex].AnimationSprite.Definition.FeetToHead && mouseY < tempPosYTileCharStrikable * BattlefieldBackgroundSprite.BlockHeight +
                    BattlefieldBackgroundSprite.BlockHeight / 2 + topBottomScreen)
                {
                    Game1.CharacterHasStriked = true;

                    // Ennemi à gauche
                    if (tempPosXTileCharCount > tempPosXTileCharStrikable)
                    {
                        // Ennemi au dessus
                        if (tempPosYTileCharCount > tempPosYTileCharStrikable)
                        {
                            Game1.Characters[Game1.Count].AnimationStrikeUpLeftSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                             (Game1.Characters[Game1.Count].AnimationStrikeUpLeftSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                             Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                            Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeUpLeftSprite;
                        }
                        // Ennemi en dessous
                        else if (tempPosYTileCharCount < tempPosYTileCharStrikable)
                        {
                            Game1.Characters[Game1.Count].AnimationStrikeDownLeftSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                               (Game1.Characters[Game1.Count].AnimationStrikeDownLeftSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                               Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                            Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeDownLeftSprite;
                        }
                        // Ennemi sur la même position en Y
                        else if (tempPosYTileCharCount == tempPosYTileCharStrikable)
                        {
                            Game1.Characters[Game1.Count].AnimationStrikeFrontLeftSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                                (Game1.Characters[Game1.Count].AnimationStrikeFrontLeftSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                                Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                            Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeFrontLeftSprite;
                        }
                        Game1.Characters[Game1.Count].FacingRight = false;
                    }
                    // Ennemi à droite
                    else if (tempPosXTileCharCount < tempPosXTileCharStrikable)
                    {
                        // Ennemi au dessus
                        if (tempPosYTileCharCount > tempPosYTileCharStrikable)
                        {
                            Game1.Characters[Game1.Count].AnimationStrikeUpRightSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                              (Game1.Characters[Game1.Count].AnimationStrikeUpRightSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                              Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                            Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeUpRightSprite;
                        }
                        // Ennemi en dessous
                        else if (tempPosYTileCharCount < tempPosYTileCharStrikable)
                        {
                            Game1.Characters[Game1.Count].AnimationStrikeDownRightSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                                (Game1.Characters[Game1.Count].AnimationStrikeDownRightSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                                Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                            Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeDownRightSprite;
                        }
                        // Ennemi sur la même position en Y
                        else if (tempPosYTileCharCount == tempPosYTileCharStrikable)
                        {
                            Game1.Characters[Game1.Count].AnimationStrikeFrontRightSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                                 (Game1.Characters[Game1.Count].AnimationStrikeFrontRightSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                                 Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                            Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeFrontRightSprite;
                        }
                        Game1.Characters[Game1.Count].FacingRight = true;
                    }
                    // Ennemi sur la même position en X
                    else if (tempPosXTileCharCount == tempPosXTileCharStrikable)
                    {
                        // Ennemi au dessus
                        if (tempPosYTileCharCount > tempPosYTileCharStrikable)
                        {
                            if (Game1.Characters[_characterStrikableIndex].FacingRight == false)
                            {
                                Game1.Characters[Game1.Count].AnimationStrikeUpRightSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                                  (Game1.Characters[Game1.Count].AnimationStrikeUpRightSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                                  Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                                Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeUpRightSprite;
                            }
                            else
                            {
                                Game1.Characters[Game1.Count].AnimationStrikeUpLeftSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                                 (Game1.Characters[Game1.Count].AnimationStrikeUpLeftSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                                 Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                                Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeUpLeftSprite;
                            }
                        }
                        // Ennemi en dessous
                        else if (tempPosYTileCharCount < tempPosYTileCharStrikable)
                        {
                            if (Game1.Characters[_characterStrikableIndex].FacingRight == false)
                            {
                                Game1.Characters[Game1.Count].AnimationStrikeDownRightSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                                    (Game1.Characters[Game1.Count].AnimationStrikeDownRightSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                                    Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                                Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeDownRightSprite;
                            }
                            else
                            {
                                Game1.Characters[Game1.Count].AnimationStrikeDownLeftSprite.Position = new Vector2(Game1.Characters[Game1.Count].AnimationSprite.Position.X -
                                                                                                                   (Game1.Characters[Game1.Count].AnimationStrikeDownLeftSprite.Definition.FrameSize.X - Game1.Characters[Game1.Count].AnimationSprite.Definition.FrameSize.X) / 2,
                                                                                                                   Game1.Characters[Game1.Count].AnimationSprite.Position.Y);
                                Game1.Characters[Game1.Count].AnimationSprite = Game1.Characters[Game1.Count].AnimationStrikeDownLeftSprite;
                            }
                        }
                        if (Game1.Characters[_characterStrikableIndex].FacingRight == true)
                        {
                            Game1.Characters[Game1.Count].FacingRight = false;
                        }
                        else
                        {
                            Game1.Characters[Game1.Count].FacingRight = true;
                        }
                    }
                }
            }
        }
        // Surligne en rouge les ennemis survolés par la souris et étant attaquables
        public void MouseOverTargetableCharacters(int mouseX, int mouseY, FightTilesSprite fightTileSprite, GraphicsDeviceManager graphics, bool hasStriked)
        {
            var found           = false;
            var topBottomScreen = (graphics.PreferredBackBufferHeight - BattlefieldBackgroundSprite.BlockHeight * 12 - 20) / 2;
            // Trie les personnages dans l'ordre décroissant de leur position en Y
            var orderedList = OrderCharactersDescending(_tempCharacters);

            foreach (var t in orderedList)
            {
                var posYTile = ((int)(Game1.Characters[t].AnimationSprite.Position.Y + Game1.Characters[t].AnimationSprite.Definition.FrameSize.Y) -
                                topBottomScreen) / BattlefieldBackgroundSprite.BlockHeight;
                if (!hasStriked &&
                    mouseX >
                    Game1.Characters[t].AnimationSprite.Position.X +
                    Game1.Characters[t].AnimationSprite.Definition.FrameSize.X / 2
                    - BattlefieldBackgroundSprite.BlockWidth / 2 &&
                    mouseX <Game1.Characters[t].AnimationSprite.Position.X +
                            Game1.Characters[t].AnimationSprite.Definition.FrameSize.X / 2 +
                            BattlefieldBackgroundSprite.BlockWidth / 2 && mouseY>
                    posYTile * BattlefieldBackgroundSprite.BlockHeight + BattlefieldBackgroundSprite.BlockHeight / 2 +
                    topBottomScreen -
                    Game1.Characters[t].AnimationSprite.Definition.FeetToHead &&
                    mouseY < posYTile * BattlefieldBackgroundSprite.BlockHeight +
                    BattlefieldBackgroundSprite.BlockHeight / 2 + topBottomScreen)
                {
                    if (!found)
                    {
                        // Remet tous les autres personnages en mode non-mouseOver quand on sélectionne un nouveau personnage
                        foreach (var c in orderedList)
                        {
                            if (Game1.Characters[c].TargetableMouseOver)
                            {
                                if (Game1.Characters[c].FacingRight)
                                {
                                    Game1.Characters[c].AnimationIdleTargetableRightSprite.Position =
                                        new Vector2(Game1.Characters[c].AnimationSprite.Position.X -
                                                    (Game1.Characters[c].AnimationIdleTargetableRightSprite.Definition
                                                     .FrameSize.X -
                                                     Game1.Characters[c].AnimationSprite.Definition.FrameSize.X) / 2,
                                                    Game1.Characters[c].AnimationSprite.Position.Y);
                                    Game1.Characters[c].AnimationSprite =
                                        Game1.Characters[c].AnimationIdleTargetableRightSprite;
                                }
                                else
                                {
                                    Game1.Characters[c].AnimationIdleTargetableLeftSprite.Position =
                                        new Vector2(Game1.Characters[c].AnimationSprite.Position.X -
                                                    (Game1.Characters[c].AnimationIdleTargetableLeftSprite.Definition
                                                     .FrameSize.X -
                                                     Game1.Characters[c].AnimationSprite.Definition.FrameSize.X) / 2,
                                                    Game1.Characters[c].AnimationSprite.Position.Y);
                                    Game1.Characters[c].AnimationSprite =
                                        Game1.Characters[c].AnimationIdleTargetableLeftSprite;
                                }
                                Game1.Characters[c].TargetableMouseOver = false;
                            }
                        }
                        found = true;
                        var tempPosXTile = ((int)Game1.Characters[t].AnimationSprite.Position.X +
                                            Game1.Characters[t].AnimationSprite.Definition.FrameSize.X / 2) /
                                           BattlefieldBackgroundSprite.BlockWidth;
                        var tempPosYTile = ((int)Game1.Characters[t].AnimationSprite.Position.Y - topBottomScreen +
                                            Game1.Characters[t].AnimationSprite.Definition.FrameSize.Y) /
                                           BattlefieldBackgroundSprite.BlockHeight;
                        if (fightTileSprite.FtMap[tempPosYTile, tempPosXTile] == 2)
                        {
                            // Change le curseur lors du survol
                            Game1.CursorTexture = _content.Load <Texture2D>("BattleCursorMouseOverTargetableCharacter");
                            // Bascule le personnage survolé en mode mouseOver
                            _characterStrikableIndex = t;
                            if (Game1.Characters[t].FacingRight)
                            {
                                Game1.Characters[t].AnimationIdleTargetableMouseOverRightSprite.Position =
                                    new Vector2(Game1.Characters[t].AnimationSprite.Position.X -
                                                (Game1.Characters[t].AnimationIdleTargetableMouseOverRightSprite
                                                 .Definition.FrameSize.X -
                                                 Game1.Characters[t].AnimationSprite.Definition.FrameSize.X) / 2,
                                                Game1.Characters[t].AnimationSprite.Position.Y);
                                Game1.Characters[t].AnimationSprite =
                                    Game1.Characters[t].AnimationIdleTargetableMouseOverRightSprite;
                            }
                            else
                            {
                                Game1.Characters[t].AnimationIdleTargetableMouseOverLeftSprite.Position =
                                    new Vector2(Game1.Characters[t].AnimationSprite.Position.X -
                                                (Game1.Characters[t].AnimationIdleTargetableMouseOverLeftSprite
                                                 .Definition.FrameSize.X -
                                                 Game1.Characters[t].AnimationSprite.Definition.FrameSize.X) / 2,
                                                Game1.Characters[t].AnimationSprite.Position.Y);
                                Game1.Characters[t].AnimationSprite =
                                    Game1.Characters[t].AnimationIdleTargetableMouseOverLeftSprite;
                            }
                            Game1.Characters[t].TargetableMouseOver = true;
                        }
                    }
                }
                // Remet les autres personnages en mode non-mouseOver quand on sort des zones de sélection
                else
                {
                    if (Game1.Characters[t].FacingRight)
                    {
                        Game1.Characters[t].AnimationIdleTargetableRightSprite.Position =
                            new Vector2(Game1.Characters[t].AnimationSprite.Position.X -
                                        (Game1.Characters[t].AnimationIdleTargetableRightSprite.Definition.FrameSize.X -
                                         Game1.Characters[t].AnimationSprite.Definition.FrameSize.X) / 2,
                                        Game1.Characters[t].AnimationSprite.Position.Y);
                        Game1.Characters[t].AnimationSprite = Game1.Characters[t].AnimationIdleTargetableRightSprite;
                    }
                    else
                    {
                        Game1.Characters[t].AnimationIdleTargetableLeftSprite.Position =
                            new Vector2(Game1.Characters[t].AnimationSprite.Position.X -
                                        (Game1.Characters[t].AnimationIdleTargetableLeftSprite.Definition.FrameSize.X -
                                         Game1.Characters[t].AnimationSprite.Definition.FrameSize.X) / 2,
                                        Game1.Characters[t].AnimationSprite.Position.Y);
                        Game1.Characters[t].AnimationSprite = Game1.Characters[t].AnimationIdleTargetableLeftSprite;
                    }
                    Game1.Characters[t].TargetableMouseOver = false;
                    Game1.CursorTexture = _content.Load <Texture2D>("BattleCursor");
                }
            }
        }