public void BinaryLoad() { using (FileStream stream = new FileStream(Path.Combine(Constants.TILEMAP_SAVE_FOLDER, name), FileMode.Open, FileAccess.Read)) using (BinaryReader reader = new BinaryReader(stream)) { int gridSizeY = reader.ReadInt32(); // Read: Num tiles Vertical int gridSizeX = reader.ReadInt32(); // Read: Num tiles Horizontal int tileCount = gridSizeY * gridSizeX; // Num tiles in total _gridSize = new Vector2DInt(gridSizeX, gridSizeY); // save gridsize if we need it later for (int i = 0; i < tileCount; i++) { Vector2DInt tilePosition = Vector2DInt.Zero; tilePosition.BinaryLoad(reader); // Read: Position string typeName = reader.ReadString(); // Read: Tile type name float yRot = reader.ReadSingle(); float tintStrength = reader.ReadSingle(); _tiles.Add(tilePosition, new Tile(tilePosition, typeName, yRot, tintStrength, _tilesFolder)); } AddEdgeTiles(gridSizeX, gridSizeY); } }
public void Show() { Clear(); if (File.Exists(Path.Combine(Constants.TILEMAP_SAVE_FOLDER, _tileMapToShow))) { using (FileStream stream = new FileStream(Path.Combine(Constants.TILEMAP_SAVE_FOLDER, _tileMapToShow), FileMode.Open, FileAccess.Read)) using (BinaryReader reader = new BinaryReader(stream)) { int Y = reader.ReadInt32(); // Read: gridsize y int X = reader.ReadInt32(); // Read: gridsize x for (int y = 0; y < Y; y++) { for (int x = 0; x < X; x++) { Vector2DInt tilePosition = Vector2DInt.Zero; tilePosition.BinaryLoad(reader); // Read: Position string typeName = reader.ReadString(); // Read: Tile type name float yRot = reader.ReadSingle(); float tintStrength = reader.ReadSingle(); // dont spawn any tile if it is empty if (typeName == "empty") { continue; } GameObject model = null; for (int i = 0; i < _tileDatabase.tilesToSerialize.Count; i++) { if (_tileDatabase.tilesToSerialize[i].typeName == typeName.ToLower()) { model = _tileDatabase.tilesToSerialize[i].data.prefab; } } // spawn new tile if (model == null) { print("model does not exist in tiledatabase"); continue; } // spawn new tile GameObject tile = Instantiate(model, new Vector3(x, 0, y), model.transform.rotation * Quaternion.Euler(0, yRot, 0), transform); TintTile(tile, tintStrength); } } } } else { Debug.LogError(string.Format("level {0} was not found", _tileMapToShow)); } }
public void BinaryLoad(string levelName) { if (File.Exists(Path.Combine(Constants.TILEMAP_SAVE_FOLDER, levelName))) { using (FileStream stream = new FileStream(Path.Combine(Constants.TILEMAP_SAVE_FOLDER, levelName), FileMode.Open, FileAccess.Read)) using (BinaryReader reader = new BinaryReader(stream)) { int Y = reader.ReadInt32(); int X = reader.ReadInt32(); ClearAllTiles(); GenerateGrid(X, Y); for (int y = 0; y < Y; y++) { for (int x = 0; x < X; x++) { Vector2DInt tilePosition = Vector2DInt.Zero; tilePosition.BinaryLoad(reader); string typeName = reader.ReadString(); float yRot = reader.ReadSingle(); float tintStrength = reader.ReadSingle(); _tileProperties[y, x].name = typeName; _tileProperties[y, x].position = new Vector2DInt(x, y); _tileProperties[y, x].yRotation = yRot; _tileProperties[y, x].tintStrength = tintStrength; // dont spawn any tile if it is empty if (typeName == "empty") { continue; } Quaternion r = new Quaternion(); r = _tileDB.GetTile(typeName).data.prefab.transform.rotation; // spawn new tile GameObject tile = Instantiate(_tileDB.GetTile(typeName).data.prefab, new Vector3(x, 0, y), r * Quaternion.Euler(0, yRot, 0), _tileFolder); tile.AddComponent <BoxCollider>(); tile.layer = 9; _tileProperties[y, x].modelReference = tile; TintTile(tile, tintStrength); } } } } else { _promt.SetAndShow(string.Format("ERROR!! Level {0} could not be found", levelName), () => print("Ok button pressed, seems to work")); } }
public void BinaryLoad(BinaryReader inReader) { _size.BinaryLoad(inReader); _position.BinaryLoad(inReader); }