internal void LoadData() { int _count = 0; string[] _layerData; _layerData = TileData.Split(','); //Kill any new line characters for (int i = 0; i < _layerData.Length; i++) { _layerData[i] = _layerData[i].Replace(Environment.NewLine, "").Trim(); } if (_layerData.Length != _parent.TileCols * _parent.TileRows) { throw new Exception("The serialized data count (" + _layerData.Length + ") is different from the grid's tile count (" + (_parent.TileCols * _parent.TileRows) + ")"); } for (int y = 0; y < _parent.TileRows; y++) { for (int x = 0; x < _parent.TileCols; x++) { string _dataItem = _layerData[_count]; int _tilenum = -1; bool hflip = false; bool vflip = false; if (_dataItem == null) { //set a default value of blank _dataItem = "-1"; _layerData[_count] = "-1"; } byte _tileRotation = 0; if (_dataItem.Contains("(")) { //get the tile numbe and its rotation _tilenum = int.Parse(_dataItem.Substring(0, _dataItem.IndexOf("("))); if (_dataItem.Contains("H")) { hflip = true; _dataItem = _dataItem.Replace("H", ""); } if (_dataItem.Contains("V")) { vflip = true; _dataItem = _dataItem.Replace("V", ""); } if (!_dataItem.EndsWith("()")) { _tileRotation = byte.Parse(_dataItem.Substring(_dataItem.IndexOf("(") + 1, 1)); } } else { _tilenum = int.Parse(_dataItem); //get the tile number } // New tile Tile _newTile = new Tile(_tilenum); _newTile.Rotation = _tileRotation; _newTile.VFlip = vflip; _newTile.HFlip = hflip; _tiles[x][y] = _newTile; _count++; } } }
private void ResizeTileGrid(int columns, int rows) { if (this._tileCols != columns || this._tileRows != rows) { for (int t = 0; t < TileLayers.Count; t++) { Tile[][] newTiles = new Tile[columns][]; for (int i = 0; i < columns; i++) { newTiles[i] = new Tile[rows]; for (int j = 0; j < rows; j++) { if (i < this.TileCols && j < this.TileRows) { newTiles[i][j] = this.TileLayers[t].Tiles[i][j]; } else { newTiles[i][j] = new Tile(-1); } } } this._layers[t].Tiles = newTiles; } _visibilityChanged = true; this._tileCols = columns; this._tileRows = rows; } }
private void InitTiles(int numCols, int numRows) { // creates a 2d array of tiles _tiles = new Tile[numCols][]; TileData = ""; for (int x = 0; x < numCols; x++) { _tiles[x] = new Tile[numRows]; for (int y = 0; y < numRows; y++) { _tiles[x][y] = new Tile(-1); } } }