Advertisement
Rolpege

Resizing tilemaps the wrong and slow way

Mar 13th, 2011
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public function resize(width:int, height:int):void
  2. {
  3.     var wallstring:String = walls.saveToString();
  4.    
  5.     walls = new Tilemap(GFX.WALLS, width << 4, height <<4, 16, 16);
  6.    
  7.     walls.loadFromString(limit(wallstring, width, height));
  8. }
  9.  
  10. protected function limit(string:String, cols:int, rows:int):String
  11. {
  12.     var limited:String = '';
  13.     var array:Array = csvToArray(string);
  14.    
  15.     for(var y:int = 0; y < rows; y++)
  16.     {
  17.         for(var x:int = 0; x < cols; x++)
  18.         {
  19.             var id:int = array[y] ? array[y][x] : 0;
  20.             limited += id ? id : '0';
  21.             if(x < cols-1) limited += ',';
  22.         }
  23.        
  24.         if(y < rows-1) limited += '\n';
  25.     }
  26.    
  27.     return limited;
  28. }
  29.  
  30. protected function csvToArray(string:String):Array
  31. {
  32.     var arr:Array = [];
  33.    
  34.     var row:Array = string.split('\n');
  35.     var rows:int = row.length;
  36.    
  37.     var col:Array;
  38.     var cols:int;
  39.    
  40.     for(var y:int = 0; y < rows; y++)
  41.     {
  42.         if(row[y] == '') continue;
  43.        
  44.         col = row[y].split(',');
  45.         cols = col.length;
  46.         arr[y] = [];
  47.        
  48.         for(var x:int = 0; x < cols; x ++)
  49.         {
  50.             if(col[x] == '') continue;
  51.             arr[y][x] = uint(col[x]);
  52.         }
  53.     }
  54.    
  55.     return arr;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement