Changeset 245 for oup


Ignore:
Timestamp:
Aug 18, 2007, 5:51:42 PM (17 years ago)
Author:
alloc
Message:
 
Location:
oup/current
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • oup/current/FileClasses/AKEV.pas

    r233 r245  
    1818
    1919procedure TFile_AKEV.InitDataFields;
    20 var
    21   tempi: Integer;
    2220begin
    2321  inherited;
    24   FDataFields := TBlock.Create(Self, nil, 0, 'Base', '', nil);
     22  FDataFields := TBlock.Create(Self, nil, 'Base', '', []);
    2523  with FDataFields do
    2624  begin
    27     AddField(TFileID, $00, 'FileID', '', nil);
    28     AddField(TLevelID, $04, 'LevelID', '', nil);
     25    AddField(TFileID, 'FileID', '', []);
     26    AddField(TLevelID, 'LevelID', '', []);
     27
     28    AddField(TLinkByID, 'PNTA-link', 'Link to the 3D Point Array', ['PNTA']);
     29    AddField(TLinkByID, 'PLEA-link', 'Link to the Plane Equation Array', ['PLEA']);
     30    AddField(TLinkByID, 'TXCA-link', 'Link to the Texture Coordinate Array', ['TXCA']);
     31    AddField(TLinkByID, 'AGQG-link', 'Link to the Gunk Quad General Array', ['AGQG']);
     32
     33    AddField(TLinkByID, 'AGQR-link', 'Link to the Gunk Quad Render Array', ['AGQR']);
     34    AddField(TLinkByID, 'AGQC-link', 'Link to the Gunk Quad Collision Array', ['AGQC']);
     35    AddField(TLinkByID, 'AGDB-link', 'Link to the Gunk Quad Debug Array', ['AGDB']);
     36    AddField(TLinkByID, 'TXMA-link', 'Link to the Texture Map Array', ['TXMA']);
     37
     38    AddField(TLinkByID, 'AKVA-link', 'Link to the BNV Node Array', ['AKVA']);
     39    AddField(TLinkByID, 'AKBA-link', 'Link to the Side Array', ['AKBA']);
     40    AddField(TLinkByID, 'IDXA-link', 'Link to the Index Array', ['IDXA']);
     41    AddField(TLinkByID, 'IDXA-link', 'Link to the Index Array', ['IDXA']);
     42
     43    AddField(TLinkByID, 'AKBP-link', 'Link to the BSP Node Array', ['AKBP']);
     44    AddField(TLinkByID, 'ABNA-link', 'Link to the BSP Tree Node Array', ['ABNA']);
     45    AddField(TLinkByID, 'AKOT-link', 'Link to the Oct Tree', ['AKOT']);
     46    AddField(TLinkByID, 'AKAA-link', 'Link to the Adjacency Array', ['AKAA']);
     47
     48    AddField(TLinkByID, 'AKDA-link', 'Link to the Door Frame Array', ['AKDA']);
     49
     50
     51    AddField(TFloat, 'Neg. x-coordinate', 'Maximal negative x-coordinate of the level model', []);
     52    AddField(TFloat, 'Neg. y-coordinate', 'Maximal negative y-coordinate of the level model', []);
     53    AddField(TFloat, 'Neg. z-coordinate', 'Maximal negative z-coordinate of the level model', []);
     54
     55    AddField(TFloat, 'Pos. x-coordinate', 'Maximal positive x-coordinate of the level model', []);
     56    AddField(TFloat, 'Pos. y-coordinate', 'Maximal positive y-coordinate of the level model', []);
     57    AddField(TFloat, 'Pos. z-coordinate', 'Maximal positive z-coordinate of the level model', []);
     58
     59    AddField(TUnused, 'Not used', '', [1024]);
     60    AddField(TFloat, 'Unknown', 'Unknown; maybe the tolerance', []);
    2961  end;
     62  FDataFields.Update(0, -1);
    3063  FFileStream.Free;
    3164  FFileStream := nil;
  • oup/current/FileClasses/BINA.pas

    r233 r245  
    44
    55uses
    6   _FileTypes;
     6  _FileTypes, Grids;
    77
    88type
    99  TFile_BINA = class(TFile)
     10      procedure SetOpened(Opened: Boolean); override;
     11    private
     12      maintype: String;
     13      subtype: String;
     14      grid: TStringGrid;
     15(*      panel: TPanel;
     16      save: TButton; *)
     17      procedure saveclick(Sender: TObject);
    1018    public
    1119      procedure InitDataFields; override;
     20      procedure InitEditor; override;
    1221  end;
    1322
     
    1524
    1625uses
    17   ConnectionManager, Math, Classes, TypeDefs, _DataTypes, Forms, StdCtrls;
     26  ConnectionManager, Math, Classes, TypeDefs, _DataTypes, Forms, StdCtrls,
     27  Controls, StrUtils, Functions, SysUtils;
    1828
    1929procedure TFile_BINA.InitDataFields;
    20 var
    21   tempi: Integer;
    2230begin
    2331  inherited;
    24   FDataFields := TBlock.Create(Self, nil, 0, 'Base', '', nil);
     32  FDataFields := TBlock.Create(Self, nil, 'Base', '', []);
    2533  with FDataFields do
    2634  begin
    27     AddField(TFileID, $00, 'FileID', '', nil);
    28     AddField(TLevelID, $04, 'LevelID', '', nil);
    29   end;
     35    AddField(TFileID, 'FileID', '', []);
     36    AddField(TLevelID, 'LevelID', '', []);
     37
     38    AddField(TInt, 'RawSize', 'Size of the part in the raw file', [4]);
     39    AddField(TRawLink, 'RawOffset', 'At this position starts the part in the raw/sep file', []);
     40
     41    AddField(TUnused, 'Not used', '', [16]);
     42  end;
     43  FDataFields.Update(0, -1);
    3044  FFileStream.Free;
    3145  FFileStream := nil;
    3246end;
    3347
     48procedure TFile_BINA.InitEditor;
     49var
     50  subsize: Integer;
     51begin
     52  CacheAllRawFiles;
     53  SetLength(maintype, 4);
     54  FRawCaches[0].RawStream.Read(maintype[1], 4);
     55  maintype := ReverseString(maintype);
     56  if maintype = 'OBJC' then
     57  begin
     58    FRawCaches[0].RawStream.Seek($0C, soFromBeginning);
     59    FRawCaches[0].RawStream.Read(subsize, 4);
     60    if subsize > 0 then
     61    begin
     62      SetLength(subtype, 4);
     63      FRawCaches[0].RawStream.Seek($10, soFromBeginning);
     64      FRawCaches[0].RawStream.Read(subtype[1], 4);
     65      subtype := ReverseString(subtype);
     66      if subtype = 'CHAR' then
     67      begin
     68      end
     69      else if subtype = 'CMBT' then
     70      begin
     71      end
     72      else if subtype = 'CONS' then
     73      begin
     74      end
     75      else if subtype = 'DOOR' then
     76      begin
     77      end
     78      else if subtype = 'FLAG' then
     79      begin
     80      end
     81      else if subtype = 'FURN' then
     82      begin
     83      end
     84      else if subtype = 'MELE' then
     85      begin
     86      end
     87      else if subtype = 'NEUT' then
     88      begin
     89      end
     90      else if subtype = 'PART' then
     91      begin
     92      end
     93      else if subtype = 'PATR' then
     94      begin
     95      end
     96      else if subtype = 'PWRU' then
     97      begin
     98      end
     99      else if subtype = 'SNDG' then
     100      begin
     101      end
     102      else if subtype = 'TRGV' then
     103      begin
     104        FEditor := TFrame.Create(nil);
     105        grid := TStringGrid.Create(FEditor);
     106        grid.Align := alClient;
     107        grid.DefaultRowHeight := 18;
     108        grid.DefaultColWidth := 100;
     109        grid.ColCount := 8;
     110        grid.RowCount := 2;
     111        grid.FixedRows := 1;
     112        grid.FixedCols := 0;
     113        grid.ColWidths[0] := 150;
     114        grid.ColWidths[1] := 125;
     115        grid.ColWidths[2] := 125;
     116        grid.ColWidths[3] := 125;
     117        grid.Cells[0, 0] := 'TrgName';
     118        grid.Cells[1, 0] := 'FuncName Enter';
     119        grid.Cells[2, 0] := 'FuncName Inside';
     120        grid.Cells[3, 0] := 'FuncName Leave';
     121        grid.Cells[4, 0] := 'Teams';
     122        grid.Cells[5, 0] := 'Settings';
     123        grid.Cells[6, 0] := 'X, Y, Z';
     124        grid.Cells[7, 0] := 'Size X, Y, Z';
     125        grid.Options := [goColSizing,goEditing,
     126            goVertLine,goHorzLine,goFixedVertLine,goFixedHorzLine];
     127        grid.Parent := FEditor;
     128      end
     129      else if subtype = 'TRIG' then
     130      begin
     131      end
     132      else if subtype = 'TURR' then
     133      begin
     134      end
     135      else if subtype = 'WEAP' then
     136      begin
     137      end;
     138    end;
     139  end
     140  else if maintype = 'ONIE' then
     141  begin
     142  end
     143  else if maintype = 'PAR3' then
     144  begin
     145  end
     146  else if maintype = 'SABD' then
     147  begin
     148  end
     149  else if maintype = 'TMBD' then
     150  begin
     151  end;
     152
     153  DiscardAllRawCaches;
     154
     155(*
     156  panel := TPanel.Create(FEditor);
     157  panel.Align := alBottom;
     158  panel.Height := 30;
     159  panel.Parent := FEditor;
     160  save := TButton.Create(panel);
     161  save.Top := 2;
     162  save.Left := 2;
     163  save.Width := 100;
     164  save.Height := 26;
     165  save.Caption := 'Save';
     166  save.OnClick := saveclick;
     167  save.Parent := panel;    *)
     168end;
     169
     170procedure TFile_BINA.saveclick(Sender: TObject);
     171var
     172  i,j: Integer;
     173  temps: String;
     174  fs: TFileStream;
     175  offset: Integer;
     176begin
     177(*  fs := TFileStream.Create('C:\Spiele\Oni\GameDataFolder\tests\messages_raw_recreated.hex', fmCreate);
     178
     179  i := grid.RowCount - 2;
     180  FFileStream.Seek($1C, soFromBeginning);
     181  FFileStream.Write(i, 4);
     182  FFileStream.Size := $20 + i * 4;
     183 
     184  for i := 0 to grid.RowCount - 2 do
     185  begin
     186    for j := 0 to 1 do
     187    begin
     188      if j = 0 then
     189      begin
     190        offset := fs.Size;
     191        FFileStream.Seek($20 + i*4, soFromBeginning);
     192        FFileStream.Write(offset, 4);
     193      end;
     194      temps := grid.Cells[j, i+1];
     195      SetLength(temps, Length(temps)+1);
     196      temps[Length(temps)] := #0;
     197      fs.Write(temps[1], Length(temps));
     198    end;
     199  end;
     200  fs.Free;
     201  fs := TFileStream.Create('C:\Spiele\Oni\GameDataFolder\tests\messages_dat_recreated.hex', fmCreate);
     202  ReCreateFile(fs);
     203  fs.Free;
     204*)end;
     205
     206
     207procedure TFile_BINA.SetOpened(Opened: Boolean);
     208var
     209  i: Integer;
     210  cursize: Integer;
     211  curoffset: Integer;
     212  raw: TMemoryStream;
     213  tempi: Integer;
     214  temps: String;
     215  j: Integer;
     216  tempf: Single;
     217begin
     218  inherited;
     219  if Opened then
     220  begin
     221    CacheAllRawFiles;
     222    raw := FRawCaches[0].RawStream;
     223
     224    if maintype = 'OBJC' then
     225    begin
     226      if subtype = 'TRGV' then
     227      begin
     228        i := 0;
     229        curoffset := $0C;
     230        raw.Seek(curoffset, soFromBeginning);
     231        raw.Read(cursize, 4);
     232
     233        while cursize > 0 do
     234        begin
     235          Inc(i);
     236          grid.RowCount := 1 + i;
     237          grid.Cells[0, i] := ReadString(raw, curoffset + 4 + $24);
     238          grid.Cells[1, i] := ReadString(raw, curoffset + 4 + $63);
     239          grid.Cells[2, i] := ReadString(raw, curoffset + 4 + $83);
     240          grid.Cells[3, i] := ReadString(raw, curoffset + 4 + $A3);
     241
     242          raw.Seek(curoffset + 4 + $C3, soFromBeginning);
     243          tempi := 0;
     244          raw.Read(tempi, 1);
     245          if tempi > 0 then
     246          begin
     247            temps := '';
     248            for j := 0 to 7 do
     249            begin
     250              if tempi and (1 shl j) > 0 then
     251              begin
     252                if Length(temps) > 0 then
     253                  temps := temps + ', ' + IntToStr(1 shl j)
     254                else
     255                  temps := IntToStr(1 shl j);
     256              end;
     257            end;
     258          end
     259          else
     260            temps := '0';
     261          grid.Cells[4, i] := temps;
     262
     263          raw.Seek(curoffset + 4 + $15C, soFromBeginning);
     264          tempi := 0;
     265          raw.Read(tempi, 1);
     266          if tempi > 0 then
     267          begin
     268            temps := '';
     269            for j := 0 to 7 do
     270            begin
     271              if tempi and (1 shl j) > 0 then
     272              begin
     273                if Length(temps) > 0 then
     274                  temps := temps + ', ' + IntToStr(1 shl j)
     275                else
     276                  temps := IntToStr(1 shl j);
     277              end;
     278            end;
     279          end
     280          else
     281            temps := '0';
     282          grid.Cells[5, i] := temps;
     283
     284          raw.Seek(curoffset + 4 + $0C, soFromBeginning);
     285          raw.Read(tempf, 4);
     286          temps := FormatFloat('#0', tempf);
     287          raw.Seek(curoffset + 4 + $10, soFromBeginning);
     288          raw.Read(tempf, 4);
     289          temps := temps + ', ' + FormatFloat('#0', tempf);
     290          raw.Seek(curoffset + 4 + $14, soFromBeginning);
     291          raw.Read(tempf, 4);
     292          temps := temps + ', ' + FormatFloat('#0', tempf);
     293          grid.Cells[6, i] := temps;
     294
     295          raw.Seek(curoffset + 4 + $C7, soFromBeginning);
     296          raw.Read(tempf, 4);
     297          temps := FormatFloat('#0', tempf);
     298          raw.Seek(curoffset + 4 + $CB, soFromBeginning);
     299          raw.Read(tempf, 4);
     300          temps := temps + ', ' + FormatFloat('#0', tempf);
     301          raw.Seek(curoffset + 4 + $CF, soFromBeginning);
     302          raw.Read(tempf, 4);
     303          temps := temps + ', ' + FormatFloat('#0', tempf);
     304          grid.Cells[7, i] := temps;
     305
     306          curoffset := curoffset + cursize + 4;
     307          raw.Seek(curoffset, soFromBeginning);
     308          raw.Read(cursize, 4);
     309        end;
     310      end;
     311    end;
     312  end else
     313  begin
     314    Exit;
     315  end;
     316end;
    34317
    35318end.
  • oup/current/FileClasses/SUBT.pas

    r241 r245  
    129129  begin
    130130    CacheFile;
    131     CacheRawFile($18);
     131    CacheAllRawFiles;
    132132
    133133    FFileStream.Seek($1C, soFromBeginning);
     
    144144          FFileStream.Seek($20 + i*4, soFromBeginning);
    145145          FFileStream.Read(offset, 4);
    146           FRawCaches[0].Seek(offset, soFromBeginning);
     146          FRawCaches[0].RawStream.Seek(offset, soFromBeginning);
    147147        end;
    148148        SetLength(temps, 200);
     
    150150        repeat
    151151          Inc(pos);
    152           FRawCaches[0].Read(temps[pos], 1);
     152          FRawCaches[0].RawStream.Read(temps[pos], 1);
    153153        until temps[pos] = #0;
    154154        SetLength(temps, pos - 1);
  • oup/current/FileClasses/_FileTypes.pas

    r241 r245  
    88
    99type
     10  TRawCache = record
     11    DatOffset: Integer;
     12    RawStream: TMemoryStream;
     13  end;
     14
    1015  TFile = class(TTreeElement)
    1116    protected
    1217      FFileInfo: TFileInfo;
    1318      FFileStream: TMemoryStream;
    14       FRawCaches: array of TMemoryStream;
     19      FRawCaches: array of TRawCache;
    1520
    1621      FCached: Boolean;
     
    2833      function GetEditor: TFrame;
    2934      function GetFieldByOffset(Offset: Integer): TDataField;
     35      function GetRawCacheID(Offset: Integer): Integer;
    3036      procedure SetOpened(Opened: Boolean); virtual;
    3137    published
     
    4147      procedure CacheFile;
    4248      procedure CacheRawFile(Offset: Integer);
     49      procedure CacheAllRawFiles;
     50      procedure DiscardFileCache;
     51      procedure DiscardRawCache(Offset: Integer);
     52      procedure DiscardAllRawCaches;
     53      procedure StoreFileCache;
     54      procedure StoreRawCache(Offset: Integer);
     55      procedure StoreAllRawCaches;
    4356
    4457      property FileStream: TMemoryStream read FFileStream;
     
    7992procedure TFile.CacheRawFile(Offset: Integer);
    8093var
    81   rawlist: TRawDataList;
    82   i: Integer;
    83 begin
    84   rawlist := ConManager.Connection[ConnectionID].GetRawList(FFileInfo.ID);
    85   if Length(rawlist) > 0 then
     94  i: Integer;
     95begin
     96  for i := 0 to High(FRawCaches) do
    8697  begin
    87     for i := 0 to High(rawlist) do
     98    if FRawCaches[i].DatOffset = Offset then
    8899    begin
    89       if rawlist[i].SrcOffset = Offset then
     100      if not Assigned(FRawCaches[i].RawStream) then
    90101      begin
    91         if not Assigned(FRawCaches[i]) then
    92         begin
    93           FRawCaches[i] := TMemoryStream.Create;
    94           ConManager.Connection[ConnectionID].LoadRawFile(FFileInfo.ID, Offset, TStream(FRawCaches[i]));
    95         end;
     102        FRawCaches[i].RawStream := TMemoryStream.Create;
     103        ConManager.Connection[ConnectionID].LoadRawFile(FFileInfo.ID, Offset, TStream(FRawCaches[i].RawStream));
    96104      end;
    97105    end;
     
    99107end;
    100108
     109procedure TFile.CacheAllRawFiles;
     110var
     111  i: Integer;
     112begin
     113  for i := 0 to High(FRawCaches) do
     114    CacheRawFile(FRawCaches[i].DatOffset);
     115end;
     116
     117
     118
     119procedure TFile.DiscardFileCache;
     120begin
     121  if Assigned(FFileStream) then
     122    FFileStream.Free;
     123  FFileStream := nil;
     124end;
     125
     126procedure TFile.DiscardRawCache(Offset: Integer);
     127var
     128  i: Integer;
     129begin
     130  for i := 0 to High(FRawCaches) do
     131  begin
     132    if FRawCaches[i].DatOffset = Offset then
     133    begin
     134      if Assigned(FRawCaches[i].RawStream) then
     135        FRawCaches[i].RawStream.Free;
     136      FRawCaches[i].RawStream := nil;
     137    end;
     138  end;
     139end;
     140
     141procedure TFile.DiscardAllRawCaches;
     142var
     143  i: Integer;
     144begin
     145  for i := 0 to High(FRawCaches) do
     146    DiscardRawCache(FRawCaches[i].DatOffset);
     147end;
     148
     149procedure TFile.StoreFileCache;
     150begin
     151  Exit;
     152end;
     153
     154procedure TFile.StoreRawCache(Offset: Integer);
     155begin
     156  Exit;
     157end;
     158
     159procedure TFile.StoreAllRawCaches;
     160var
     161  i: Integer;
     162begin
     163  for i := 0 to High(FRawCaches) do
     164    StoreRawCache(FRawCaches[i].DatOffset);
     165end;
     166
     167
     168
     169
    101170
    102171procedure TFile.SetOpened(Opened: Boolean);
     
    107176
    108177constructor TFile.Create(ConnectionID, FileID: Integer);
     178var
     179  rawlist: TRawDataList;
     180  i: Integer;
    109181begin
    110182  FConnectionID := ConnectionID;
    111183  FFileInfo := ConManager.Connection[ConnectionID].GetFileInfo(FileID);
    112184
    113   SetLength(FRawCaches, Length(ConManager.Connection[ConnectionID].GetRawList(FileID)));
     185  rawlist := ConManager.Connection[ConnectionID].GetRawList(FileID);
     186  SetLength(FRawCaches, Length(rawlist));
     187  for i := 0 to High(rawlist) do
     188    FRawCaches[i].DatOffset := rawlist[i].SrcOffset;
    114189
    115190  FCached := False;
     
    135210end;
    136211
     212
     213function TFile.GetRawCacheID(Offset: Integer): Integer;
     214var
     215  i: Integer;
     216begin
     217  Result := -1;
     218  for i := 0 to High(FRawCaches) do
     219    if FRawCaches[i].DatOffset = Offset then
     220      Result := i;
     221end;
    137222
    138223function TFile.GetType: String;
  • oup/current/FileClasses/_MetaTypes.pas

    r241 r245  
    55uses
    66  _FileTypes, _EmptyFile, _DataTypes, _Extensions, _TreeElement,
    7   AKVA, SUBT, TXAN, TXMP;
     7  AKEV, AKVA, BINA, SUBT, TXAN, TXMP;
    88//  ABNA, AGDB, AGQC, AGQG, AGQM, AGQR, AISA, AITR, AIWA, AKAA, AKBA, AKBP, AKDA,
    99//  AKEV, AKOT, AKVA, BINA, CBPI, CBPM, CONS, CRSA, DOOR, DPge, EDIA, ENVP, FILM,
     
    4646
    4747const
    48   FileDescs: array[0..3] of TFileDesc = (
     48  FileDescs: array[0..5] of TFileDesc = (
     49    (ext: 'AKEV'; ftype: TFile_AKEV),
    4950    (ext: 'AKVA'; ftype: TFile_AKVA),
     51    (ext: 'BINA'; ftype: TFile_BINA),
    5052    (ext: 'SUBT'; ftype: TFile_SUBT),
    5153    (ext: 'TXAN'; ftype: TFile_TXAN),
  • oup/current/Global/Functions.pas

    r113 r245  
    1515function MakeDatLink(FileID: Integer): Integer;
    1616
     17function ReadString(Stream: TStream; Offset: Integer): String;
     18
    1719function StringSmaller(string1, string2: String): Boolean;
    1820
     
    142144begin
    143145  Result := FileID * 256 + 1;
     146end;
     147
     148
     149
     150
     151function ReadString(Stream: TStream; Offset: Integer): String;
     152var
     153  i: Integer;
     154  c: Char;
     155begin
     156  if Assigned(Stream) then
     157  begin
     158    if Offset >= 0 then
     159    begin
     160      Result := '';
     161      Stream.Seek(Offset, soFromBeginning);
     162      repeat
     163        Stream.Read(c, 1);
     164        if Ord(c) > 0 then
     165          Result := Result + c;
     166      until Ord(c) = 0;
     167    end;
     168  end;
    144169end;
    145170
  • oup/current/OniUnPacker.dpr

    r241 r245  
    2828  _MetaManager in 'FileClasses\_MetaManager.pas',
    2929  _EmptyFile in 'FileClasses\_EmptyFile.pas',
     30  AKEV in 'FileClasses\AKEV.pas',
     31  AKVA in 'FileClasses\AKVA.pas',
     32  BINA in 'FileClasses\BINA.pas',
     33  SUBT in 'FileClasses\SUBT.pas',
     34  TXAN in 'FileClasses\TXAN.pas',
    3035  TXMP in 'FileClasses\TXMP.pas',
    31   TXAN in 'FileClasses\TXAN.pas',
    32   AKVA in 'FileClasses\AKVA.pas',
    33   SUBT in 'FileClasses\SUBT.pas',
    3436  _BaseTemplate in 'Tools\_BaseTemplate.pas' {Form_BaseTemplate},
    3537  _TemplateFile in 'Tools\_TemplateFile.pas' {Form_TemplateFile},
  • oup/current/Tools/BinEdit.dfm

    r241 r245  
    11inherited Form_BinEdit: TForm_BinEdit
    22  Caption = 'Form_BinEdit'
     3  KeyPreview = True
    34  OnCloseQuery = FormCloseQuery
    45  OnCreate = FormCreate
     
    2122          inherited filelist_meta: TVirtualStringTree
    2223            Height = 443
     24            ExplicitHeight = 443
    2325          end
    2426        end
  • oup/current/Tools/RawEdit.dfm

    r221 r245  
    11inherited Form_RawEdit: TForm_RawEdit
    22  Caption = 'Form_RawEdit'
     3  KeyPreview = True
    34  OnCloseQuery = FormCloseQuery
    45  OnCreate = FormCreate
     
    2425          inherited filelist: TListBox
    2526            Height = 160
     27            ExplicitHeight = 160
    2628          end
    2729          object panel_imexport: TPanel
     
    3335            BevelOuter = bvNone
    3436            TabOrder = 2
    35             ExplicitTop = 363
    36             ExplicitWidth = 200
    3737            DesignSize = (
    3838              190
     
    6767            Caption = '2. Select .dat-link-offset'
    6868            TabOrder = 3
    69             ExplicitTop = 213
    70             ExplicitWidth = 200
    7169            object list_offset: TListBox
    7270              Left = 2
     
    134132        ShowPositionIfNotFocused = True
    135133        OnSelectionChanged = hexSelectionChanged
    136         ExplicitWidth = 283
    137134      end
    138135      object value_viewer: TWrapGrid
     
    159156        OnDblClick = value_viewerDblClick
    160157        OnMouseDown = value_viewerMouseDown
    161         ExplicitTop = 309
    162         ExplicitWidth = 283
    163         ExplicitHeight = 114
    164158      end
    165159    end
  • oup/current/Tools/RawEdit.pas

    r223 r245  
    66  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    77  Dialogs, _TemplateFileList, Menus, StdCtrls, ExtCtrls, Buttons, ComCtrls,
    8   TypeDefs, Grids, Wrapgrid, MPHexEditor;
     8  TypeDefs, Grids, Wrapgrid, MPHexEditor, VirtualTrees;
    99
    1010type
Note: See TracChangeset for help on using the changeset viewer.