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