DEADSOFTWARE

gl: fix load animtextures
[d2df-sdl.git] / src / game / renders / opengl / r_textures.pas
index 1025abad5f29d73540ecd541e33b28903fe52efe..ec47f58bc640ecd4d2a213246f19519ccaaef100 100644 (file)
@@ -18,11 +18,7 @@ unit r_textures;
 interface
 
   uses
-    {$IFDEF USE_GLES1}
-      GLES11,
-    {$ELSE}
-      GL, GLEXT,
-    {$ENDIF}
+    {$I ../../../nogl/noGLuses.inc}
     g_base, g_animations,  // TRectHW, TAnimInfo
     utils,
     r_atlas, r_fonts
@@ -648,7 +644,7 @@ implementation
     end;
   end;
 
-  function r_Textures_LoadTextFromMemory (data: Pointer; size: LongInt; var txt: TAnimTextInfo): Boolean;
+  function r_Textures_LoadTextFromMemory (data: Pointer; size: LongInt; var text: TAnimTextInfo): Boolean;
     var cfg: TConfig;
   begin
     result := false;
@@ -657,15 +653,23 @@ implementation
       cfg := TConfig.CreateMem(data, size);
       if cfg <> nil then
       begin
-        txt.name := cfg.ReadStr('', 'resource', '');
-        txt.w := MAX(0, cfg.ReadInt('', 'framewidth', 0));
-        txt.h := MAX(0, cfg.ReadInt('', 'frameheight', 0));
-        txt.anim.loop := true;
-        txt.anim.delay := MAX(0, cfg.ReadInt('', 'waitcount', 0));
-        txt.anim.frames := MAX(0, cfg.ReadInt('', 'framecount', 0));
-        txt.anim.back := cfg.ReadBool('', 'backanim', false);
+        text.name := cfg.ReadStr('', 'resource', '');
+        text.w := cfg.ReadInt('', 'framewidth', 0);
+        text.h := cfg.ReadInt('', 'frameheight', 0);
+        text.anim.loop := true;
+        text.anim.delay := cfg.ReadInt('', 'waitcount', 0);
+        text.anim.frames := cfg.ReadInt('', 'framecount', 0);
+        text.anim.back := cfg.ReadBool('', 'backanim', false);
+        if text.w <= 0 then e_LogWritefln('Warning: bad animation width %s for %s', [text.w, text.name]);
+        if text.h <= 0 then e_LogWritefln('Warning: bad animation height %s for %s', [text.h, text.name]);
+        if text.anim.delay <= 0 then e_LogWritefln('Warning: bad animation delay %s for %s', [text.anim.delay, text.name]);
+        if text.anim.frames <= 0 then e_LogWritefln('Warning: bad animation frame count %s for %s', [text.anim.frames, text.name]);
+        text.w := MAX(0, text.w);
+        text.h := MAX(0, text.h);
+        text.anim.delay := MAX(1, text.anim.delay);
+        text.anim.frames := MAX(1, text.anim.frames);
         cfg.Free;
-        result := (txt.name <> '') and (txt.w > 0) and (txt.h > 0) and (txt.anim.delay > 0) and (txt.anim.frames > 0);
+        result := (text.name <> '') and (text.w > 0) and (text.h > 0) and (text.anim.delay > 0) and (text.anim.frames > 0);
       end;
     end;
   end;