DEADSOFTWARE

gl: fix big texture flip on hardware with texture size limits
[d2df-sdl.git] / src / game / g_items.pas
index 33ab113df1c2552399ef7712825c7d43040a9c2a..8f369bb61926fe6247ee2c9c1923c334042110d2 100644 (file)
@@ -19,7 +19,10 @@ interface
 
 uses
   SysUtils, Classes,
-  MAPDEF, g_textures, g_phys, g_saveload;
+  MAPDEF, g_phys, g_saveload;
+
+const
+  ITEM_LAST = ITEM_MAX;
 
 Type
   PItem = ^TItem;
@@ -39,7 +42,6 @@ Type
     QuietRespawn: Boolean;
     SpawnTrigger: Integer;
     Obj: TObj;
-    Animation: TAnimationState;
     dropped: Boolean; // dropped from the monster? drops should be rendered after corpses, so zombie corpse will not obscure ammo container, for example
     NeedSend: Boolean;
 
@@ -83,9 +85,6 @@ type
 function g_Items_ForEachAlive (cb: TItemEachAliveCB; backwards: Boolean=false): Boolean;
 function g_Items_NextAlive (startIdx: Integer): PItem;
 
-var
-  gMaxDist: Integer = 1; // for sounds
-
   var (* private state *)
     ggItems: Array of TItem = nil;
 
@@ -98,7 +97,7 @@ implementation
     Math,
     g_basic, g_sound, g_map,
     g_game, g_triggers, g_console, g_player, g_net, g_netmsg,
-    e_log, g_options,
+    e_log, g_options, g_language, g_window,
     g_grid, binheap, idpool, utils, xstreams
   ;
 
@@ -204,6 +203,7 @@ const
 procedure g_Items_LoadData();
 begin
   e_WriteLog('Loading items data...', TMsgType.Notify);
+  g_Game_SetLoadingText(_lc[I_LOAD_ITEMS_DATA], 0, False);
 
   g_Sound_CreateWADEx('SOUND_ITEM_RESPAWNITEM', GameWAD+':SOUNDS\RESPAWNITEM');
   g_Sound_CreateWADEx('SOUND_ITEM_GETRULEZ', GameWAD+':SOUNDS\GETRULEZ');
@@ -238,11 +238,6 @@ begin
   if not it.slotIsUsed then raise Exception.Create('releaseItem: trying to release unallocated item (1)');
   if (it.arrIdx <> idx) then raise Exception.Create('releaseItem: arrIdx inconsistency');
   it.slotIsUsed := false;
-  if (it.Animation <> nil) then
-  begin
-    it.Animation.Free();
-    it.Animation := nil;
-  end;
   it.alive := False;
   it.SpawnTrigger := -1;
   it.ItemType := ITEM_NONE;
@@ -266,7 +261,6 @@ begin
     it.slotIsUsed := false;
     it.arrIdx := i;
     it.ItemType := ITEM_NONE;
-    it.Animation := nil;
     it.alive := false;
     it.SpawnTrigger := -1;
     it.Respawnable := false;
@@ -313,24 +307,14 @@ end;
 
 // ////////////////////////////////////////////////////////////////////////// //
 procedure g_Items_Init ();
-var
-  a, b: Integer;
 begin
-  if gMapInfo.Height > gPlayerScreenSize.Y then a := gMapInfo.Height-gPlayerScreenSize.Y else a := gMapInfo.Height;
-  if gMapInfo.Width > gPlayerScreenSize.X then b := gMapInfo.Width-gPlayerScreenSize.X else b := gMapInfo.Width;
-  gMaxDist := Trunc(Hypot(a, b));
 end;
 
 
 procedure g_Items_Free ();
-var
-  i: Integer;
 begin
   if (ggItems <> nil) then
-  begin
-    for i := 0 to High(ggItems) do ggItems[i].Animation.Free();
     ggItems := nil;
-  end;
   freeIds.clear();
 end;
 
@@ -368,7 +352,6 @@ begin
   it.Obj.Rect.Width := ITEMSIZE[ItemType][0];
   it.Obj.Rect.Height := ITEMSIZE[ItemType][1];
 
-  it.Animation := nil;
   it.SpawnTrigger := -1;
 
   // Êîîðäèíàòû îòíîñèòåëüíî öåíòðà íèæíåãî ðåáðà
@@ -386,19 +369,6 @@ begin
   it.Obj.oldX := it.Obj.X;
   it.Obj.oldY := it.Obj.Y;
 
-  // Óñòàíîâêà àíèìàöèè
-  case it.ItemType of
-    ITEM_ARMOR_GREEN: it.Animation := TAnimationState.Create(True, 20, 3);
-    ITEM_ARMOR_BLUE: it.Animation := TAnimationState.Create(True, 20, 3);
-    ITEM_JETPACK: it.Animation := TAnimationState.Create(True, 15, 3);
-    ITEM_SPHERE_BLUE: it.Animation := TAnimationState.Create(True, 15, 4);
-    ITEM_SPHERE_WHITE: it.Animation := TAnimationState.Create(True, 20, 4);
-    ITEM_INVUL: it.Animation := TAnimationState.Create(True, 20, 4);
-    ITEM_INVIS: it.Animation := TAnimationState.Create(True, 20, 4);
-    ITEM_BOTTLE: it.Animation := TAnimationState.Create(True, 20, 4);
-    ITEM_HELMET: it.Animation := TAnimationState.Create(True, 20, 4);
-  end;
-
   it.positionChanged();
 
   result := find_id;
@@ -536,8 +506,6 @@ begin
           QuietRespawn := false;
         end;
       end;
-
-      if (Animation <> nil) then Animation.Update();
     end;
   end;
 end;