X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_items.pas;h=360aa7dec914f1806f850ab7e78000a126c15600;hb=04a627f372ad5aa1faf4b4b04b3f400c6f37329f;hp=a69ceaaf811bd9f84f5b07ec41b0e6e2fcf11537;hpb=176b2c983b32841d4d93dd322f3b3a5d1f1549b2;p=d2df-sdl.git diff --git a/src/game/g_items.pas b/src/game/g_items.pas index a69ceaa..360aa7d 100644 --- a/src/game/g_items.pas +++ b/src/game/g_items.pas @@ -47,6 +47,7 @@ Type procedure getMapBox (out x, y, w, h: Integer); inline; procedure moveBy (dx, dy: Integer); inline; + property used: Boolean read slotIsUsed; property myid: Integer read arrIdx; end; @@ -59,8 +60,6 @@ function g_Items_Create(X, Y: Integer; ItemType: Byte; procedure g_Items_SetDrop (ID: DWORD); procedure g_Items_PreUpdate(); procedure g_Items_Update(); -procedure g_Items_Draw(); -procedure g_Items_DrawDrop(); procedure g_Items_Pick(ID: DWORD); procedure g_Items_Remove(ID: DWORD); procedure g_Items_SaveState (st: TStream); @@ -88,20 +87,18 @@ var gItemsTexturesID: Array [1..ITEM_MAX] of DWORD; gMaxDist: Integer = 1; // for sounds + var (* private state *) + ggItems: Array of TItem = nil; + implementation uses Math, - g_basic, e_graphics, g_sound, g_main, g_gfx, g_map, + g_basic, g_sound, g_gfx, g_map, g_game, g_triggers, g_console, g_player, g_net, g_netmsg, - e_log, + e_log, g_options, g_grid, binheap, idpool, utils, xstreams; - -var - ggItems: Array of TItem = nil; - - // ////////////////////////////////////////////////////////////////////////// // var freeIds: TIdPool = nil; @@ -669,60 +666,6 @@ begin end; end; - -procedure itemsDrawInternal (dropflag: Boolean); -var - i, fX, fY: Integer; - it: PItem; -begin - if (ggItems = nil) then exit; - - for i := 0 to High(ggItems) do - begin - it := @ggItems[i]; - if (not it.slotIsUsed) or (it.ItemType = ITEM_NONE) then continue; // just in case - if not it.alive then continue; - if (it.dropped <> dropflag) then continue; - - with it^ do - begin - if g_Collide(Obj.X, Obj.Y, Obj.Rect.Width, Obj.Rect.Height, sX, sY, sWidth, sHeight) then - begin - Obj.lerp(gLerpFactor, fX, fY); - if (Animation = nil) then - begin - e_Draw(gItemsTexturesID[ItemType], fX, fY, 0, true, false); - end - else - begin - Animation.Draw(fX, fY, TMirrorType.None); - end; - - if g_debug_Frames then - begin - e_DrawQuad(Obj.X+Obj.Rect.X, - Obj.Y+Obj.Rect.Y, - Obj.X+Obj.Rect.X+Obj.Rect.Width-1, - Obj.Y+Obj.Rect.Y+Obj.Rect.Height-1, - 0, 255, 0); - end; - end; - end; - end; -end; - - -procedure g_Items_Draw (); -begin - itemsDrawInternal(false); -end; - -procedure g_Items_DrawDrop (); -begin - itemsDrawInternal(true); -end; - - procedure g_Items_SetDrop (ID: DWORD); begin if (ID < Length(ggItems)) then