48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| require("config")
 | |
| 
 | |
| local blocksize=6
 | |
| local blockThreshold=straightWorldPlatformsThreshold
 | |
| local blocksizem1=blocksize-1
 | |
| local platformName = "building-platform"
 | |
| 
 | |
| function straightWorldPlatforms(surface, leftTop, rightBottom)
 | |
|   local lt = leftTop
 | |
|   local rb = rightBottom
 | |
|   if surface == nil then
 | |
|     return
 | |
|   end
 | |
|   for y0=lt.y,rb.y-1,blocksize do
 | |
|     for x0=lt.x,rb.x-1,blocksize do
 | |
|       --Check all blocks for platforms
 | |
|       local replaceBlocks = false   
 | |
|       local blockCount = 0
 | |
|       for y1=y0,y0+blocksizem1 do
 | |
|          for x1=x0,x0+blocksizem1 do
 | |
|            local tileObj = surface.get_tile(x1,y1)
 | |
|            if tileObj ~= nil and tileObj.valid then 
 | |
|              local tile=tileObj.name
 | |
|              if tile == platformName then    
 | |
|               blockCount = blockCount + 1
 | |
|              end
 | |
|              if blockCount > (blocksize * blocksize) * blockThreshold then
 | |
|                replaceBlocks = true
 | |
|               break
 | |
|              end
 | |
|            end
 | |
|          end
 | |
|          if replaceBlocks == true then break end
 | |
|       end
 | |
|       --if enough platforms are found, replace the blocks
 | |
|       if replaceBlocks then 
 | |
|         local tiles={}
 | |
|         for y=y0,y0+blocksizem1 do
 | |
|          for x=x0,x0+blocksizem1 do
 | |
|            table.insert(tiles,{name=platformName,position={x,y}})
 | |
|          end
 | |
|         end
 | |
|         surface.set_tiles(tiles) 
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |