private void CompressedTileBody(byte flags, TileData tile)
        {
            Byte (flags);

            var type   = tile.Type;
            var wall   = tile.Wall;
            var liquid = tile.Liquid;

            if (tile.Active)
            {
                if ((flags & 32) != 0)
                {
                    Byte (type);
                }

                if ((flags & 64) != 0)
                {
                    Short (tile.FrameX);
                    Short (tile.FrameY);
                }
            }

            if ((flags & 4) != 0)
            {
                Byte (wall);
            }

            if ((flags & 8) != 0)
            {
                Byte (liquid);
            }
        }
 public void SetData(TileData value)
 {
     //if (Netplay.anyClients && value.type == 53 && Main.tile.data [x, y].type != 53) Logging.ProgramLog.Debug.Log (System.Environment.StackTrace);
     Main.tile.data[x, y] = value;
 }
        //#if TEST_COMPRESSION
        private int TileSize(TileData tile)
        {
            int count = 1;

            var active = tile.Active;
            var wall   = tile.Wall;
            var liquid = tile.Liquid;

            if (active)
            {
                var type = tile.Type;

                count += 1;

                if (Main.tileFrameImportant [type])
                {
                    count += 4;
                }
            }

            if (wall > 0)
            {
                count += 1;
            }

            if (liquid > 0)
            {
                count += 2;
            }

            return count;
        }
        public void SingleTileSquare(int X, int Y, TileData tile)
        {
            Begin (Packet.TILE_SQUARE);

            Short (1);
            Int (X);
            Int (Y);

            Tile (tile);

            End ();
        }
        private void Tile(TileData tile)
        {
            byte flags = 0;

            var active = tile.Active;
            var wall   = tile.Wall;
            var liquid = tile.Liquid;

            if (active)          flags += 1;
            //if (tile.Lighted)    flags += 2; //UNUSED
            if (wall > 0)        flags += 4;
            if (liquid > 0)      flags += 8;
            if (tile.Wire)       flags += 16;

            Byte (flags);

            if (active)
            {
                var type = tile.Type;

                Byte (type);

                if (Main.tileFrameImportant [type])
                {
                    Short (tile.FrameX);
                    Short (tile.FrameY);
                }
            }

            if (wall > 0)
            {
                Byte (wall);
            }

            if (liquid > 0)
            {
                Byte (liquid);
                Byte (tile.Lava);
            }
        }
        private byte CompressedTileFlags(TileData tile, TileData last)
        {
            byte flags = 0;

            var active = tile.Active;
            var type   = tile.Type;

            if (active != last.Active)        flags |= 1;
            if (tile.Lighted != last.Lighted) flags |= 2;
            if (tile.Wall != last.Wall)       flags |= 4;
            if (tile.Liquid != last.Liquid)   flags |= 8;
            if (tile.Lava != last.Lava)       flags |= 16;
            if (active)
            {
                if (last.Type != type || (flags & 1) != 0) flags |= 32;

                if (Main.tileFrameImportant [type] && (last.FrameX != tile.FrameX || last.FrameY != tile.FrameY || (flags & 1) != 0))
                {
                    flags |= 64;
                }
            }

            return flags;
        }
 /// <summary>
 /// Tries to find if a tile is within the region.
 /// </summary>
 /// <param name="tile>Tile to find in the region.</param>
 /// <returns>True on find</returns>
 public Boolean HasTile(TileData tile)
 {
     foreach (TileRef tileRef in GetTiles)
     {
         if (tileRef.Data.Equals(tile))
             return true;
     }
     return false;
 }
 public void SetData(TileData value)
 {
     Main.tile.data [x, y] = value;
 }
Example #9
0
 public void SetData(TileData value)
 {
     //if (Netplay.anyClients && value.type == 53 && Main.tile.data [x, y].type != 53) Logging.ProgramLog.Debug.Log (System.Environment.StackTrace);
     Main.tile.data [x, y] = value;
 }