// 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(); }
// 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"); } } }