27 procedure freeModule; |
27 procedure freeModule; |
28 |
28 |
29 function doSurfaceConversion(tmpsurf: PSDL_Surface): PSDL_Surface; |
29 function doSurfaceConversion(tmpsurf: PSDL_Surface): PSDL_Surface; |
30 function MakeScreenshot(filename: shortstring; k: LongInt; dump: LongWord): boolean; |
30 function MakeScreenshot(filename: shortstring; k: LongInt; dump: LongWord): boolean; |
31 function GetTeamStatString(p: PTeam): shortstring; |
31 function GetTeamStatString(p: PTeam): shortstring; |
32 function SDL_RectMake(x, y, width, height: LongInt): TSDL_Rect; inline; |
32 function SDL_RectMake(x, y, width, height: LongInt): TSDL_Rect; |
33 |
33 |
34 implementation |
34 implementation |
35 uses uVariables, uUtils |
35 uses uVariables, uUtils, uLandUtils |
36 {$IFDEF PNG_SCREENSHOTS}, PNGh, png {$ENDIF}; |
36 {$IFDEF PNG_SCREENSHOTS}, PNGh, png {$ENDIF}; |
37 |
37 |
38 type PScreenshot = ^TScreenshot; |
38 type PScreenshot = ^TScreenshot; |
39 TScreenshot = record |
39 TScreenshot = record |
40 buffer: PByte; |
40 buffer: PByte; |
289 for x:= 0 to LAND_WIDTH-1 do |
289 for x:= 0 to LAND_WIDTH-1 do |
290 if dump = 2 then |
290 if dump = 2 then |
291 PLongWordArray(p)^[y*LAND_WIDTH+x]:= LandPixels[LAND_HEIGHT-1-y, x] |
291 PLongWordArray(p)^[y*LAND_WIDTH+x]:= LandPixels[LAND_HEIGHT-1-y, x] |
292 else |
292 else |
293 begin |
293 begin |
294 if Land[LAND_HEIGHT-1-y, x] and lfIndestructible = lfIndestructible then |
294 if LandGet(LAND_HEIGHT-1-y, x) and lfIndestructible = lfIndestructible then |
295 PLongWordArray(p)^[y*LAND_WIDTH+x]:= (AMask or RMask) |
295 PLongWordArray(p)^[y*LAND_WIDTH+x]:= (AMask or RMask) |
296 else if Land[LAND_HEIGHT-1-y, x] and lfIce = lfIce then |
296 else if LandGet(LAND_HEIGHT-1-y, x) and lfIce = lfIce then |
297 PLongWordArray(p)^[y*LAND_WIDTH+x]:= (AMask or BMask) |
297 PLongWordArray(p)^[y*LAND_WIDTH+x]:= (AMask or BMask) |
298 else if Land[LAND_HEIGHT-1-y, x] and lfBouncy = lfBouncy then |
298 else if LandGet(LAND_HEIGHT-1-y, x) and lfBouncy = lfBouncy then |
299 PLongWordArray(p)^[y*LAND_WIDTH+x]:= (AMask or GMask) |
299 PLongWordArray(p)^[y*LAND_WIDTH+x]:= (AMask or GMask) |
300 else if Land[LAND_HEIGHT-1-y, x] and lfObject = lfObject then |
300 else if LandGet(LAND_HEIGHT-1-y, x) and lfObject = lfObject then |
301 PLongWordArray(p)^[y*LAND_WIDTH+x]:= $FFFFFFFF |
301 PLongWordArray(p)^[y*LAND_WIDTH+x]:= $FFFFFFFF |
302 else if Land[LAND_HEIGHT-1-y, x] and lfBasic = lfBasic then |
302 else if LandGet(LAND_HEIGHT-1-y, x) and lfBasic = lfBasic then |
303 PLongWordArray(p)^[y*LAND_WIDTH+x]:= AMask |
303 PLongWordArray(p)^[y*LAND_WIDTH+x]:= AMask |
304 else |
304 else |
305 PLongWordArray(p)^[y*LAND_WIDTH+x]:= 0 |
305 PLongWordArray(p)^[y*LAND_WIDTH+x]:= 0 |
306 end |
306 end |
307 end |
307 end |
351 SDL_FreeSurface(tmpsurf); |
351 SDL_FreeSurface(tmpsurf); |
352 doSurfaceConversion:= convertedSurf; |
352 doSurfaceConversion:= convertedSurf; |
353 end; |
353 end; |
354 end; |
354 end; |
355 |
355 |
356 function SDL_RectMake(x, y, width, height: LongInt): TSDL_Rect; inline; |
356 function SDL_RectMake(x, y, width, height: LongInt): TSDL_Rect; |
357 begin |
357 begin |
358 SDL_RectMake.x:= x; |
358 SDL_RectMake.x:= x; |
359 SDL_RectMake.y:= y; |
359 SDL_RectMake.y:= y; |
360 SDL_RectMake.w:= width; |
360 SDL_RectMake.w:= width; |
361 SDL_RectMake.h:= height; |
361 SDL_RectMake.h:= height; |