示例#1
0
    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);
            }
    }
示例#2
0
    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));
        }
    }
示例#3
0
    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"));
        }
    }
示例#4
0
 public void BinaryLoad(BinaryReader inReader)
 {
     _size.BinaryLoad(inReader);
     _position.BinaryLoad(inReader);
 }