DEADSOFTWARE

GUI: MOTD field now has automatic height
[d2df-sdl.git] / src / game / g_basic.pas
index f6653a3126574ff91eb115f2af3dda260595b8e1..bd3f50e76b3f2049e0ce6d9b41d63db4da9c8cf8 100644 (file)
@@ -1,4 +1,4 @@
-(* Copyright (C)  DooM 2D:Forever Developers
+(* Copyright (C)  Doom 2D: Forever Developers
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -19,10 +19,12 @@ unit g_basic;
 interface
 
 uses
-  wadreader, g_phys;
+  utils, g_phys;
 
 const
   GAME_VERSION  = '0.667';
+  GAME_BUILDDATE = {$I %DATE%};
+  GAME_BUILDTIME = {$I %TIME%};
   UID_GAME    = 1;
   UID_PLAYER  = 2;
   UID_MONSTER = 3;
@@ -72,22 +74,23 @@ function Sign(A: Single): ShortInt; overload;
 function PointToRect(X, Y, X1, Y1: Integer; Width, Height: Word): Integer;
 function GetAngle(baseX, baseY, pointX, PointY: Integer): SmallInt;
 function GetAngle2(vx, vy: Integer): SmallInt;
-function GetLines(Text: string; FontID: DWORD; MaxWidth: Word): SArray;
-procedure Sort(var a: SArray);
+function GetLines(Text: string; FontID: DWORD; MaxWidth: Word): SSArray;
+procedure Sort(var a: SSArray);
 function Sscanf(const s: string; const fmt: string;
                 const Pointers: array of Pointer): Integer;
 function InDWArray(a: DWORD; arr: DWArray): Boolean;
 function InWArray(a: Word; arr: WArray): Boolean;
-function InSArray(a: string; arr: SArray): Boolean;
+function InSArray(a: string; arr: SSArray): Boolean;
 function GetPos(UID: Word; o: PObj): Boolean;
-function parse(s: string): SArray;
-function parse2(s: string; delim: Char): SArray;
+function parse(s: string): SSArray;
+function parse2(s: string; delim: Char): SSArray;
 function g_GetFileTime(fileName: String): Integer;
 function g_SetFileTime(fileName: String; time: Integer): Boolean;
-procedure SortSArray(var S: SArray);
+procedure SortSArray(var S: SSArray);
 function b_Text_Format(S: string): string;
 function b_Text_Unformat(S: string): string;
-
+function b_Text_Wrap(S: string; LineLen: Integer): string;
+function b_Text_LineCount(S: string): Integer;
 
 var
   gmon_dbg_los_enabled: Boolean = true;
@@ -626,7 +629,7 @@ begin
     end;
 end;
 
-{function GetLines(Text: string; MaxChars: Word): SArray;
+{function GetLines(Text: string; MaxChars: Word): SSArray;
 var
   a: Integer;
   b: array of string;
@@ -673,7 +676,7 @@ begin
  end;
 end;}
 
-function GetLines(Text: string; FontID: DWORD; MaxWidth: Word): SArray;
+function GetLines(Text: string; FontID: DWORD; MaxWidth: Word): SSArray;
 
 function TextLen(Text: string): Word;
 var
@@ -741,7 +744,7 @@ begin
   end;
 end;
 
-procedure Sort(var a: SArray);
+procedure Sort(var a: SSArray);
 var
   i, j: Integer;
   s: string;
@@ -934,7 +937,7 @@ begin
     end;
 end;
 
-function InSArray(a: string; arr: SArray): Boolean;
+function InSArray(a: string; arr: SSArray): Boolean;
 var
   b: Integer;
 begin
@@ -983,7 +986,7 @@ begin
   Result := True;
 end;
 
-function parse(s: String): SArray;
+function parse(s: String): SSArray;
 var
   a: Integer;
 begin
@@ -1009,7 +1012,7 @@ begin
   end;
 end;
 
-function parse2(s: string; delim: Char): SArray;
+function parse2(s: string; delim: Char): SSArray;
 var
   a: Integer;
 begin
@@ -1064,7 +1067,7 @@ begin
   CloseFile(F);
 end;
 
-procedure SortSArray(var S: SArray);
+procedure SortSArray(var S: SSArray);
 var
   b: Boolean;
   i: Integer;
@@ -1173,4 +1176,19 @@ begin
   end;
 end;
 
+function b_Text_Wrap(S: string; LineLen: Integer): string;
+begin
+  Result := WrapText(S, ''#10, [#10, ' ', '-'], LineLen);
+end;
+
+function b_Text_LineCount(S: string): Integer;
+var
+  I: Integer;
+begin
+  Result := IfThen(S = '', 0, 1);
+  for I := 1 to High(S) do
+    if S[I] = #10 then
+      Inc(Result);
+end;
+
 end.