Exemplo n.º 1
0
 public void Clear(TileDataType types)
 {
     if ((types & TileDataType.Tile) != (TileDataType)0)
     {
         this.type = (ushort)0;
         this.active(false);
         this.frameX = (short)0;
         this.frameY = (short)0;
     }
     if ((types & TileDataType.Wall) != (TileDataType)0)
     {
         this.wall = (ushort)0;
         this.wallFrameX(0);
         this.wallFrameY(0);
     }
     if ((types & TileDataType.TilePaint) != (TileDataType)0)
     {
         this.color((byte)0);
     }
     if ((types & TileDataType.WallPaint) != (TileDataType)0)
     {
         this.wallColor((byte)0);
     }
     if ((types & TileDataType.Liquid) != (TileDataType)0)
     {
         this.liquid = (byte)0;
         this.liquidType(0);
         this.checkingLiquid(false);
     }
     if ((types & TileDataType.Slope) != (TileDataType)0)
     {
         this.slope((byte)0);
         this.halfBrick(false);
     }
     if ((types & TileDataType.Wiring) != (TileDataType)0)
     {
         this.wire(false);
         this.wire2(false);
         this.wire3(false);
         this.wire4(false);
     }
     if ((types & TileDataType.Actuator) == (TileDataType)0)
     {
         return;
     }
     this.actuator(false);
     this.inActive(false);
 }
Exemplo n.º 2
0
 public void Clear(TileDataType types)
 {
     if ((types & TileDataType.Tile) != 0)
     {
         type = 0;
         active(active: false);
         frameX = 0;
         frameY = 0;
     }
     if ((types & TileDataType.Wall) != 0)
     {
         wall = 0;
         wallFrameX(0);
         wallFrameY(0);
     }
     if ((types & TileDataType.TilePaint) != 0)
     {
         color(0);
     }
     if ((types & TileDataType.WallPaint) != 0)
     {
         wallColor(0);
     }
     if ((types & TileDataType.Liquid) != 0)
     {
         liquid = 0;
         liquidType(0);
         checkingLiquid(checkingLiquid: false);
     }
     if ((types & TileDataType.Slope) != 0)
     {
         slope(0);
         halfBrick(halfBrick: false);
     }
     if ((types & TileDataType.Wiring) != 0)
     {
         wire(wire: false);
         wire2(wire2: false);
         wire3(wire3: false);
         wire4(wire4: false);
     }
     if ((types & TileDataType.Actuator) != 0)
     {
         actuator(actuator: false);
         inActive(inActive: false);
     }
 }
Exemplo n.º 3
0
    public void SaveFileForTxt(List<MapToolTileInfo> tileList, string fileName)
    {
        BinaryFormatter bf = new BinaryFormatter();
        FileStream file = File.Create(Application.dataPath + "/Resources/SaveDatas/" + fileName + ".dat");

        TileDataType data = new TileDataType();
        data.width = GlobalGameData.Instance.width;
        data.height = GlobalGameData.Instance.height;

        data.ListMap = new List<int>();

        List<int> tmpList = new List<int>();
        foreach (MapToolTileInfo tile in tileList)
            tmpList.Add((int)tile.Type);

        data.ListMap = tmpList;

        bf.Serialize(file, data);
        file.Close();
    }
Exemplo n.º 4
0
        /// <summary>
        /// Updates a single tile's world state with a set of changes from the networked tile state
        /// </summary>
        /// <param name="tile">The tile to update</param>
        /// <param name="newTile">The NetTile containing the change</param>
        /// <param name="updateType">The type of data to merge into world state</param>
        public static void UpdateServerTileState(ITile tile, NetTile newTile, TileDataType updateType)
        {
            //This logic (updateType & TDT.Tile) != 0 is the way Terraria does it (see: Tile.cs/Clear(TileDataType))
            //& is not a typo - we're performing a binary AND test to see if a given flag is set.

            if ((updateType & TileDataType.Tile) != 0)
            {
                tile.active(newTile.Active);
                tile.type = newTile.Type;

                if (newTile.FrameImportant)
                {
                    tile.frameX = newTile.FrameX;
                    tile.frameY = newTile.FrameY;
                }
                else if (tile.type != newTile.Type || !tile.active())
                {
                    //This is vanilla logic - if the tile changed types (or wasn't active) the frame values might not be valid - so we reset them to -1.
                    tile.frameX = -1;
                    tile.frameY = -1;
                }
            }

            if ((updateType & TileDataType.Wall) != 0)
            {
                tile.wall = newTile.Wall;
            }

            if ((updateType & TileDataType.TilePaint) != 0)
            {
                tile.color(newTile.TileColor);
            }

            if ((updateType & TileDataType.WallPaint) != 0)
            {
                tile.wallColor(newTile.WallColor);
            }

            if ((updateType & TileDataType.Liquid) != 0)
            {
                tile.liquid = newTile.Liquid;
                tile.liquidType(newTile.LiquidType);
            }

            if ((updateType & TileDataType.Slope) != 0)
            {
                tile.halfBrick(newTile.IsHalf);
                tile.slope(newTile.Slope);
            }

            if ((updateType & TileDataType.Wiring) != 0)
            {
                tile.wire(newTile.Wire);
                tile.wire2(newTile.Wire2);
                tile.wire3(newTile.Wire3);
                tile.wire4(newTile.Wire4);
            }

            if ((updateType & TileDataType.Actuator) != 0)
            {
                tile.actuator(newTile.IsActuator);
                tile.inActive(newTile.Inactive);
            }
        }