/// <summary>
 /// Génère le code réseau pour faire patrouiller une unité
 /// </summary>
 /// <param name="u">l'unité</param>
 /// <param name="p">la position à la quel patrouiller</param>
 /// <returns>bytes a envoyer sur le réseau</returns>
 public Byte[] Unit_patrol(Drawable u, Point p)
 {
     Byte[] bytes = new Byte[12];//2+2+4+4
     int i = 0;
     setType(ref bytes, ref i, Protocol.UNIT_PATROL);
     addInt16(ref bytes, ref i, u.getId());
     addInt32(ref bytes, ref i, (uint)p.X);
     addInt32(ref bytes, ref i, (uint)p.Y);
     return (bytes);
 }
        /// <summary>
        /// Sélection d'une unité
        /// </summary>
        /// <param name="x">Abscisse</param>
        /// <param name="y">Ordonnée</param>
        public void selectEntity(int x, int y)
        {
            Point p = PointConverter.ToServerPoint(new Point(
                (x - (int)Math.Floor(this._pool.getMap().Position.X)),
                (y - (int)Math.Floor(this._pool.getMap().Position.Y))
            ));
            foreach (Drawable d in this._pool.getEntities())
            {
                if (d.Contains(p))
                {
                    this._currentSel = d;
                    return;
                }
            }

            if (this._currentSel != null)
            {
                if (Entities.mutate(this._currentSel.Name, x, y))
                {
                    UdpAdapter udpa = new UdpAdapter();
                    Protocol_handler ph = new Protocol_handler();
                    udpa.send(ph.Unit_mutation(this._currentSel, "zergling"));
                    return;
                }
            }
            this._currentSel = null;
        }
 /// <summary>
 /// Génère le code réseau pour une interruption d'unité
 /// </summary>
 /// <param name="u">l'unité à interrompre</param>
 /// <returns>bytes a envoyer sur le réseau</returns>
 public Byte[] Unit_interrupt(Drawable u)
 {
     Byte[] bytes = new Byte[4];//2+2
     int i = 0;
     setType(ref bytes, ref i, Protocol.UNIT_INTERRUPT);
     addInt16(ref bytes, ref i, u.getId());
     return (bytes);
 }
        /// <summary>
        /// Génère le code réseau pour demander une mutation d'une unité
        /// </summary>
        /// <param name="u">l'unité à muter</param>
        /// <param name="type">le type vers lequel l'unité doit muter</param>
        /// <returns>bytes a envoyer sur le réseau</returns>
        public Byte[] Unit_mutation(Drawable u, string type)
        {
            Byte[] btype = Encoding.ASCII.GetBytes(type);

            Byte[] bytes = new Byte[5 + btype.Length];
            int i = 0;
            setType(ref bytes, ref i, Protocol.UNIT_MUTATION);
            addInt16(ref bytes, ref i, u.getId());
            bytes[4] = (byte)btype.Length;
            System.Buffer.BlockCopy(btype, 0, bytes, 5, btype.Length);
            return (bytes);
        }
 /// <summary>
 /// Génère le code réseau pour demander à une unité de récolter une ressource
 /// </summary>
 /// <param name="u">l'unité cible</param>
 /// <param name="res">la ressource a récolter</param>
 /// <returns>bytes a envoyer sur le réseau</returns>
 public Byte[] Unit_collect(Drawable u, Drawable res)
 {
     Byte[] bytes = new Byte[6];//2+2+2
     int i = 0;
     setType(ref bytes, ref i, Protocol.UNIT_COLLECT);
     addInt16(ref bytes, ref i, u.getId());
     addInt16(ref bytes, ref i, res.getId());
     return (bytes);
 }
 /// <summary>
 /// Génère le code réseau pour arreter le déplacement d'une unité
 /// </summary>
 /// <param name="u">l'unité</param>
 /// <returns>bytes a envoyer sur le réseau</returns>
 public Byte[] Unit_holdPosition(Drawable u)
 {
     Byte[] bytes = new Byte[4];//2+2
     int i = 0;
     setType(ref bytes, ref i, Protocol.UNIT_HOLDPOSITION);
     addInt16(ref bytes, ref i, u.getId());
     return (bytes);
 }
 /// <summary>
 /// Transforme une entité
 /// </summary>
 /// <param name="entity"></param>
 public void transformEntity(Drawable entity)
 {
     Drawable transformable = find(entity);
     _entities.Remove(transformable);
     _entities.Add(entity);
 }
 /// <summary>
 /// Génère le code réseau pour une attaque d'une unité
 /// </summary>
 /// <param name="u">l'unité attaquante</param>
 /// <param name="target">l'unité attaqué</param>
 /// <returns>bytes a envoyer sur le réseau</returns>
 public Byte[] Unit_attack(Drawable u, Drawable target)
 {
     Byte[] bytes = new Byte[6];//2+2+2
     int i = 0;
     setType(ref bytes, ref i, Protocol.UNIT_ATTACK);
     addInt16(ref bytes, ref i, u.getId());
     addInt16(ref bytes, ref i, target.getId());
     return(bytes);
 }
 /// <summary>
 /// Trouve un objet dessinable
 /// </summary>
 /// <param name="searched">L'objet à rechercher</param>
 /// <returns>L'objet dessinable</returns>
 private Drawable find(Drawable searched)
 {
     foreach (Drawable entity in this._entities)
     {
         if (entity.getId() == searched.getId())
         {
             return entity;
         }
     }
     return (null);
 }
Esempio n. 10
0
 /// <summary>
 /// Transforme une entité
 /// </summary>
 /// <param name="entity">Le sprite de l'entité</param>
 public void transformEntity(Sprite entity)
 {
     Drawable entityD = new Drawable((content.Load<Texture2D>(entity.getPath())), entity.getPosition(), entity.ServerLoc, entity.getId());
     this.entities.transformEntity(entityD);
 }
Esempio n. 11
0
 public void scrollMap(Drawable map)
 {
     this.map = map;
 }
Esempio n. 12
0
 /// <summary>
 /// Charge une carte
 /// </summary>
 /// <param name="map">Le sprite de la carte</param>
 public void loadMap(Sprite map)
 {
     this.map = new Drawable(content.Load<Texture2D>(map.getPath()), map.getPosition(), null, map.getId());
 }
Esempio n. 13
0
 /// <summary>
 /// Charge l'HUD
 /// </summary>
 /// <param name="hud">Le sprite du HUD</param>
 public void loadHUD(Sprite hud)
 {
     this.hud = new Drawable(content.Load<Texture2D>(hud.getPath()), hud.getPosition(), null, hud.getId());
 }