View Single Post
  #1  
Old 04-16-2011, 06:37 AM
MrOmega MrOmega is offline
One More Time
MrOmega's Avatar
Join Date: Aug 2010
Location: TN, USA
Posts: 631
MrOmega is an unknown quantity at this point
Send a message via AIM to MrOmega Send a message via MSN to MrOmega Send a message via Yahoo to MrOmega
Flood fill issue

well I attempted two methods to create a tile flood fill, first method is working fine, but is slow, second seems to be fast but stops after 3 'lines', the queue is updated in it but is temp.queue for the for-each loop updated?

PHP Code:
function floodFilltemp.tiletemp.targetTiletemp.replaceTile)
{

  
/*//Method 1 - SUCCESS -
  temp.queue = { temp.tile};

  while (( @ temp.queue) != ( @ {{ NULL, NULL}}))
  {
  
    temp.n = temp.queue[ 0];
    
    if ( player.level.tilelayers[ Tile_Editor_Layer.text].tiles[ temp.n[ 0], temp.n[ 1]] == temp.targetTile)
      triggerServer( "weapon", name, "PlaceTiles", Tile_Editor_Layer.text, { temp.replaceTile}, { temp.n[ 0], temp.n[ 1], 1, 1}); 

    temp.queue.delete( 0);
    
    for ( temp.a = 0; temp.a < 4; temp.a ++;)
    {
    
      if ( player.level.tilelayers[ Tile_Editor_Layer.text].tiles[ temp.n[ 0] + ( !temp.a? -1: temp.a == 1? 1: 0), temp.n[ 1] + ( temp.a == 2? -1: temp.a == 3? 1: 0)] == temp.targetTile)
      {
    
        triggerServer( "weapon", name, "PlaceTiles", Tile_Editor_Layer.text, { temp.replaceTile}, { temp.n[ 0] + ( temp.a == 0? -1: temp.a == 1? 1: 0), temp.n[ 1] + ( temp.a == 2? -1: temp.a == 3? 1: 0), 1, 1}); 
        temp.queue.add({ temp.n[ 0] + ( !temp.a? -1: temp.a == 1? 1: 0), temp.n[ 1] + ( temp.a == 2? -1: temp.a == 3? 1: 0)});

      }
    }
    
    sleep( 0.05); //Added to prevent freeze
    
  }
  */
  
  // Method 2 - BROKEN
  
  
temp.queue = { temp.tile};
  
  for ( 
temp.ntemp.queue)
  {
  
    if ( 
player.level.tilelayersTile_Editor_Layer.text].tilestemp.n0], temp.n1]] == temp.targetTile)
      
temp.temp.temp.n0];
      
    while ( 
player.level.tilelayersTile_Editor_Layer.text].tilestemp.1temp.n1]] == temp.targetTile)
      
temp.--;
        
    while ( 
player.level.tilelayersTile_Editor_Layer.text].tilestemp.etemp.n1]] == temp.targetTile)
      
temp.++;
   
    for ( 
temp.temp.wtemp.temp.etemp.++;)
    {

      if ( 
player.level.tilelayersTile_Editor_Layer.text].tilestemp.atemp.n1]] == temp.targetTile)   
        
triggerServer"weapon"name"PlaceTiles"Tile_Editor_Layer.text, { temp.replaceTile}, { temp.atemp.n1], 11}); 
        
      if ( 
player.level.tilelayersTile_Editor_Layer.text].tilestemp.atemp.n1] - 1] == temp.targetTile)  
        
temp.queue.add({ temp.atemp.n1] - 1});
        
      if ( 
player.level.tilelayersTile_Editor_Layer.text].tilestemp.atemp.n1] + 1] == temp.targetTile)  
        
temp.queue.add({ temp.atemp.n1] + 1});
        
    }
    
    
sleep0.05); //Added to prevent client from freezing
    
  
}
  
  return;  


__________________
Time is the fire in which we burn...
Up, Up, Down, Down, Left, Right, Left, Right, B, A, Select, Start! Now I got 99 LIVES!!!
Reply With Quote