/// <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); }
/// <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); }
public void scrollMap(Drawable map) { this.map = map; }
/// <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()); }
/// <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()); }