Esempio n. 1
0
 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++;
         }
     }            
 }
Esempio n. 2
0
 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;
     }
 }
Esempio n. 3
0
 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);                    
         }
     }            
 }