?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1. -- Autofringe Script
  2. -- Robert Edwards 2003
  3.  
  4. -- This script is in the public domain and can be used for any purpose
  5. -- I just hope its useful.
  6.  
  7.  
  8. function ShowError(message)
  9.     mappy.msgBox("Error ...", message, mappy.MMB_OK, mappy.MMB_ICONEXCLAMATION)
  10. end
  11.  
  12. function ShowMessage(message)
  13.     mappy.msgBox("Message ...", message, mappy.MMB_OK, mappy.MMB_ICONNONE)
  14. end
  15.  
  16. function TestBlock(i, j, testfor)
  17.     toff = 0
  18.  
  19.     if mappy.getBlock(i,j) == testfor then
  20.         return 0
  21.     end
  22.  
  23.     if j-1 > 0  then
  24.         if mappy.getBlock(i,j-1) == testfor then
  25.             toff = mappy.orVal(1, toff)
  26.         end
  27.     end
  28.    
  29.     if j+1 < mappy.getValue(mappy.MAPHEIGHT) then
  30.         if mappy.getBlock(i,j+1) == testfor then
  31.             toff = mappy.orVal(2, toff)
  32.         end
  33.     end
  34.    
  35.     if i-1 > 0  then
  36.         if mappy.getBlock(i-1,j) == testfor then
  37.             toff = mappy.orVal(4, toff)
  38.         end
  39.     end
  40.  
  41.     if i+1 < mappy.getValue(mappy.MAPWIDTH) then
  42.         if mappy.getBlock(i+1,j) == testfor then
  43.             toff = mappy.orVal(8, toff)
  44.         end
  45.     end
  46.    
  47.     if mappy.andVal(toff,15) == 0 then
  48.         -- this is a could be a corner piece
  49.         -- so check the corners
  50.        
  51.         if i-1 > 0 then
  52.        
  53.             if j-1 > 0 then
  54.                 if mappy.getBlock(i-1,j-1) == testfor then
  55.                     toff = mappy.orVal(16,toff)
  56.                 end
  57.             end
  58.            
  59.             if j+1 < mappy.getValue(mappy.MAPHEIGHT) then
  60.                 if mappy.getBlock(i-1,j+1) == testfor then
  61.                     toff = mappy.orVal(32,toff)
  62.                 end
  63.             end
  64.        
  65.         end
  66.         if i+1 < mappy.getValue(mappy.MAPWIDTH) then
  67.  
  68.             if j-1 > 0 then
  69.                 if mappy.getBlock(i+1,j-1) == testfor then
  70.                     toff = mappy.orVal(64,toff)
  71.                 end
  72.             end
  73.  
  74.             if j+1 < mappy.getValue(mappy.MAPHEIGHT) then
  75.                 if mappy.getBlock(i+1,j+1) == testfor then
  76.                     toff = mappy.orVal(128,toff)
  77.                 end
  78.             end
  79.  
  80.         end
  81.        
  82.         if toff == 16 then
  83.             return 8
  84.         end
  85.         if toff == 32 then
  86.             return 6
  87.         end
  88.         if toff == 64 then
  89.             return 7
  90.         end
  91.         if toff == 128 then
  92.             return 5
  93.         end
  94.  
  95.     else
  96.         -- try to identify the type of piece
  97.         if toff == 2 then
  98.             return 12
  99.         end
  100.  
  101.         if toff == 1 then
  102.             return 11
  103.         end
  104.        
  105.         if toff == 4 then
  106.             return 9
  107.         end
  108.        
  109.         if toff == 8 then
  110.             return 10
  111.         end
  112.        
  113.         if toff == mappy.andVal(toff,10) then
  114.             return 4
  115.         end
  116.        
  117.         if toff == mappy.andVal(toff,6) then
  118.             return 3
  119.         end
  120.        
  121.         if toff == mappy.andVal(toff,9) then
  122.             return 2
  123.         end
  124.        
  125.         if toff == mappy.andVal(toff,5) then
  126.             return 1
  127.         end
  128.  
  129.     end
  130.    
  131.     return 0
  132. end
  133.  
  134. function main()
  135.  
  136.     if mappy.msgBox("AutoFringe", "This will automatically fringe the selected block", mappy.MMB_OKCANCEL, mappy.MMB_ICONQUESTION ) == mappy.MMB_OK then
  137.  
  138.         mappy.copyLayer(mappy.getValue(mappy.CURLAYER),mappy.MPY_UNDO)
  139.  
  140.         cur_block = mappy.getValue(mappy.CURBLOCK)
  141.         w,h = mappy.getValue(mappy.MAPWIDTH),mappy.getValue(mappy.MAPHEIGHT)
  142.  
  143.         for j = 0,(h-1) do
  144.             for i= 0,(w-1) do
  145.                 a = TestBlock(i,j, cur_block)
  146.                 if a > 0 then
  147.                     mappy.setBlock( i,j,cur_block+a)
  148.                 end
  149.             end
  150.         end
  151.  
  152.         mappy.updateScreen()
  153.  
  154.     end
  155.  
  156. end
  157.  
  158. test, errormsg = pcall( main )
  159. if not test then
  160.     ShowError(errormsg)
  161. end
  162.