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