hedgewars/uStore.pas
changeset 9655 e154ccca4dad
parent 9530 0dc3b8f94b0b
child 9656 18422d205080
equal deleted inserted replaced
9654:47332746e6d9 9655:e154ccca4dad
   108 finalRect.h:= h + cFontBorder * 2;
   108 finalRect.h:= h + cFontBorder * 2;
   109 WriteInRect:= finalRect
   109 WriteInRect:= finalRect
   110 end;
   110 end;
   111 
   111 
   112 procedure MakeCrossHairs;
   112 procedure MakeCrossHairs;
   113 var t: LongInt;
   113 var tmpsurf: PSDL_Surface;
   114     tmpsurf, texsurf: PSDL_Surface;
   114 begin
   115     Color, i: Longword;
   115     tmpsurf:= LoadDataImage(ptGraphics, cCHFileName, ifAlpha or ifCritical);
   116 begin
   116 
   117 tmpsurf:= LoadDataImage(ptGraphics, cCHFileName, ifAlpha or ifCritical);
   117     CrosshairTexture:= Surface2Tex(tmpsurf, false);
   118 
   118 
   119 for t:= 0 to Pred(TeamsCount) do
   119     SDL_FreeSurface(tmpsurf)
   120     with TeamsArray[t]^ do
       
   121     begin
       
   122     texsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, tmpsurf^.w, tmpsurf^.h, 32, RMask, GMask, BMask, AMask);
       
   123     TryDo(texsurf <> nil, errmsgCreateSurface, true);
       
   124 
       
   125     Color:= Clan^.Color;
       
   126     Color:= SDL_MapRGB(texsurf^.format, Color shr 16, Color shr 8, Color and $FF);
       
   127     SDL_FillRect(texsurf, nil, Color);
       
   128 
       
   129     SDL_UpperBlit(tmpsurf, nil, texsurf, nil);
       
   130 
       
   131     TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Ooops', true);
       
   132 
       
   133     if SDL_MustLock(texsurf) then
       
   134         SDLTry(SDL_LockSurface(texsurf) >= 0, true);
       
   135 
       
   136     // make black pixel be alpha-transparent
       
   137     for i:= 0 to texsurf^.w * texsurf^.h - 1 do
       
   138         if PLongwordArray(texsurf^.pixels)^[i] = AMask then
       
   139             PLongwordArray(texsurf^.pixels)^[i]:= (RMask or GMask or BMask) and Color;
       
   140 
       
   141     if SDL_MustLock(texsurf) then
       
   142         SDL_UnlockSurface(texsurf);
       
   143 
       
   144     FreeTexture(CrosshairTex);
       
   145     CrosshairTex:= Surface2Tex(texsurf, false);
       
   146     SDL_FreeSurface(texsurf)
       
   147     end;
       
   148 
       
   149 SDL_FreeSurface(tmpsurf)
       
   150 end;
   120 end;
   151 
   121 
   152 
   122 
   153 procedure WriteNames(Font: THWFont);
   123 procedure WriteNames(Font: THWFont);
   154 var t: LongInt;
   124 var t: LongInt;
   477     ai: TAmmoType;
   447     ai: TAmmoType;
   478     i, t: LongInt;
   448     i, t: LongInt;
   479 begin
   449 begin
   480 for ii:= Low(TSprite) to High(TSprite) do
   450 for ii:= Low(TSprite) to High(TSprite) do
   481     begin
   451     begin
   482     FreeTexture(SpritesData[ii].Texture);
   452     FreeAndNilTexture(SpritesData[ii].Texture);
   483     SpritesData[ii].Texture:= nil;
   453 
   484     if (SpritesData[ii].Surface <> nil) and (not reload) then
   454     if (SpritesData[ii].Surface <> nil) and (not reload) then
   485         begin
   455         begin
   486         SDL_FreeSurface(SpritesData[ii].Surface);
   456         SDL_FreeSurface(SpritesData[ii].Surface);
   487         SpritesData[ii].Surface:= nil
   457         SpritesData[ii].Surface:= nil
   488         end
   458         end
   489     end;
   459     end;
   490 SDL_FreeSurface(MissionIcons);
   460 SDL_FreeSurface(MissionIcons);
   491 
   461 
   492 // free the textures declared in uVariables
   462 // free the textures declared in uVariables
   493 FreeTexture(WeaponTooltipTex);
   463 FreeAndNilTexture(CrosshairTexture);
   494 WeaponTooltipTex:= nil;
   464 FreeAndNilTexture(WeaponTooltipTex);
   495 FreeTexture(PauseTexture);
   465 FreeAndNilTexture(PauseTexture);
   496 PauseTexture:= nil;
   466 FreeAndNilTexture(SyncTexture);
   497 FreeTexture(SyncTexture);
   467 FreeAndNilTexture(ConfirmTexture);
   498 SyncTexture:= nil;
   468 FreeAndNilTexture(ropeIconTex);
   499 FreeTexture(ConfirmTexture);
   469 FreeAndNilTexture(HHTexture);
   500 ConfirmTexture:= nil;
       
   501 FreeTexture(ropeIconTex);
       
   502 ropeIconTex:= nil;
       
   503 FreeTexture(HHTexture);
       
   504 HHTexture:= nil;
       
   505 
   470 
   506 // free all ammo name textures
   471 // free all ammo name textures
   507 for ai:= Low(TAmmoType) to High(TAmmoType) do
   472 for ai:= Low(TAmmoType) to High(TAmmoType) do
   508     begin
   473     FreeAndNilTexture(Ammoz[ai].NameTex);
   509     FreeTexture(Ammoz[ai].NameTex);
       
   510     Ammoz[ai].NameTex:= nil
       
   511     end;
       
   512 
   474 
   513 // free all count textures
   475 // free all count textures
   514 for i:= Low(CountTexz) to High(CountTexz) do
   476 for i:= Low(CountTexz) to High(CountTexz) do
   515     begin
   477     begin
   516     FreeTexture(CountTexz[i]);
   478     FreeAndNilTexture(CountTexz[i]);
   517     CountTexz[i]:= nil
   479     CountTexz[i]:= nil
   518     end;
   480     end;
   519 
   481 
   520     // free all team and hedgehog textures
   482     // free all team and hedgehog textures
   521     for t:= 0 to Pred(TeamsCount) do
   483     for t:= 0 to Pred(TeamsCount) do
   522         begin
   484         begin
   523         if TeamsArray[t] <> nil then
   485         if TeamsArray[t] <> nil then
   524             begin
   486             begin
   525             FreeTexture(TeamsArray[t]^.NameTagTex);
   487             FreeAndNilTexture(TeamsArray[t]^.NameTagTex);
   526             TeamsArray[t]^.NameTagTex:= nil;
   488             FreeAndNilTexture(TeamsArray[t]^.GraveTex);
   527             FreeTexture(TeamsArray[t]^.CrosshairTex);
   489             FreeAndNilTexture(TeamsArray[t]^.HealthTex);
   528             TeamsArray[t]^.CrosshairTex:= nil;
   490             FreeAndNilTexture(TeamsArray[t]^.AIKillsTex);
   529             FreeTexture(TeamsArray[t]^.GraveTex);
   491             FreeAndNilTexture(TeamsArray[t]^.FlagTex);
   530             TeamsArray[t]^.GraveTex:= nil;
   492 
   531             FreeTexture(TeamsArray[t]^.HealthTex);
       
   532             TeamsArray[t]^.HealthTex:= nil;
       
   533             FreeTexture(TeamsArray[t]^.AIKillsTex);
       
   534             TeamsArray[t]^.AIKillsTex:= nil;
       
   535             FreeTexture(TeamsArray[t]^.FlagTex);
       
   536             TeamsArray[t]^.FlagTex:= nil;
       
   537             for i:= 0 to cMaxHHIndex do
   493             for i:= 0 to cMaxHHIndex do
   538                 begin
   494                 begin
   539                 FreeTexture(TeamsArray[t]^.Hedgehogs[i].NameTagTex);
   495                 FreeAndNilTexture(TeamsArray[t]^.Hedgehogs[i].NameTagTex);
   540                 TeamsArray[t]^.Hedgehogs[i].NameTagTex:= nil;
   496                 FreeAndNilTexture(TeamsArray[t]^.Hedgehogs[i].HealthTagTex);
   541                 FreeTexture(TeamsArray[t]^.Hedgehogs[i].HealthTagTex);
   497                 FreeAndNilTexture(TeamsArray[t]^.Hedgehogs[i].HatTex);
   542                 TeamsArray[t]^.Hedgehogs[i].HealthTagTex:= nil;
       
   543                 FreeTexture(TeamsArray[t]^.Hedgehogs[i].HatTex);
       
   544                 TeamsArray[t]^.Hedgehogs[i].HatTex:= nil;
       
   545                 end;
   498                 end;
   546             end;
   499             end;
   547         end;
   500         end;
   548 {$IFDEF USE_VIDEO_RECORDING}
   501 {$IFDEF USE_VIDEO_RECORDING}
   549     if defaultFrame <> 0 then
   502     if defaultFrame <> 0 then