hedgewars/uLandGenPerlin.pas
changeset 10391 ce3ccc45d790
parent 10386 c9e38f8d4f94
child 10479 31afb7cdff69
equal deleted inserted replaced
10390:13bfbade06a5 10391:ce3ccc45d790
   119     for i:= 0 to 255 do
   119     for i:= 0 to 255 do
   120         p[256 + i]:= p[i];
   120         p[256 + i]:= p[i];
   121 end;
   121 end;
   122 
   122 
   123 const detail = 150000;
   123 const detail = 150000;
   124     field = 3;
       
   125     df = detail * field;
       
   126     width = 4096;
   124     width = 4096;
   127     height = 2048;
   125     height = 2048;
   128     minY = 500;
   126     minY = 500;
   129 
   127 
   130     //bottomPlateHeight = 90;
   128     //bottomPlateHeight = 90;
   131     //bottomPlateMargin = 1200;
   129     //bottomPlateMargin = 1200;
   132     margin = 200;
   130     margin = 200;
   133 
   131 
   134 procedure GenPerlin;
   132 procedure GenPerlin;
   135 var y, x, {dy, }di, dj, r: LongInt;
   133 var y, x, {dy, }di, dj, df, r, param1, param2: LongInt;
   136 begin
   134 begin
       
   135     param1:= cTemplateFilter div 3;
       
   136     param2:= cTemplateFilter mod 3;
       
   137 
       
   138     df:= detail * (6 - param2 * 2);
       
   139 
   137     inoise_setup();
   140     inoise_setup();
   138 
   141 
   139     for y:= minY to pred(height) do
   142     for y:= minY to pred(height) do
   140     begin
   143     begin
   141         di:= df * y div height;
   144         di:= df * y div height;
   169             if r < 50 then Land[y, x]:= 0 else Land[y, x]:= lfObjMask;
   172             if r < 50 then Land[y, x]:= 0 else Land[y, x]:= lfObjMask;
   170 
   173 
   171         end;
   174         end;
   172     end;
   175     end;
   173 
   176 
   174     for x:= 0 to width do
   177     if param1 = 0 then
   175         if Land[height - 1, x] = lfObjMask then FillLand(x, height - 1, 0, lfBasic);
   178         begin
   176     //FillLand(0, minY, lfBasic, lfObjMask);
   179         for x:= 0 to width do
       
   180             if Land[height - 1, x] = lfObjMask then FillLand(x, height - 1, 0, lfBasic);
   177 
   181 
   178     // strip all lfObjMask pixels
   182         // strip all lfObjMask pixels
   179     for y:= minY to LAND_HEIGHT - 1 do
   183         for y:= minY to LAND_HEIGHT - 1 do
   180         for x:= 0 to LAND_WIDTH - 1 do
   184             for x:= 0 to LAND_WIDTH - 1 do
   181             if Land[y, x] = lfObjMask then
   185                 if Land[y, x] = lfObjMask then
   182                 Land[y, x]:= 0;
   186                     Land[y, x]:= 0;
       
   187         end;
   183 
   188 
   184     leftX:= 0;
   189     leftX:= 0;
   185     rightX:= 4095;
   190     rightX:= 4095;
   186     topY:= 0;
   191     topY:= 0;
   187     hasBorder:= false;
   192     hasBorder:= false;