public void Draw(SpriteBatch g) { //Argent g.Draw(Ressources.Argent, new Rectangle((int)Position.X - 340, (int)Position.Y - 220, Ressources.Argent.Width / 3, Ressources.Argent.Height / 3), Color.LightGreen); g.DrawString(Ressources.TexteItalic, Argent.ToString(), new Vector2(Position.X - 300, Position.Y - 220), Color.LightGreen); //Balle if (!PersoSpeciaux) { if (Arme == 0) { Chargeur.Draw(g); g.DrawString(Ressources.TexteItalic, Balle.ToString(), new Vector2(Position.X - 300, Position.Y - 190), Color.OrangeRed); } else if (Arme == 1) { Chargeur.Draw(g); g.DrawString(Ressources.TexteItalic, Fleche.ToString(), new Vector2(Position.X - 300, Position.Y - 190), Color.OrangeRed); } else if (Arme == 2) { Chargeur.Draw(g); g.DrawString(Ressources.TexteItalic, BalleShotgun.ToString(), new Vector2(Position.X - 300, Position.Y - 190), Color.OrangeRed); } else if (Arme == 4) { Chargeur.Draw(g); g.DrawString(Ressources.TexteItalic, Convert.ToInt32(Laser).ToString(), new Vector2(Position.X - 300, Position.Y - 190), Color.OrangeRed); } } }
//Méthode pour ajouter un chemin public void addChemin(Vector2 posInTab, Unit perso, World world) { bool inMove = false;//par défaut faux, si le curseur est dans la zone de déplacement ce sera true //parcourt la map pour savoir si le curseur est sur un obstacle en cas d'obstacle on sort de la fonction foreach (Map curr2 in world.getMap()) { if (curr2.ifPositionEgal(posInTab) == true) { if (curr2.ifPass() == false) { Console.WriteLine("interdit!"); return; } } } //parcourt la zone de déplacement dans le cas où il s'agit d'une case infranchissable en sort de la fonction foreach (Map curr2 in perso.getMove()) { if (curr2.ifPositionEgal(posInTab) == true) { inMove = true;//le curseur est dans la zone if (curr2.ifPass() == false) { Console.WriteLine("passe pas"); return; } } } if (_vide == true)//si le joueur commence à définir le trajet de son personnage { Console.WriteLine("_vide=true"); _posPerso.X = perso.getPosInTab().X; _posPerso.Y = perso.getPosInTab().Y; Fleche curr = new Fleche(); curr.setPosition(posInTab); if (inMove) //le curseur est dans la zone { _trajet = new List <Fleche>(); //on initialise une nouvelle liste Console.WriteLine("cursor.x:" + posInTab.X + "player.X:" + _posPerso.X); Console.WriteLine("cursor.y:" + posInTab.Y + "player.y:" + _posPerso.Y); if (posInTab.X > _posPerso.X)//droite { curr.setSource(6); } else if (posInTab.X < _posPerso.X)//gauche { curr.setSource(4); } else if (posInTab.Y > _posPerso.Y)//bas { curr.setSource(2); } else if (posInTab.Y < _posPerso.Y)//haut { curr.setSource(8); } else { Console.WriteLine("Wut"); return; } _trajet.Add(curr); //on ajoute la fleche à la liste _vide = false; //le trajet n'est plus vide _prec = posInTab; _taille++; //incremente la taille du trajet Console.WriteLine("Add"); } } else { Fleche curr = new Fleche(); curr.setPosition(posInTab); if (inMove) { if (posInTab.X > _prec.X)//droite { if (_trajet.Last().getSens() != 6) { //on modifie le bout de fleche précédent pour quel forme un virage _trajet.Last().setSource(_trajet.Last().getSens() * 10 + 6); } curr.setSource(6); } else if (posInTab.X < _prec.X)//gauche { if (_trajet.Last().getSens() != 4) { //on modifie le bout de fleche précédent pour quel forme un virage _trajet.Last().setSource(_trajet.Last().getSens() * 10 + 4); } curr.setSource(4); } else if (posInTab.Y > _prec.Y)//bas { if (_trajet.Last().getSens() != 2) { //on modifie le bout de fleche précédent pour quel forme un virage _trajet.Last().setSource(_trajet.Last().getSens() * 10 + 2); } curr.setSource(2); } else if (posInTab.Y < _prec.Y)//haut { if (_trajet.Last().getSens() != 8) { //on modifie le bout de fleche précédent pour quel forme un virage _trajet.Last().setSource(_trajet.Last().getSens() * 10 + 8); } curr.setSource(8); } else { Console.WriteLine("Wut"); return; } _trajet.Add(curr);//on ajoute le bout de fleche _prec = posInTab; _taille++; } } }