X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_gui.pas;h=d7735ab374d568a4e51cf47c543f1a2c458d7522;hb=d3ce22f70dfe266676a3fb95d5193238ff5b9e72;hp=45b2364f8adba30e40aa89565fc3648bfd26e24a;hpb=6d6df4e3427cd01e03e172984c9d0d391ff38032;p=d2df-sdl.git diff --git a/src/game/g_gui.pas b/src/game/g_gui.pas index 45b2364..d7735ab 100644 --- a/src/game/g_gui.pas +++ b/src/game/g_gui.pas @@ -2775,10 +2775,9 @@ end; procedure TGUIMapPreview.SetMap(Res: string); var WAD: TWADFile; - //MapReader: TMapReader_1; - panels: TPanelsRec1Array; - header: TMapHeaderRec_1; - a: Integer; + panlist: TDynField; + pan: TDynRecord; + //header: TMapHeaderRec_1; FileName: string; Data: Pointer; Len: Integer; @@ -2815,48 +2814,36 @@ begin raise; end; - { - MapReader := TMapReader_1.Create(); - if not MapReader.LoadMap(Data) then - begin - FreeMem(Data); - MapReader.Free(); - FMapSize.X := 0; - FMapSize.Y := 0; - FScale := 0.0; - FMapData := nil; - Exit; - end; - } - FreeMem(Data); - panels := GetPanels(map); - header := GetMapHeader(map); + panlist := map.field['panel']; + //header := GetMapHeader(map); - FMapSize.X := header.Width div 16; - FMapSize.Y := header.Height div 16; + FMapSize.X := map.Width div 16; + FMapSize.Y := map.Height div 16; - rX := Ceil(header.Width / (MAPPREVIEW_WIDTH*256.0)); - rY := Ceil(header.Height / (MAPPREVIEW_HEIGHT*256.0)); + rX := Ceil(map.Width / (MAPPREVIEW_WIDTH*256.0)); + rY := Ceil(map.Height / (MAPPREVIEW_HEIGHT*256.0)); FScale := max(rX, rY); FMapData := nil; - if panels <> nil then - for a := 0 to High(panels) do - if WordBool(panels[a].PanelType and (PANEL_WALL or PANEL_CLOSEDOOR or + if (panlist <> nil) then + begin + for pan in panlist do + begin + if (pan.PanelType and (PANEL_WALL or PANEL_CLOSEDOOR or PANEL_STEP or PANEL_WATER or - PANEL_ACID1 or PANEL_ACID2)) then + PANEL_ACID1 or PANEL_ACID2)) <> 0 then begin SetLength(FMapData, Length(FMapData)+1); with FMapData[High(FMapData)] do begin - X1 := panels[a].X div 16; - Y1 := panels[a].Y div 16; + X1 := pan.X div 16; + Y1 := pan.Y div 16; - X2 := (panels[a].X + panels[a].Width) div 16; - Y2 := (panels[a].Y + panels[a].Height) div 16; + X2 := (pan.X + pan.Width) div 16; + Y2 := (pan.Y + pan.Height) div 16; X1 := Trunc(X1/FScale + 0.5); Y1 := Trunc(Y1/FScale + 0.5); @@ -2871,13 +2858,12 @@ begin Y2 := Y2 + 1; end; - PanelType := panels[a].PanelType; + PanelType := pan.PanelType; + end; end; - end; - - panels := nil; + end; + end; - //MapReader.Free(); map.Free(); end;