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