Guest User

Falling sands

a guest
Mar 12th, 2012
197
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. if(sandbox[x][y] > 1) //If the particle is not wall or air
  2.             {
  3.                 int type = sandbox[x][y];
  4.                 if(particle[type] == 1) //If the particle has regular gravity
  5.                 {
  6.                     if(sandbox_status[x][y] == 0) //If it hasn't been updated yet
  7.                     {
  8.                         if(y > MAP_WIDTH-17)
  9.                         {
  10.                             sandbox[x][y] = 0;
  11.                         }
  12.                         else
  13.                         if (sandbox[x][y+1] == 0) //If there is a free spot below it move it down
  14.                         {
  15.                             sandbox[x][y+1] = sandbox[x][y];
  16.                             sandbox[x][y] = 0;
  17.                             sandbox_status[x][y+1] = 1;
  18.                         }
  19.                         else
  20.                         //Move down and left or right
  21.                         if (sandbox[x][y+1] != 0 && sandbox_status[x][y] == 0) //If there is a particle below it
  22.                         {
  23.                             if (sandbox[x+1][y+1] == 0 && sandbox[x-1][y+1] != 0) //If a particle is down to the left and not down to the right
  24.                             {
  25.                                 sandbox[x+1][y+1] = sandbox[x][y];
  26.                                 sandbox[x][y] = 0;
  27.  
  28.                                 sandbox_status[x+1][y+1] = 1;
  29.                             }
  30.                             else
  31.                             if (sandbox[x-1][y+1] == 0 && sandbox[x+1][y+1] != 0 && sandbox_status[x+1][y+1] == 0) //If a particle is Down to the right go to the left.
  32.                            {
  33.                                 sandbox[x-1][y+1] = sandbox[x][y];
  34.                                 sandbox[x][y] = 0;
  35.  
  36.                                 sandbox_status[x-1][y+1] = 1;
  37.                             }
  38.                             else
  39.                             if (sandbox[x-1][y+1] == 0 && sandbox[x+1][y+1] == 0)
  40.                             {
  41.                                 if(y%2 == 0)
  42.                                 {
  43.                                     sandbox[x+1][y+1] = sandbox[x][y];
  44.                                     sandbox[x][y] = 0;
  45.  
  46.                                     sandbox_status[x+1][y+1] = 1;
  47.                                 }
  48.                                 else
  49.                                 {
  50.                                     sandbox[x-1][y+1] = sandbox[x][y];
  51.                                     sandbox[x][y] = 0;
  52.  
  53.                                     sandbox_status[x-1][y+1] = 1;
  54.                                 }
  55.                             }
  56.                             else
  57.                             if (sandbox[x+1][y+1] > 0 && sandbox[x+1][y] == 0)
  58.                             {
  59.                                 sandbox[x+1][y] = sandbox[x][y];
  60.                                 sandbox[x][y] = 0;
  61.  
  62.                                 sandbox_status[x+1][y] = 1;
  63.                             }
  64.                             else
  65.                             if (sandbox[x-1][y+1] > 0 && sandbox[x-1][y] == 0 && sandbox_status[x-1][y]==0)
  66.                             {
  67.                                 sandbox[x-1][y] = sandbox[x][y];
  68.                                 sandbox[x][y] = 0;
  69.  
  70.                                 sandbox_status[x-1][y] = 1;
  71.                             }
  72.                         }
  73.                     }
  74.                 }
RAW Paste Data