DEADSOFTWARE

no more global `gItems[]` array; created DynTree for items (not used yet); also,...
[d2df-sdl.git] / src / game / g_basic.pas
index e1ce980bc548a2f5e0e7ed16a7f745daab755fe0..8430c9f98eecc88eba2aceba3096c4078e3f1704 100644 (file)
@@ -1,9 +1,25 @@
+(* 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
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *)
+{$INCLUDE ../shared/a_modes.inc}
 unit g_basic;
 
 interface
 
 uses
-  WADEDITOR, g_phys;
+  wadreader, g_phys;
 
 const
   GAME_VERSION  = '0.667';
@@ -32,7 +48,6 @@ function g_CollideAround(X1, Y1: Integer; Width1, Height1: Word;
                          X2, Y2: Integer; Width2, Height2: Word): Boolean;
 function g_CollidePlayer(X, Y: Integer; Width, Height: Word): Boolean;
 function g_CollideMonster(X, Y: Integer; Width, Height: Word): Boolean;
-function g_CollideItem(X, Y: Integer; Width, Height: Word): Boolean;
 function g_PatchLength(X1, Y1, X2, Y2: Integer): Word;
 function g_TraceVector(X1, Y1, X2, Y2: Integer): Boolean;
 function g_GetAcidHit(X, Y: Integer; Width, Height: Word): Byte;
@@ -86,6 +101,10 @@ begin
 end;
 
 function g_CollideLevel(X, Y: Integer; Width, Height: Word): Boolean;
+begin
+  result := g_Map_CollidePanel(X, Y, Width, Height, (PANEL_WALL or PANEL_CLOSEDOOR or PANEL_OPENDOOR), false);
+end;
+(*
 var
   a: Integer;
 begin
@@ -105,6 +124,7 @@ begin
       Exit;
     end;
 end;
+*)
 
 function g_CollidePlayer(X, Y: Integer; Width, Height: Word): Boolean;
 var
@@ -140,24 +160,6 @@ begin
       end;
 end;
 
-function g_CollideItem(X, Y: Integer; Width, Height: Word): Boolean;
-var
-  a: Integer;
-begin
-  Result := False;
-
-  if gItems = nil then
-    Exit;
-
-  for a := 0 to High(gItems) do
-    if gItems[a].Live then
-      if g_Obj_Collide(X, Y, Width, Height, @gItems[a].Obj) then
-        begin
-          Result := True;
-          Exit;
-        end;
-end;
-
 function g_TraceVector(X1, Y1, X2, Y2: Integer): Boolean;
 var
   i: Integer;
@@ -496,14 +498,14 @@ begin
   a := abs(vx);
   b := abs(vy);
 
-  if a = 0 then 
-    c := 0
-  else 
+  if a = 0 then
+    c := 90
+  else
     c := RadToDeg(ArcTan(b/a));
 
-  if vy < 0 then 
+  if vy < 0 then
     c := -c;
-  if vx > 0 then 
+  if vx > 0 then
     c := 180 - c;
 
   c := c + 180;
@@ -614,6 +616,7 @@ function GetStr(var Str: string): string;
 var
   a: Integer;
 begin
+  Result := '';
   for a := 1 to Length(Str) do
     if (a = Length(Str)) or (Str[a+1] = ' ') then
     begin
@@ -827,7 +830,7 @@ var
     begin
       while (fmt[m] = ' ') and (m < Length(fmt)) do
         Inc(m);
-      if (m >= Length(fmt)) then 
+      if (m >= Length(fmt)) then
         Break;
 
       if (fmt[m] = '%') then
@@ -852,6 +855,7 @@ begin
   n := 1;
   m := 1;
   Result := 0;
+  s1 := '';
 
   for i := 0 to High(Pointers) do
   begin
@@ -892,7 +896,7 @@ begin
         else
           Break;
       end;
-      
+
       else {case}
         Break;
     end; {case}
@@ -965,7 +969,7 @@ begin
 
       o^ := p.Obj;
     end;
-  
+
     UID_MONSTER:
     begin
       m := g_Monsters_Get(UID);