changeset 51 | b6e3ae05857f |
parent 37 | 2b7f2a43b999 |
child 53 | 0e27949850e3 |
50:9ab4067dabec | 51:b6e3ae05857f |
---|---|
54 end; |
54 end; |
55 |
55 |
56 var HHPoints: record |
56 var HHPoints: record |
57 First, Last: word; |
57 First, Last: word; |
58 ar: array[1..Pred(cMaxSpawnPoints)] of TPoint |
58 ar: array[1..Pred(cMaxSpawnPoints)] of TPoint |
59 end = (First: 1); |
59 end; |
60 |
60 |
61 procedure LogLandDigest; |
61 procedure LogLandDigest; |
62 var ctx: TSHA1Context; |
62 var ctx: TSHA1Context; |
63 dig: TSHA1Digest; |
63 dig: TSHA1Digest; |
64 begin |
64 begin |
125 r3:= ( 3*tsq - 3*tcb) * cy2; |
125 r3:= ( 3*tsq - 3*tcb) * cy2; |
126 r4:= ( tcb) * y2; |
126 r4:= ( tcb) * y2; |
127 Y:= round(r1 + r2 + r3 + r4); |
127 Y:= round(r1 + r2 + r3 + r4); |
128 t:= t + 0.001; |
128 t:= t + 0.001; |
129 if ((x and $FFFFF800) = 0) and ((y and $FFFFFC00) = 0) then |
129 if ((x and $FFFFF800) = 0) and ((y and $FFFFFC00) = 0) then |
130 Land[y, x]:= $FFFFFF; |
130 Land[y, x]:= 0; |
131 end; |
131 end; |
132 end; |
132 end; |
133 end; |
133 end; |
134 |
134 |
135 procedure BezierizeEdge(var pa: TPixAr; Delta: real); |
135 procedure BezierizeEdge(var pa: TPixAr; Delta: real); |
242 Push(xl, xr, y, -1); |
242 Push(xl, xr, y, -1); |
243 Push(xl, xr, y, 1); |
243 Push(xl, xr, y, 1); |
244 while Stack.Count > 0 do |
244 while Stack.Count > 0 do |
245 begin |
245 begin |
246 Pop(xl, xr, y, dir); |
246 Pop(xl, xr, y, dir); |
247 while (xl > 0) and (Land[y, xl] = 0) do dec(xl); |
247 while (xl > 0) and (Land[y, xl] <> 0) do dec(xl); |
248 while (xr < 2047) and (Land[y, xr] = 0) do inc(xr); |
248 while (xr < 2047) and (Land[y, xr] <> 0) do inc(xr); |
249 while (xl < xr) do |
249 while (xl < xr) do |
250 begin |
250 begin |
251 while (xl <= xr) and (Land[y, xl] <> 0) do inc(xl); |
251 while (xl <= xr) and (Land[y, xl] = 0) do inc(xl); |
252 x:= xl; |
252 x:= xl; |
253 while (xl <= xr) and (Land[y, xl] = 0) do |
253 while (xl <= xr) and (Land[y, xl] <> 0) do |
254 begin |
254 begin |
255 Land[y, xl]:= $FFFFFF; |
255 Land[y, xl]:= 0; |
256 inc(xl) |
256 inc(xl) |
257 end; |
257 end; |
258 if x < xl then |
258 if x < xl then |
259 begin |
259 begin |
260 Push(x, Pred(xl), y, dir); |
260 Push(x, Pred(xl), y, dir); |
460 end; |
460 end; |
461 end; |
461 end; |
462 |
462 |
463 procedure GenLandSurface; |
463 procedure GenLandSurface; |
464 var tmpsurf: PSDL_Surface; |
464 var tmpsurf: PSDL_Surface; |
465 begin |
465 i: Longword; |
466 GenBlank(EdgeTemplates[getrandom(Succ(High(EdgeTemplates)))]); |
466 begin |
467 for i:= 0 to sizeof(Land) div 4 do |
|
468 PLongword(Longword(@Land) + i * 4)^:= $FFFFFF; |
|
469 GenBlank(EdgeTemplates[8{getrandom(Succ(High(EdgeTemplates)))}]); |
|
467 |
470 |
468 AddProgress; |
471 AddProgress; |
469 with PixelFormat^ do |
472 with PixelFormat^ do |
470 tmpsurf:= SDL_CreateRGBSurface(SDL_HWSURFACE, 2048, 1024, BitsPerPixel, RMask, GMask, BMask, 0); |
473 tmpsurf:= SDL_CreateRGBSurface(SDL_HWSURFACE, 2048, 1024, BitsPerPixel, RMask, GMask, BMask, 0); |
471 ColorizeLand(tmpsurf); |
474 ColorizeLand(tmpsurf); |
562 end |
565 end |
563 end |
566 end |
564 end |
567 end |
565 end; |
568 end; |
566 |
569 |
570 initialization |
|
571 |
|
572 HHPoints.First:= 1 |
|
573 |
|
567 end. |
574 end. |