Exemplo n.º 1
0
        public void WriteTo(GameStream writer, Player player, byte deltas = 0)
        {
            byte metaFlags = 0;

            if (!IsVisibleTo(player))
            {
                metaFlags = metaFlags |= (byte)TileMetaFlags.IS_UNEXPLORED;
                writer.Write(metaFlags);
                return;
            }

            if (Units.Count > 0)
            {
                metaFlags = metaFlags |= (byte)TileMetaFlags.HAS_UNITS;
            }
            if (ResourceData != 0)
            {
                metaFlags = metaFlags |= (byte)TileMetaFlags.HAS_RESOURCE;
            }
            if (Building != 0)
            {
                metaFlags = metaFlags |= (byte)TileMetaFlags.HAS_BUILDING;
            }
            if (Owner != 0)
            {
                metaFlags = metaFlags |= (byte)TileMetaFlags.IS_OWNED;
            }

            writer.Write(metaFlags);
            writer.Write(TerrainData);

            if (HasMetaFlag(metaFlags, TileMetaFlags.HAS_RESOURCE))
            {
                writer.Write(ResourceData);
            }

            if (HasMetaFlag(metaFlags, TileMetaFlags.HAS_BUILDING))
            {
                writer.Write(Building);
            }

            if (HasMetaFlag(metaFlags, TileMetaFlags.IS_OWNED))
            {
                writer.Write(Owner);
            }

            if (HasMetaFlag(metaFlags, TileMetaFlags.HAS_UNITS))
            {
                writer.WriteByte((byte)Units.Count);
                foreach (var unit in Units)
                {
                    unit.WriteTo(writer, player);
                }
            }
        }
Exemplo n.º 2
0
 public void WriteTo(GameStream writer, Player player, byte deltas = 0)
 {
     writer.Write(x);
     writer.Write(y);
     writer.WriteByte(Sprite);
     writer.Write(id);
     writer.Write(this.Controller.MapData.InternalPlayerId);
     if (this.Controller == player)
     {
         writer.WriteString(this.Name);
     }
 }