X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_items.pas;h=e81bdd4caa55ddb98fa3c877a8dacd0b4adfda5d;hb=6837a957a80cae5f212cc5a1447b2e7dac15c159;hp=1ee3fec1b60dd6f7490401081245f37770940e60;hpb=f899678def9ad87fd359763cade7910ad8e69a34;p=d2df-sdl.git diff --git a/src/game/g_items.pas b/src/game/g_items.pas index 1ee3fec..e81bdd4 100644 --- a/src/game/g_items.pas +++ b/src/game/g_items.pas @@ -19,7 +19,7 @@ interface uses SysUtils, Classes, - MAPDEF, g_textures, g_phys, g_saveload; + MAPDEF, g_phys, g_saveload; Type PItem = ^TItem; @@ -39,7 +39,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; @@ -91,12 +90,16 @@ var implementation -uses - Math, - g_basic, g_sound, g_gfx, g_map, r_textures, r_animations, - g_game, g_triggers, g_console, g_player, g_net, g_netmsg, - e_log, g_options, - g_grid, binheap, idpool, utils, xstreams; + uses + {$IFDEF ENABLE_GFX} + g_gfx, + {$ENDIF} + Math, + g_basic, g_sound, g_map, + g_game, g_triggers, g_console, g_player, g_net, g_netmsg, + e_log, g_options, + g_grid, binheap, idpool, utils, xstreams + ; // ////////////////////////////////////////////////////////////////////////// // var @@ -234,11 +237,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; @@ -262,7 +260,6 @@ begin it.slotIsUsed := false; it.arrIdx := i; it.ItemType := ITEM_NONE; - it.Animation := nil; it.alive := false; it.SpawnTrigger := -1; it.Respawnable := false; @@ -319,14 +316,9 @@ 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; @@ -364,7 +356,6 @@ begin it.Obj.Rect.Width := ITEMSIZE[ItemType][0]; it.Obj.Rect.Height := ITEMSIZE[ItemType][1]; - it.Animation := nil; it.SpawnTrigger := -1; // Êîîðäèíàòû îòíîñèòåëüíî öåíòðà íèæíåãî ðåáðà @@ -382,19 +373,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; @@ -416,8 +394,6 @@ end; procedure g_Items_Update (); var i, j, k: Integer; - ID: DWord; - Anim: TAnimation; m, ItemRespawnTime: Word; r, nxt: Boolean; begin @@ -511,14 +487,13 @@ begin if (RespawnTime = 0) and (not alive) then begin if not QuietRespawn then g_Sound_PlayExAt('SOUND_ITEM_RESPAWNITEM', InitX, InitY); - - if g_Frames_Get(ID, 'FRAMES_ITEM_RESPAWN') then - begin - Anim := TAnimation.Create(ID, False, 4); - g_GFX_OnceAnim(InitX+(Obj.Rect.Width div 2)-16, InitY+(Obj.Rect.Height div 2)-16, Anim); - Anim.Free(); - end; - + {$IFDEF ENABLE_GFX} + g_GFX_QueueEffect( + R_GFX_ITEM_RESPAWN, + InitX + (Obj.Rect.Width div 2) - 16, + InitY + (Obj.Rect.Height div 2) - 16 + ); + {$ENDIF} Obj.oldX := InitX; Obj.oldY := InitY; Obj.X := InitX; @@ -535,8 +510,6 @@ begin QuietRespawn := false; end; end; - - if (Animation <> nil) then Animation.Update(); end; end; end;