X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_map.pas;h=85bffa627423e79bb74a14354eb8464edd4ac714;hb=a3ffbadf19a1f613bf10d6bf5205267b591c1752;hp=5ce07e652b3a3d912d9dc66752e7f62fbd7b7e6b;hpb=6cdd36d2fb73f13be7b6ea1870a8b3b0817b37f1;p=d2df-sdl.git diff --git a/src/game/g_map.pas b/src/game/g_map.pas index 5ce07e6..85bffa6 100644 --- a/src/game/g_map.pas +++ b/src/game/g_map.pas @@ -20,7 +20,7 @@ interface uses SysUtils, Classes, mempool, - g_base, g_basic, MAPDEF, g_textures, + g_base, g_basic, MAPDEF, g_phys, utils, g_panel, g_grid, md5, binheap, xprofiler, xparser, xdynrec; type @@ -152,6 +152,7 @@ const FLAG_RED = 1; FLAG_BLUE = 2; FLAG_DOM = 3; + FLAG_LAST = FLAG_DOM; FLAG_STATE_NONE = 0; FLAG_STATE_NORMAL = 1; @@ -196,15 +197,6 @@ const GridDrawableMask = (GridTagBack or GridTagStep or GridTagWall or GridTagDoor or GridTagAcid1 or GridTagAcid2 or GridTagWater or GridTagFore); - -type - TBinHeapPanelDrawCmp = class - public - class function less (const a, b: TPanel): Boolean; inline; - end; - - TBinHeapPanelDraw = specialize TBinaryHeapBase; - var gWalls: TPanelArray; gRenderBackgrounds: TPanelArray; @@ -225,7 +217,6 @@ var gdbg_map_use_accel_render: Boolean = true; gdbg_map_use_accel_coldet: Boolean = true; profMapCollision: TProfiler = nil; //WARNING: FOR DEBUGGING ONLY! - gDrawPanelList: TBinHeapPanelDraw = nil; // binary heap of all walls we have to render, populated by `g_Map_CollectDrawPanels()` gCurrentMap: TDynRecord = nil; gCurrentMapFileName: AnsiString = ''; // so we can skip texture reloading @@ -517,14 +508,6 @@ begin end; end; - -class function TBinHeapPanelDrawCmp.less (const a, b: TPanel): Boolean; inline; -begin - if (a.tag < b.tag) then begin result := true; exit; end; - if (a.tag > b.tag) then begin result := false; exit; end; - result := (a.arrIdx < b.arrIdx); -end; - var TextNameHash: THashStrInt = nil; // key: texture name; value: index in `Textures` BadTextNameHash: THashStrInt = nil; // set; so we won't spam with non-existing texture messages @@ -976,11 +959,10 @@ end; function CreateTexture (RecName: AnsiString; Map: String; log: Boolean): Integer; var HName: AnsiString; - WAD, WADz: TWADFile; + WAD: TWADFile; WADName, ResName: String; - ResData, ReszData: Pointer; - ResLen, ReszLen: Integer; - cfg: TConfig; + ResData: Pointer; + ResLen: Integer; id: Integer; begin Result := -1; @@ -1017,40 +999,13 @@ end; begin if WAD.GetResource(ResName, ResData, ResLen, log) then begin - if IsWadData(ResData, ResLen) then - begin - WADz := TWADFile.Create(); - if WADz.ReadMemory(ResData, ResLen) then - begin - if WADz.GetResource('TEXT/ANIM', ReszData, ReszLen) then - begin - cfg := TConfig.CreateMem(ReszData, ReszLen); - if cfg <> nil then - begin - SetLength(Textures, Length(Textures) + 1); - Textures[High(Textures)].TextureName := RecName; - Textures[High(Textures)].FullName := WadName + ':' + ResName; - Textures[High(Textures)].FramesCount := cfg.ReadInt('', 'framecount', 0); - Textures[High(Textures)].Speed := cfg.ReadInt('', 'waitcount', 0); - Result := High(Textures); - TextNameHash.put(HName, result); - cfg.Free; - end; - FreeMem(ReszData); - end - end; - WADz.Free; - end - else - begin - SetLength(Textures, Length(Textures) + 1); - Textures[High(Textures)].FullName := WADName + ':' + ResName; - Textures[High(Textures)].TextureName := RecName; - Result := High(Textures); - TextNameHash.put(HName, result); - end; + SetLength(Textures, Length(Textures) + 1); + Textures[High(Textures)].FullName := WADName + ':' + ResName; + Textures[High(Textures)].TextureName := RecName; + Result := High(Textures); + TextNameHash.put(HName, result); FreeMem(ResData); - end + end; end; WAD.Free; end @@ -2618,7 +2573,7 @@ begin tp := g_Map_PanelByGUID(pguid); if (tp = nil) then exit; tp.NextTexture(AnimLoop); - if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelTexture(pguid, AnimLoop); + if g_Game_IsServer and g_Game_IsNet then MH_SEND_PanelTexture(pguid); end;