DEADSOFTWARE

render: load image for TGUIImage within render
authorDeaDDooMER <deaddoomer@deadsoftware.ru>
Mon, 31 Jan 2022 18:46:04 +0000 (21:46 +0300)
committerDeaDDooMER <deaddoomer@deadsoftware.ru>
Mon, 31 Jan 2022 18:46:04 +0000 (21:46 +0300)
src/game/g_gui.pas
src/game/opengl/r_gui.pas

index a872643f8852be0abc923c45110279a9e8c2415e..988d0909fd5afe24c1cc4501824e6855130e11df 100644 (file)
@@ -539,7 +539,6 @@ uses
   {$ENDIF}
   {$IFDEF ENABLE_RENDER}
     r_gui,
-    r_textures, (* load/free image *)
   {$ENDIF}
   g_sound, SysUtils, e_res,
   g_game, Math, StrUtils, g_player, g_options,
@@ -3003,9 +3002,6 @@ end;
 
 procedure TGUIimage.ClearImage();
 begin
-  if FImageRes = '' then Exit;
-
-  g_Texture_Delete(FImageRes);
   FImageRes := '';
 end;
 
@@ -3028,9 +3024,7 @@ end;
 
 procedure TGUIimage.SetImage(Res: string);
 begin
-  ClearImage();
-
-  if g_Texture_CreateWADEx(Res, Res) then FImageRes := Res;
+  FImageRes := Res;
 end;
 
 procedure TGUIimage.Update();
index 3463a9ea100bc06167283342cceed2a9b1ddc622..8df2b400683901d1f7ff64fedf827beeed961cd6 100644 (file)
@@ -26,6 +26,7 @@ interface
   procedure r_GUI_GetLogoSize (out w, h: WORD);
   procedure r_GUI_GetMaxFontSize (BigFont: Boolean; out w, h: Integer);
   procedure r_GUI_GetStringSize (BigFont: Boolean; str: String; out w, h: Integer);
+
   procedure r_GUI_Draw_Window (win: TGUIWindow);
 
 implementation
@@ -500,8 +501,12 @@ implementation
     end
     else
     begin
-      if g_Texture_Get(ctrl.ImageRes, ID) then
-        e_Draw(ID, ctrl.X, ctrl.Y, 0, True, False);
+      if g_Texture_CreateWADEx(ctrl.ImageRes, ctrl.ImageRes) then
+      begin
+        if g_Texture_Get(ctrl.ImageRes, ID) then
+          e_Draw(ID, ctrl.X, ctrl.Y, 0, True, False);
+        g_Texture_Delete(ctrl.ImageRes);
+      end;
     end;
   end;