diff -r fbe30de53d1d -r 9367f246fb5f hedgewars/uStore.pas --- a/hedgewars/uStore.pas Wed Dec 28 23:34:22 2005 +0000 +++ b/hedgewars/uStore.pas Sat Dec 31 13:45:09 2005 +0000 @@ -56,7 +56,7 @@ procedure RenderHealth(var Hedgehog: THedgehog); function RenderString(var s: shortstring; Color, Pos: integer): TSDL_Rect; procedure AddProgress; -function LoadImage(filename: string): PSDL_Surface; +function LoadImage(filename: string; hasAlpha: boolean): PSDL_Surface; var PixelFormat: PSDL_PixelFormat; SDLPrimSurface: PSDL_Surface; @@ -189,9 +189,15 @@ end; procedure StoreInit; +var r: TSDL_Rect; begin StoreSurface := SDL_CreateRGBSurface(SDL_HWSURFACE, 576, 1024, cBits, PixelFormat.RMask, PixelFormat.GMask, PixelFormat.BMask, 0); TryDo( StoreSurface <> nil, errmsgCreateSurface + ': store' , true); +r.x:= 0; +r.y:= 0; +r.w:= 576; +r.h:= 1024; +SDL_FillRect(StoreSurface, @r, 0); TempSurface := SDL_CreateRGBSurface(SDL_HWSURFACE, 724, 320, cBits, PixelFormat.RMask, PixelFormat.GMask, PixelFormat.BMask, 0); TryDo( TempSurface <> nil, errmsgCreateSurface + ': temp' , true); @@ -205,7 +211,7 @@ var tmpsurf: PSDL_Surface; rr: TSDL_Rect; begin - tmpsurf:= LoadImage(Filename); + tmpsurf:= LoadImage(Filename, false); rr.x:= X; rr.y:= Y; SDL_UpperBlit(tmpsurf, nil, Surface, @rr); @@ -406,8 +412,8 @@ WriteLnToConsole(msgOK) end; AddProgress; -s:= Pathz[ptMapCurrent] + cLandFileName; -WriteToConsole(msgLoading + s + ' '); // загружаем текущее поле +//s:= Pathz[ptMapCurrent] + cLandFileName; +//WriteToConsole(msgLoading + s + ' '); //tmpsurf:= IMG_Load(PChar(s)); tmpsurf:= LandSurface; TryDo(tmpsurf <> nil, msgFailed, true); @@ -416,7 +422,7 @@ LandSurface:= SDL_DisplayFormat(tmpsurf); SDL_FreeSurface(tmpsurf); end else LandSurface:= tmpsurf; -TryDo(SDL_SetColorKey(LandSurface, SDL_SRCCOLORKEY or SDL_RLEACCEL, 0) = 0, errmsgTransparentSet, true); +TryDo(SDL_SetColorKey(LandSurface, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); WriteLnToConsole(msgOK); GetExplosionBorderColor; @@ -435,16 +441,13 @@ AddProgress; for ii:= Low(TSprite) to High(TSprite) do with SpritesData[ii] do - begin - Surface:= LoadImage(Pathz[Path] + FileName); - TryDo(SDL_SetColorKey(Surface, SDL_SRCCOLORKEY or SDL_RLEACCEL, 0) = 0, errmsgTransparentSet, true) - end; + Surface:= LoadImage(Pathz[Path] + FileName, hasAlpha); AddProgress; -tmpsurf:= LoadImage(Pathz[ptGraphics] + cHHFileName); +tmpsurf:= LoadImage(Pathz[ptGraphics] + cHHFileName, false); +TryDo(SDL_SetColorKey(tmpsurf, SDL_SRCCOLORKEY or SDL_RLEACCEL, 0) = 0, errmsgTransparentSet, true); HHSurface:= SDL_DisplayFormat(tmpsurf); SDL_FreeSurface(tmpsurf); -TryDo(SDL_SetColorKey(HHSurface, SDL_SRCCOLORKEY or SDL_RLEACCEL, 0) = 0, errmsgTransparentSet, true); InitHealth; @@ -583,15 +586,17 @@ end; end; -function LoadImage(filename: string): PSDL_Surface; +function LoadImage(filename: string; hasAlpha: boolean): PSDL_Surface; var tmpsurf: PSDL_Surface; begin WriteToConsole(msgLoading + filename + '... '); tmpsurf:= IMG_Load(PChar(filename)); TryDo(tmpsurf <> nil, msgFailed, true); +TryDo(SDL_SetColorKey(tmpsurf, SDL_SRCCOLORKEY or SDL_RLEACCEL, 0) = 0, errmsgTransparentSet, true); if cFullScreen then begin - Result:= SDL_DisplayFormat(tmpsurf); + if hasAlpha then Result:= SDL_DisplayFormatAlpha(tmpsurf) + else Result:= SDL_DisplayFormat(tmpsurf); SDL_FreeSurface(tmpsurf); end else Result:= tmpsurf; WriteLnToConsole(msgOK)