DEADSOFTWARE

Net: Master now supports MOTD and message boxes
[d2df-sdl.git] / src / engine / e_graphics.pas
index c5ec8f36e94baae90f47ca21bbd20d32416a36d9..b1d34101d44014c5ab06d3aa6b96dcfc32d94863 100644 (file)
@@ -19,11 +19,7 @@ unit e_graphics;
 interface
 
 uses
-{$IFDEF USE_NANOGL}
-  nanoGL,
-{$ELSE}
-  GL, GLExt,
-{$ENDIF}
+  {$INCLUDE ../nogl/noGLuses.inc}
   SysUtils, Classes, Math, e_log, e_texture, SDL2, MAPDEF, ImagingTypes, Imaging, ImagingUtility;
 
 type
@@ -119,7 +115,8 @@ procedure e_TextureFontKill(FontID: DWORD);
 procedure e_TextureFontPrint(X, Y: GLint; Text: string; FontID: DWORD);
 procedure e_TextureFontPrintEx(X, Y: GLint; Text: string; FontID: DWORD; Red, Green,
                                Blue: Byte; Scale: Single; Shadow: Boolean = False);
-procedure e_TextureFontPrintFmt(X, Y: GLint; Text: string; FontID: DWORD; Shadow: Boolean = False);
+procedure e_TextureFontPrintFmt(X, Y: GLint; Text: string; FontID: DWORD;
+                                Shadow: Boolean = False; Newlines: Boolean = False);
 procedure e_TextureFontGetSize(ID: DWORD; out CharWidth, CharHeight: Byte);
 procedure e_RemoveAllTextureFont();
 
@@ -1525,7 +1522,7 @@ begin
 
  with e_TextureFonts[id] do
  begin
-{$IF not DEFINED(USE_NANOGL)}
+{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
   Base := glGenLists(XCount*YCount);
 {$ENDIF}
   TextureID := e_Textures[Tex].tx.id;
@@ -1537,7 +1534,7 @@ begin
   SPC := Space;
  end;
 
-{$IF not DEFINED(USE_NANOGL)}
+{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
  glBindTexture(GL_TEXTURE_2D, e_Textures[Tex].tx.id);
  for loop1 := 0 to XCount*YCount-1 do
  begin
@@ -1569,13 +1566,13 @@ end;
 procedure e_TextureFontKill(FontID: DWORD);
 begin
   if e_NoGraphics then Exit;
-{$IF not DEFINED(USE_NANOGL)}
+{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
   glDeleteLists(e_TextureFonts[FontID].Base, 256);
 {$ENDIF}
   e_TextureFonts[FontID].Base := 0;
 end;
 
-{$IFDEF USE_NANOGL}
+{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
 procedure e_TextureFontDrawChar(ch: Char; FontID: DWORD);
   var
     index: Integer;
@@ -1629,7 +1626,7 @@ begin
   glBindTexture(GL_TEXTURE_2D, e_TextureFonts[FontID].TextureID);
   glEnable(GL_TEXTURE_2D);
   glTranslatef(x, y, 0);
-{$IFDEF USE_NANOGL}
+{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
   e_TextureFontDrawString(Text, FontID);
 {$ELSE}
   glListBase(DWORD(Integer(e_TextureFonts[FontID].Base)-32));
@@ -1651,7 +1648,7 @@ begin
   begin
    glColor4ub(0, 0, 0, 128);
    glTranslatef(X+1, Y+1, 0);
-{$IFDEF USE_NANOGL}
+{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
    e_TextureFontDrawChar(Ch, FontID);
 {$ELSE}
    glCallLists(1, GL_UNSIGNED_BYTE, @Ch);
@@ -1662,7 +1659,7 @@ begin
 
   glColor4ub(e_Colors.R, e_Colors.G, e_Colors.B, 255);
   glTranslatef(X, Y, 0);
-{$IFDEF USE_NANOGL}
+{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
   e_TextureFontDrawChar(Ch, FontID);
 {$ELSE}
   glCallLists(1, GL_UNSIGNED_BYTE, @Ch);
@@ -1689,11 +1686,12 @@ begin
   result := e_TextureFonts[FontID].CharWidth;
 end;
 
-procedure e_TextureFontPrintFmt(X, Y: GLint; Text: string; FontID: DWORD; Shadow: Boolean = False);
+procedure e_TextureFontPrintFmt(X, Y: GLint; Text: string; FontID: DWORD;
+                                Shadow: Boolean = False; Newlines: Boolean = False);
 var
   a, TX, TY, len: Integer;
   tc, c: TRGB;
-  w: Word;
+  w, h: Word;
 begin
   if e_NoGraphics then Exit;
   if Text = '' then Exit;
@@ -1709,13 +1707,14 @@ begin
   len := Length(Text);
 
   w := e_TextureFonts[FontID].CharWidth;
+  h := e_TextureFonts[FontID].CharHeight;
 
   with e_TextureFonts[FontID] do
   begin
     glBindTexture(GL_TEXTURE_2D, e_TextureFonts[FontID].TextureID);
     glEnable(GL_TEXTURE_2D);
 
-{$IF not DEFINED(USE_NANOGL)}
+{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
     glListBase(DWORD(Integer(e_TextureFonts[FontID].Base)-32));
 {$ENDIF}
 
@@ -1725,12 +1724,15 @@ begin
     for a := 1 to len do
     begin
       case Text[a] of
-        {#10: // line feed
+        #10: // line feed
         begin
-          TX := X;
-          TY := TY + h;
-          continue;
-        end;}
+          if Newlines then
+          begin
+            TX := X;
+            TY := TY + h;
+            continue;
+          end;
+        end;
         #1: // black
         begin
           c.R := 0; c.G := 0; c.B := 0;
@@ -1795,7 +1797,7 @@ begin
   glBindTexture(GL_TEXTURE_2D, e_TextureFonts[FontID].TextureID);
   glEnable(GL_TEXTURE_2D);
 
-{$IF not DEFINED(USE_NANOGL)}
+{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
   glListBase(DWORD(Integer(e_TextureFonts[FontID].Base)-32));
 {$ENDIF}
 
@@ -1807,7 +1809,7 @@ begin
    glColor4ub(0, 0, 0, 128);
    glTranslatef(x+1, y+1, 0);
    glScalef(Scale, Scale, 0);
-{$IFDEF USE_NANOGL}
+{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
    e_TextureFontDrawString(Text, FontID);
 {$ELSE}
    glCallLists(Length(Text), GL_UNSIGNED_BYTE, PChar(Text));
@@ -1819,7 +1821,7 @@ begin
   glColor4ub(Red, Green, Blue, 255);
   glTranslatef(x, y, 0);
   glScalef(Scale, Scale, 0);
-{$IFDEF USE_NANOGL}
+{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
   e_TextureFontDrawString(Text, FontID);
 {$ELSE}
   glCallLists(Length(Text), GL_UNSIGNED_BYTE, PChar(Text));
@@ -1852,7 +1854,7 @@ begin
  for i := 0 to High(e_TextureFonts) do
   if e_TextureFonts[i].Base <> 0 then
   begin
-{$IFNDEF USE_NANOGL}
+{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}  
    glDeleteLists(e_TextureFonts[i].Base, 256);
 {$ENDIF}
    e_TextureFonts[i].Base := 0;