/// <summary> /// Retourne le contenu de la texture d'une créature extraite de la planche /// </summary> /// <param name="output">tableau de sortie</param> /// <param name="typeCreature">type de la créature</param> public Color[] getTextureData(int typeCreature) { CreatureDescription desc = _description[typeCreature]; Color[] output = new Color[Creatures.CREATURE_SIZE * Creatures.CREATURE_SIZE]; texPlancheCreatures.GetData <Color>(0, new Rectangle(desc.positionPlanche.X * (CREATURE_SIZE + 1), desc.positionPlanche.Y * (CREATURE_SIZE + 1), CREATURE_SIZE, CREATURE_SIZE), output, 0, CREATURE_SIZE * CREATURE_SIZE); return(output); }
/// <summary> /// Affiche une créature à l'endroit désiré /// Appelé au sein d'un spriteBatch begin/end /// </summary> /// <param name="spriteBatch">spriteBatch du jeu</param> /// <param name="GraphicsDevice">gd du jeu</param> /// <param name="gameTime">temps du jeu</param> /// <param name="x">x coin haut gauche (coordonnées de type offet de terrain)</param> /// <param name="y">y coin haut gauche (coordonnées de type offet de terrain)</param> /// <param name="z">z </param> /// <param name="typeCreature">type de créature à afficher</param> /// public void draw(SpriteBatch spriteBatch, GraphicsDevice GraphicsDevice, GameTime gameTime, int x, int y, float z, int typeCreature) { CreatureDescription desc = _description[typeCreature]; int drawX = x - _jeu.terrain.offsetCarte.X; int drawY = y - _jeu.terrain.offsetCarte.Y; spriteBatch.Draw(texPlancheCreatures, new Rectangle(drawX, drawY, CREATURE_SIZE, CREATURE_SIZE), new Rectangle(desc.positionPlanche.X * (CREATURE_SIZE + 1), desc.positionPlanche.Y * (CREATURE_SIZE + 1), CREATURE_SIZE, CREATURE_SIZE), Color.White, 0, Vector2.Zero, SpriteEffects.None, z); }
// TODO : expérience, bonuses... // Créateur ----------------------------------------------------------- /// <summary> /// Crée une créature /// </summary> /// <param name="leJeu">jeu</param> /// <param name="typeCreature">type de créature</param> /// <param name="faction">n° de faction</param> /// <param name="position">position dans la carte (position de carte)</param> public Creature(Jeu leJeu, int typeCreature, int faction, Point position) { _jeu = leJeu; _typeCreature = typeCreature; _faction = faction; _positionEcran.X = position.X * _jeu.blockSize; _positionEcran.Y = position.Y * _jeu.blockSize; _positionCarte = position; _items = new List <ItemDescription>(); // cache la description _desc = _jeu.creatures.description[typeCreature]; _vraiNom = _desc.nom; _vraicout = _desc.cout; _vraieforce = _desc.force; _vraimouvement = _desc.mouvement; _vrainage = _desc.nage; _vraivol = _desc.vol; reinitTour(); }
/// <summary> /// Constructeur avec fichier CSV /// </summary> /// <param name="leJeu">jeu</param> /// <param name="nomFichierRessource">nom du fichier sans SeigneurDeGuerre.rsc.</param> public Creatures(Jeu leJeu, string nomFichierRessource) : this(leJeu) { // Format du fichier : // Index;NomCreature;PositionPlancheX;PositionPlancheY;Force;Mouvement;Cout;Heros?;Vol?;Nage?;BonusAttaque:AUCUN/VILLE/EXTERIEUR;BonusDefense;BonusMouvement:AUCUN/FORET/COLLINES/MARAIS/HERBE/EAU // (header présent dans le fichier) _description = new List <CreatureDescription>(); CSVReader csv = new CSVReader(nomFichierRessource, ";"); // header if (!csv.readLine()) { throw new SdGException("Le fichier des créatures est vide"); } ; try { while (csv.readLine()) { CreatureDescription crea = new CreatureDescription(csv.getField(1), new Point(Int32.Parse(csv.getField(2)), Int32.Parse(csv.getField(3))), Int32.Parse(csv.getField(0))); crea.force = Int32.Parse(csv.getField(4)); crea.mouvement = Int32.Parse(csv.getField(5)); crea.cout = Int32.Parse(csv.getField(6)); crea.heros = csv.getField(7).StartsWith("O", StringComparison.InvariantCultureIgnoreCase); crea.vol = csv.getField(8).StartsWith("O", StringComparison.InvariantCultureIgnoreCase); crea.nage = csv.getField(9).StartsWith("O", StringComparison.InvariantCultureIgnoreCase); crea.bonusAttaque = (CreatureDescription.BonusUrbain)Enum.Parse(typeof(CreatureDescription.BonusUrbain), csv.getField(10), true); crea.bonusDefense = (CreatureDescription.BonusUrbain)Enum.Parse(typeof(CreatureDescription.BonusUrbain), csv.getField(11), true); crea.bonusMouvement = (CreatureDescription.BonusEnvironnement)Enum.Parse(typeof(CreatureDescription.BonusEnvironnement), csv.getField(12), true); // Attention : si l'indexe ne suit pas l'ordre du fichier, pb... _description.Add(crea); } } finally { csv.dispose(); } }