Changeset 241 for oup


Ignore:
Timestamp:
Jul 18, 2007, 12:27:16 AM (17 years ago)
Author:
alloc
Message:
 
Location:
oup/current
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • oup/current/DataAccess/Access_OUP_ADB.pas

    r229 r241  
    3535    function GetRawList(FileID: Integer): TRawDataList; override;
    3636    function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; override;
     37    function GetRawsForType(RawType: String): TRawDataList; override;
    3738
    3839    procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; override;
     
    268269  else
    269270    list.Sorted := True;
     271  if ext = '*' then
     272    ext := '';
    270273  for i := 0 to GetFileCount - 1 do
    271274  begin
     
    490493begin
    491494  SetLength(Result, 0);
    492   FQuery.SQL.Text := 'SELECT [src_link_offset],[size],[sep] FROM rawmap WHERE [src_id]=' +
     495  FQuery.SQL.Text := 'SELECT [src_link_offset],[name],[size],[sep],[type] FROM rawmap WHERE [src_id]=' +
    493496    IntToStr(fileid) + ' ORDER BY src_link_offset ASC;';
    494497  FQuery.Open;
     
    499502    i := 0;
    500503    repeat
     504      Result[i].Name      := FQuery.FieldByName('name').AsString;
    501505      Result[i].SrcID     := fileid;
    502506      Result[i].SrcOffset := FQuery.FieldByName('src_link_offset').AsInteger;
     
    504508      Result[i].RawSize   := FQuery.FieldByName('size').AsInteger;
    505509      Result[i].LocSep    := FQuery.FieldByName('sep').AsBoolean;
     510      Result[i].RawType   := FQuery.FieldByName('type').AsString;
    506511      Inc(i);
    507512      FQuery.Next;
     
    526531      Result := rawlist[i]
    527532    else begin
     533      Result.Name      := '';
    528534      Result.SrcID     := -1;
    529535      Result.SrcOffset := -1;
    530536      Result.RawAddr   := -1;
    531537      Result.RawSize   := -1;
    532     end;
    533   end;
    534 end;
     538      Result.RawType   := '';
     539    end;
     540  end;
     541end;
     542
     543
     544function TAccess_OUP_ADB.GetRawsForType(RawType: String): TRawDataList;
     545var
     546  i: Integer;
     547  rawlist: TRawDataList;
     548begin
     549  SetLength(Result, 0);
     550  FQuery.SQL.Text := 'SELECT [src_id],[src_link_offset],[name],[size],[sep] FROM rawmap ' +
     551    'WHERE [type]="' + RawType + '" ORDER BY src_id ASC, src_link_offset ASC;';
     552  FQuery.Open;
     553  if FQuery.RecordCount > 0 then
     554  begin
     555    FQuery.First;
     556    SetLength(Result, FQuery.RecordCount);
     557    i := 0;
     558    repeat
     559      Result[i].Name      := FQuery.FieldByName('name').AsString;
     560      Result[i].SrcID     := FQuery.FieldByName('src_id').AsInteger;
     561      Result[i].SrcOffset := FQuery.FieldByName('src_link_offset').AsInteger;
     562      Result[i].RawAddr   := 0;
     563      Result[i].RawSize   := FQuery.FieldByName('size').AsInteger;
     564      Result[i].LocSep    := FQuery.FieldByName('sep').AsBoolean;
     565      Result[i].RawType   := RawType;
     566      Inc(i);
     567      FQuery.Next;
     568    until FQuery.EOF;
     569  end;
     570  FQuery.Close;
     571end;
     572
    535573
    536574
  • oup/current/DataAccess/Access_OniArchive.pas

    r231 r241  
    3939    function GetRawList(FileID: Integer): TRawDataList; override;
    4040    function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; override;
     41    function GetRawsForType(RawType: String): TRawDataList; override;
    4142
    4243    procedure LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; var target: TStream); overload;
     
    285286  list := TStringList.Create;
    286287  list.Sorted := True;
     288  if ext = '*' then
     289    ext := '';
    287290  for i := 0 to GetFileCount - 1 do
    288291  begin
     
    489492begin
    490493  Result := RawLists.GetRawList(FConnectionID, FileID);
     494end;
     495
     496
     497function TAccess_OniArchive.GetRawsForType(RawType: String): TRawDataList;
     498var
     499  i, j: Integer;
     500  dats: TStrings;
     501  list: TRawDataList;
     502begin
     503  dats := nil;
     504  dats := GetFilesList(MidStr(RawType, 1, 4), '', True, ST_IDAsc);
     505  for i := 0 to dats.Count - 1 do
     506  begin
     507    list := GetRawList(StrToInt(MidStr(dats.Strings[i], 1, 5)));
     508    for j := 0 to Length(list) - 1 do
     509    begin
     510      if list[j].RawType = RawType then
     511      begin
     512        SetLength(Result, Length(Result)+1);
     513        Result[High(Result)] := list[j];
     514      end;
     515    end;
     516  end;
    491517end;
    492518
  • oup/current/DataAccess/DataAccess.pas

    r229 r241  
    5050    function GetRawList(FileID: Integer): TRawDataList; virtual; abstract;
    5151    function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; virtual; abstract;
     52    function GetRawsForType(RawType: String): TRawDataList; virtual; abstract;
    5253
    5354    procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; virtual; abstract;
  • oup/current/FileClasses/AKVA.pas

    r237 r241  
    4141        AddField(TInt, 'X-tiles', 'size of pathfinding grid', [4]);
    4242        AddField(TInt, 'Z-tiles', 'size of pathfinding grid', [4]);
    43         AddField(TRawLink, 'RAW offset', 'offset of grid data', []);
     43        AddField(TRawLink, 'RAW offset', 'offset of grid data', ['AKVA']);
    4444        AddField(TInt, 'RAW size', 'size of grid data', [4]);
    4545        AddField(TFloat, 'Tile size', 'usually 4 world units', []);
  • oup/current/FileClasses/SUBT.pas

    r240 r241  
    3535    AddField(TUnused, 'Unused data', '', [16]);
    3636
    37     AddField(TRawLink, 'Raw Address', '', []);
     37    AddField(TRawLink, 'Raw Address', '', ['SUBT']);
    3838
    3939    with TArray(AddField(TArray, 'SUBT offsets array', '', [4])) do
  • oup/current/FileClasses/TXAN.pas

    r237 r241  
    3636    with TArray(AddField(TArray, 'AnimTextures array', '', [4])) do
    3737    begin
    38       AddField(TLinkByID, 'Texture', '', ['*']);
     38      AddField(TLinkByID, 'Texture', '', ['TXMP']);
    3939      SetCount;
    4040    end;
  • oup/current/FileClasses/TXMP.pas

    r236 r241  
    5353    AddField(TInt, 'Height', '', [2]);
    5454    AddField(TInt, 'StoreType', '', [4]);
    55     AddField(TLinkByID, 'TXAN', '', ['*']);
     55    AddField(TLinkByID, 'TXAN', '', ['TXAN']);
    5656    AddField(TLinkByID, 'TXMP', '', ['TXMP']);
    57     AddField(TRawLink, 'RawLink', '', []);
    58     AddField(TRawLink, 'SepLink', '', []);
     57    AddField(TRawLink, 'RawLink', '', ['TXMP']);
     58    AddField(TRawLink, 'SepLink', '', ['TXMP']);
    5959    AddField(TUnused, 'Unused', '', [$1C]);
    6060  end;
  • oup/current/FileClasses/_DataTypes.pas

    r240 r241  
    1010 
    1111  TDataField = class(TTreeElement)
    12       function GetChildCount: Integer; override;
    13       function GetChild(ID: Integer): TTreeElement; override;
    14       function GetCaption: String; override;
    1512    protected
    1613      FOffset: Integer;
    1714      FName:   String;
     15      FType:   String;
    1816      FDescription: String;
    1917      FDataLength: Integer;
     
    2220      FChanged: Boolean;
    2321      FExtraArgs: array of TVarRec;
     22      function GetChildCount: Integer; override;
     23      function GetChild(ID: Integer): TTreeElement; override;
     24      function GetCaption: String; override;
     25      function GetType: String; override;
    2426      function GetValueAsString: String; virtual;
    2527    public
     
    4749
    4850  TBlock = class(TContainer)
    49     private
     51    protected
    5052      FDataFields: array of TDataField;
    5153      function GetChildCount: Integer; override;
     
    6769
    6870  TInt = class(TDataField)
    69     private
     71    protected
    7072      FInt: Integer;
    7173      function GetValueAsString: String; override;
     
    8082
    8183  TFloat = class(TDataField)
    82     private
     84    protected
    8385      FFloat: Single;
    8486      function GetValueAsString: String; override;
     
    9395
    9496  TBitSet = class(TDataField)
    95     private
     97    protected
    9698      FBits: Byte;
    9799      FNames: TStringList;
     
    107109
    108110  TLevelID = class(TDataField)
    109     private
     111    protected
    110112      FLevelID: Integer;
    111113      function GetValueAsString: String; override;
     
    120122
    121123  TFileID = class(TDataField)
    122     private
     124    protected
    123125      FFileID: Integer;
    124126      function GetValueAsString: String; override;
     
    133135
    134136  TDatLink = class(TDataField)
    135     private
     137    protected
     138      FPosExts: String;
    136139      function GetTarget: TObject; virtual; abstract;
    137140    public
     141      property PosExts: String read FPosExts;
    138142      property TargetFile: TObject read GetTarget;
    139143  end;
     
    141145
    142146  TLinkByID = class(TDatLink)
     147    protected
     148      FFileID: Integer;
    143149      function GetChildCount: Integer; override;
    144150      function GetChild(ID: Integer): TTreeElement; override;
    145     private
    146       FFileID: Integer;
    147       FPosExts: String;
    148151      function GetValueAsString: String; override;
    149152      function GetTarget: TObject; override;
     
    158161
    159162  TString = class(TDataField)
    160     private
     163    protected
    161164      FString: String;
    162165      function GetValueAsString: String; override;
     
    171174
    172175  TArray = class(TContainer)
    173     private
     176    protected
    174177      FDataFields: array of TBlock;
    175178      FTemplate: TBlock;
     
    197200
    198201  TRawLink = class(TDataField)
    199     private
     202    protected
    200203      FRawAddress: Integer;
     204      FRawType:    String;
     205      FSep:        Boolean;
    201206      function GetValueAsString: String; override;
    202207    public
    203       // ExtraArgs: keine
    204       constructor Create(ParentFile: TObject; ParentBlock: TContainer;
    205           Name, Description: String; ExtraArgs: array of const); override;
    206       procedure Update(Offset, Length: Integer); override;
    207       procedure WriteData(stream: TStream); override;
     208      // ExtraArgs: String: RawType; Bool: Sep
     209      constructor Create(ParentFile: TObject; ParentBlock: TContainer;
     210          Name, Description: String; ExtraArgs: array of const); override;
     211      procedure Update(Offset, Length: Integer); override;
     212      procedure WriteData(stream: TStream); override;
     213
     214      property RawType: String read FRawType;
    208215  end;
    209216
    210217
    211218  TUnused = class(TDataField)
    212     private
     219    protected
    213220      function GetValueAsString: String; override;
    214221    public
     
    268275end;
    269276
     277function TDataField.GetType: String;
     278begin
     279  Result := FType;
     280end;
     281
    270282function TDataField.GetValueAsString: String;
    271283begin
     
    280292  inherited Create(ParentFile, ParentBlock, Name, Description, ExtraArgs);
    281293  FDataLength := ExtraArgs[0].VInteger;
     294  FType := 'String[' + IntToStr(FDataLength) + ']';
    282295end;
    283296
     
    325338  inherited Create(ParentFile, ParentBlock, Name, Description, ExtraArgs);
    326339  FDataLength := ExtraArgs[0].VInteger;
     340  FType := 'Int' + IntToStr(FDataLength * 8);
    327341  FInt := 0;
    328342end;
     
    364378  inherited Create(ParentFile, ParentBlock, Name, Description, ExtraArgs);
    365379  FCounterSize := ExtraArgs[0].VInteger;
     380  FType := '';
    366381  if Length(ExtraArgs) = 2 then
    367382    FBlockCount := ExtraArgs[1].VInteger
     
    521536begin
    522537  inherited Create(ParentFile, ParentBlock, Name, Description, ExtraArgs);
     538  FType := '';
    523539end;
    524540
     
    593609  inherited Create(ParentFile, ParentBlock, Name, Description, ExtraArgs);
    594610  FDataLength := 4;
     611  FType := 'LevelID';
    595612  FLevelID := 0;
    596613end;
     
    628645  inherited Create(ParentFile, ParentBlock, Name, Description, ExtraArgs);
    629646  FDataLength := 4;
     647  FType := 'FileID';
    630648  FFileID := -1;
    631649end;
     
    673691    vtAnsiString: FPosExts := String(ExtraArgs[0].VAnsiString);
    674692  end;
     693  FType := 'LinkByID(' + FPosExts + ')';
    675694  FFileID := -1;
    676695end;
     
    740759begin
    741760  inherited Create(ParentFile, ParentBlock, Name, Description, ExtraArgs);
     761  case ExtraArgs[0].VType of
     762    vtChar: FRawType := ExtraArgs[0].VChar;
     763    vtAnsiString: FRawType := String(ExtraArgs[0].VAnsiString);
     764  end;
     765  if Length(ExtraArgs) > 1 then
     766    FSep := ExtraArgs[1].VBoolean;
     767  FType := 'RawLink(' + FRawType + ')';
    742768  FDataLength := 4;
    743769end;
     
    774800  inherited Create(ParentFile, ParentBlock, Name, Description, ExtraArgs);
    775801  FDataLength := ExtraArgs[0].VInteger;
     802  FType := 'Unused';
    776803end;
    777804
     
    813840    end;
    814841  FDataLength := 1;
     842  FType := 'BitSet';
    815843  FBits := 0;
    816844end;
     
    854882  inherited Create(ParentFile, ParentBlock, Name, Description, ExtraArgs);
    855883  FDataLength := 4;
     884  FType := 'Float';
    856885  FFloat := 0;
    857886end;
  • oup/current/FileClasses/_Extensions.pas

    r237 r241  
    88type
    99  TExtension = class(TTreeElement)
     10    protected
    1011      function GetChildCount: Integer; override;
    1112      function GetChild(ID: Integer): TTreeElement; override;
    1213      function GetCaption: String; override;
     14      function GetType: String; override;
    1315    private
    1416      FExt: String;
     
    6466begin
    6567  Result := Length(FFiles);
     68end;
     69
     70function TExtension.GetType: String;
     71begin
     72  Result := '';
    6673end;
    6774
  • oup/current/FileClasses/_FileTypes.pas

    r240 r241  
    99type
    1010  TFile = class(TTreeElement)
    11       function GetChildCount: Integer; override;
    12       function GetChild(ID: Integer): TTreeElement; override;
    13       function GetCaption: String; override;
    1411    protected
    1512      FFileInfo: TFileInfo;
     
    2522      FOpened: Boolean;
    2623
     24      function GetChildCount: Integer; override;
     25      function GetChild(ID: Integer): TTreeElement; override;
     26      function GetCaption: String; override;
     27      function GetType: String; override;
    2728      function GetEditor: TFrame;
    2829      function GetFieldByOffset(Offset: Integer): TDataField;
     
    6162
    6263uses
    63   DatLinks, RawList, ConnectionManager, Dialogs, _MetaTypes, _MetaManager;
     64  DatLinks, RawList, ConnectionManager, Dialogs, _MetaTypes, _MetaManager,
     65  SysUtils;
    6466
    6567{ TFileType }
     
    134136
    135137
     138function TFile.GetType: String;
     139begin
     140  Result := FFileInfo.Extension;
     141end;
     142
    136143function TFile.GetCaption: String;
    137144begin
     
    139146  if Result = '' then
    140147    Result := 'Unnamed';
     148  Result := Result + ' (' + IntToStr(FFileInfo.ID) + ')';
    141149end;
    142150
  • oup/current/FileClasses/_MetaTypes.pas

    r240 r241  
    44
    55uses
    6   _FileTypes, _EmptyFile, _Unlinked, _DataTypes, _Extensions, _TreeElement,
     6  _FileTypes, _EmptyFile, _DataTypes, _Extensions, _TreeElement,
    77  AKVA, SUBT, TXAN, TXMP;
    88//  ABNA, AGDB, AGQC, AGQG, AGQM, AGQR, AISA, AITR, AIWA, AKAA, AKBA, AKBP, AKDA,
     
    2020  TFile = _FileTypes.TFile;
    2121  TFile_Empty = _EmptyFile.TFile_Empty;
    22   TFile_Unlinked = _Unlinked.TFile_Unlinked;
    2322  TExtension = _Extensions.TExtension;
    2423  TExtensions = _Extensions.TExtensions;
     24
    2525  TDataField = _DataTypes.TDataField;
     26  TContainer = _DataTypes.TContainer;
     27  TBlock = _DataTypes.TBlock;
     28  TArray = _DataTypes.TArray;
     29
     30  TFileID = _DataTypes.TFileID;
     31  TLevelID = _DataTypes.TLevelID;
     32  TInt = _DataTypes.TInt;
     33  TFloat = _DataTypes.TFloat;
     34  TString = _DataTypes.TString;
     35  TBitSet = _DataTypes.TBitSet;
    2636  TDatLink = _DataTypes.TDatLink;
     37  TLinkByID = _DataTypes.TLinkByID;
     38  TRawLink = _DataTypes.TRawLink;
     39  TUnused = _DataTypes.TUnused;
    2740
    2841  TFileClass = class of TFile;
  • oup/current/FileClasses/_TreeElement.pas

    r238 r241  
    55type
    66  TTreeElement = class
     7    protected
    78      FConnectionID: Integer;
    89      function GetChildCount: Integer; virtual; abstract;
    910      function GetChild(ID: Integer): TTreeElement; virtual; abstract;
    1011      function GetCaption: String; virtual; abstract;
    11     private
     12      function GetType: String; virtual; abstract;
    1213    public
    1314      property ConnectionID: Integer read FConnectionID;
     
    1516      property Child[ID: Integer]: TTreeElement read GetChild;
    1617      property Caption: String read GetCaption;
     18      property VType: String read GetType;
    1719  end;
    1820
  • oup/current/Global/DatLinks.pas

    r215 r241  
    359359const
    360360  types: array[0..0] of String[4] =
    361       ('*');
     361      ('Impt');
    362362var
    363363  i: Integer;
     
    426426function M3GM(Connection: TDataAccess; FileID: Integer): TDatLinkList;
    427427const
    428   types: array[0..7] of String[4] =
    429       ('PNTA', 'VCRA', 'VCRA', 'TXCA', 'IDXA', 'IDXA', 'TXMP', '*');
     428  types: array[0..6] of String[4] =
     429      ('PNTA', 'VCRA', 'VCRA', 'TXCA', 'IDXA', 'IDXA', 'TXMP');
    430430var
    431431  i: Integer;
    432432begin
    433433  SetLength(Result, 8);
    434   for i := 0 to 7 do
     434  for i := 0 to 6 do
    435435  begin
    436436    Result[i].SrcOffset := $0C + i*4;
     
    444444const
    445445  types: array[0..0] of String[4] =
    446       ('*');
     446      ('Mtrl');
    447447var
    448448  i: Integer;
     
    587587  Result[0].SrcOffset := $8;
    588588  Result[0].DestID := -1;
    589   Result[0].PosDestExts := '*';
     589  Result[0].PosDestExts := 'ONCV';
    590590end;
    591591
     
    730730  Result[0].SrcOffset := $50;
    731731  Result[0].DestID := -1;
    732   Result[0].PosDestExts := '*';
     732  Result[0].PosDestExts := 'TXMP';
    733733end;
    734734
     
    748748      Result[i].SrcOffset := $20 + i*8 + 4;
    749749      Result[i].DestID := -1;
    750       Result[i].PosDestExts := '*';
     750      Result[i].PosDestExts := 'PSpc';
    751751    end;
    752752  end;
     
    11041104  Result[0].SrcOffset := $94;
    11051105  Result[0].DestID := -1;
    1106   Result[0].PosDestExts := '*';
     1106  Result[0].PosDestExts := 'TXAN';
    11071107  Result[1].SrcOffset := $98;
    11081108  Result[1].DestID := -1;
     
    11341134      Result[i].SrcOffset := $20 + i*8 + 4;
    11351135      Result[i].DestID := -1;
    1136       Result[i].PosDestExts := '*';
     1136      Result[i].PosDestExts := 'PSpc';
    11371137    end;
    11381138  end;
  • oup/current/Global/Data.pas

    r206 r241  
    55const
    66  Version:   String    = 'v0.35a';
    7   DBVersion: String    = '0.4';
     7  DBVersion: String    = '0.5';
    88  CrLf:      String[2] = #13 + #10;
    99
  • oup/current/Global/RawList.pas

    r226 r241  
    4444  for i := 0 to links - 1 do
    4545  begin
    46     Result[i].Name := '<TBD>';
     46    Result[i].Name    := '<TBD>';
    4747    Result[i].SrcOffset := $20 + i * 4;
    4848    ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $20 + i * 4, 4, @link);
     
    5050    Result[i].RawSize := 32;
    5151    Result[i].LocSep  := False;
     52    Result[i].RawType := 'AGDB' + IntToStr(i mod 2);
    5253  end;
    5354end;
     
    6667  for i := 0 to links - 1 do
    6768  begin
    68     Result[i].Name := '<TBD>';
     69    Result[i].Name    := '<TBD>';
    6970    Result[i].SrcOffset := $20 + i * $74 + $24;
    7071    ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $20 + i * $74 + $24, 4, @link);
     
    7374    Result[i].RawSize := link;
    7475    Result[i].LocSep  := False;
     76    Result[i].RawType := 'AKVA';
    7577  end;
    7678end;
     
    8789  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $08, 4, @datasize);
    8890  SetLength(Result, 1);
    89   Result[0].Name := 'BinaryData';
     91  Result[0].Name      := 'Binary data';
    9092  Result[0].SrcOffset := $0C;
    9193  Result[0].RawAddr   := link;
    9294  Result[0].RawSize   := datasize;
    9395  Result[0].LocSep    := not (ConManager.Connection[ConnectionID].DataOS = DOS_WIN);
     96  Result[0].RawType   := 'BINA';
    9497end;
    9598
     
    105108  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $0C, 4, @link);
    106109  SetLength(Result, 1);
    107   Result[0].Name := 'SoundBinaryData';
     110  Result[0].Name      := 'Sound Binary Data';
    108111  Result[0].SrcOffset := $0C;
    109112  Result[0].RawAddr   := link;
    110113  Result[0].RawSize   := datasize;
    111   Result[0].LocSep     := not (ConManager.Connection[ConnectionID].DataOS = DOS_WIN);
     114  Result[0].LocSep    := not (ConManager.Connection[ConnectionID].DataOS = DOS_WIN);
     115  Result[0].RawType   := 'OSBD';
    112116end;
    113117
     
    133137    Result[0].SrcOffset := $44;
    134138  end;
    135   Result[0].Name := 'SoundData';
     139  Result[0].Name    := 'Sound data';
    136140  Result[0].RawAddr := link;
    137141  Result[0].RawSize := datasize;
    138142  Result[0].LocSep  := False;
     143  Result[0].RawType := 'SNDD';
    139144end;
    140145
     
    181186      Result[0].RawSize   := Data.Position;
    182187      Result[0].LocSep    := False;
     188      Result[0].RawType   := 'SUBT';
    183189    end;
    184190  end;
     
    208214  Result[0].RawAddr   := link;
    209215  Result[0].RawSize   := frames * 4;
     216  Result[0].RawType   := 'TRAM0';
    210217  {x-z-pos}
    211218  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $10, 4, @link);
     
    214221  Result[1].RawAddr   := link;
    215222  Result[1].RawSize   := frames * 8;
     223  Result[1].RawType   := 'TRAM1';
    216224  {attacks}
    217225  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $182, 1, @tempb);
     
    221229  Result[2].RawAddr   := link;
    222230  Result[2].RawSize   := tempb * 32;
     231  Result[2].RawType   := 'TRAM2';
    223232  {damage}
    224233  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $183, 1, @tempb);
     
    228237  Result[3].RawAddr   := link;
    229238  Result[3].RawSize   := tempb * 8;
     239  Result[3].RawType   := 'TRAM3';
    230240  {motionblur}
    231241  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $184, 1, @tempb);
     
    235245  Result[4].RawAddr   := link;
    236246  Result[4].RawSize   := tempb * 12;
     247  Result[4].RawType   := 'TRAM4';
    237248  {shortcut}
    238249  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $185, 1, @tempb);
     
    242253  Result[5].RawAddr   := link;
    243254  Result[5].RawSize   := tempb * 8;
     255  Result[5].RawType   := 'TRAM5';
    244256  {throw}
    245257  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $24, 4, @link);
     
    248260  Result[6].RawAddr   := link;
    249261  Result[6].RawSize := 24;
     262  Result[6].RawType   := 'TRAM6';
    250263  {footstep}
    251264  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $186, 1, @tempb);
     
    255268  Result[7].RawAddr   := link;
    256269  Result[7].RawSize   := tempb * 4;
     270  Result[7].RawType   := 'TRAM7';
    257271  {particle}
    258272  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $187, 1, @tempb);
     
    262276  Result[8].RawAddr   := link;
    263277  Result[8].RawSize   := tempb * 24;
     278  Result[8].RawType   := 'TRAM8';
    264279  {position}
    265280  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $30, 4, @link);
     
    268283  Result[9].RawAddr   := link;
    269284  Result[9].RawSize   := frames * 8;
     285  Result[9].RawType   := 'TRAM9';
    270286  {sound}
    271287  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $154, 2, @tempw);
     
    275291  Result[11].RawAddr   := link;
    276292  Result[11].RawSize   := tempw * 34;
     293  Result[11].RawType   := 'TRAM11';
    277294  {extent}
    278295  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $138, 4, @templ);
     
    282299  Result[12].RawAddr   := link;
    283300  Result[12].RawSize   := templ * 12;
     301  Result[12].RawType   := 'TRAM12';
    284302
    285303  ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $34, 4, @link);
     
    312330  Result[10].SrcOffset := $34;
    313331  Result[10].RawAddr   := link;
     332  Result[10].RawType   := 'TRAM10';
    314333end;
    315334
     
    373392  Result[0].RawSize := datasize;
    374393  Result[0].LocSep  := not (ConManager.Connection[ConnectionID].DataOS = DOS_WIN);
     394  Result[0].RawType   := 'TXMP';
    375395end;
    376396
     
    390410  Result.RawAddr   := -1;
    391411  Result.RawSize   := -1;
     412  Result.RawType   := '';
    392413  if Length(RawList) > 0 then
    393414  begin
     
    402423        Result.RawSize   := RawList[i].RawSize;
    403424        Result.LocSep    := RawList[i].LocSep;
     425        Result.RawType   := RawList[i].RawType;
    404426        Break;
    405427      end;
  • oup/current/Global/TypeDefs.pas

    r222 r241  
    8282      RawSize:       Integer;
    8383      LocSep:        Boolean;
     84      RawType:       String;
    8485  end;
    8586  TRawDataList = array of TRawDataInfo;
  • oup/current/Helper/LevelDB.pas

    r173 r241  
    594594  Query.ExecSQL;
    595595  Query.SQL.Text :=
    596     'CREATE TABLE rawmap  ( id AUTOINC PRIMARY KEY, src_id INTEGER, ' +
    597     'src_link_offset INTEGER, sep BOOLEAN, size INTEGER, ' +
     596    'CREATE TABLE rawmap  ( id AUTOINC PRIMARY KEY, name STRING(32), src_id INTEGER, ' +
     597    'src_link_offset INTEGER, sep BOOLEAN, type STRING(8), size INTEGER, ' +
    598598    'data BLOB BlobCompressionMode 9 BlobBlockSize 1024 BlobCompressionAlgorithm ZLib);';
    599599  //    Query.SQL.Text:='CREATE TABLE rawmap  ( id AUTOINC PRIMARY KEY, src_id INTEGER, src_link_offset INTEGER, size INTEGER, data BLOB BlobCompressionAlgorithm None );';
    600600  Query.ExecSQL;
    601601  Query.SQL.Text := 'CREATE INDEX idsrcid ON rawmap (src_id);';
     602  Query.ExecSQL;
     603  Query.SQL.Text := 'CREATE INDEX idtype ON rawmap (type);';
    602604  Query.ExecSQL;
    603605  Query.SQL.Text :=
     
    667669            mimecoder      := TStringFormat_MIME64.Create;
    668670            Query.SQL.Text :=
    669               'INSERT INTO rawmap (src_id,src_link_offset,sep,size,data) VALUES (' +
     671              'INSERT INTO rawmap (name,src_id,src_link_offset,sep,type,size,data) VALUES (' +
     672              '"' + RawLinks[i].Name + '", ' +
    670673              IntToStr(FileID) + ', ' + IntToStr(RawLinks[i].SrcOffset) + ',' +
    671674              BoolToStr(RawLinks[i].LocSep) + ', ' +
     675              '"' + RawLinks[i].RawType + '", ' +
    672676              IntToStr(RawLinks[i].RawSize) + ', ' +
    673677              'MimeToBin("' + MimeCoder.StrTo(@tempdata[0], RawLinks[i].RawSize) + '") );';
     
    678682          begin
    679683            Query.SQL.Text :=
    680               'INSERT INTO rawmap (src_id,src_link_offset,sep,size) VALUES (' +
     684              'INSERT INTO rawmap (name,src_id,src_link_offset,sep,type,size) VALUES (' +
     685              '"' + RawLinks[i].Name + '", ' +
    681686              IntToStr(FileID) + ', ' + IntToStr(RawLinks[i].SrcOffset) + ', ' +
    682               BoolToStr(RawLinks[i].LocSep) + ', 0);';
     687              BoolToStr(RawLinks[i].LocSep) + ', ' +
     688              '"' + RawLinks[i].RawType + '", ' +
     689              '0);';
    683690            Query.ExecSQL;
    684691          end;
  • oup/current/Main.pas

    r239 r241  
    254254  ConManager.OnCoonnectionListChanged := UpdateConLists;
    255255
     256  Application.HintPause := 250;
     257  Application.HintHidePause := 5000;
     258
    256259  if FileExists(ExtractFilepath(Application.EXEname) + '\oniunpacker.ini') then
    257260  begin
  • oup/current/OniUnPacker.bdsproj

    r240 r241  
    176176                        <Language Name="ProjectLang">$00000000</Language>
    177177                        <Language Name="RootDir"></Language>
    178                 </Language> 
    179     <Excluded_Packages>
     178                </Language>  <Excluded_Packages>
    180179      <Excluded_Packages Name="d:\programme\borland\bds\3.0\Bin\dbwebxprt.bpl">Borland Web Wizard Package</Excluded_Packages>
    181180    </Excluded_Packages>
  • oup/current/OniUnPacker.dpr

    r240 r241  
    4444  _Extensions in 'FileClasses\_Extensions.pas',
    4545  _MetaTypes in 'FileClasses\_MetaTypes.pas',
    46   _TreeElement in 'FileClasses\_TreeElement.pas',
    47   _Unlinked in 'FileClasses\_Unlinked.pas';
     46  _TreeElement in 'FileClasses\_TreeElement.pas';
    4847
    4948{$R *.res}
  • oup/current/Tools/BinEdit.dfm

    r231 r241  
    1919        end
    2020        inherited tab_meta: TTabSheet
    21           ExplicitLeft = 0
    22           ExplicitTop = 0
    23           ExplicitWidth = 0
    24           ExplicitHeight = 0
     21          inherited filelist_meta: TVirtualStringTree
     22            Height = 443
     23          end
    2524        end
    2625      end
  • oup/current/Tools/MetaEditor.dfm

    r239 r241  
    4040      Header.Font.Style = []
    4141      Header.Options = [hoColumnResize, hoDrag, hoVisible]
     42      HintAnimation = hatNone
     43      HintMode = hmHint
     44      ParentShowHint = False
     45      ShowHint = True
    4246      TabOrder = 0
    4347      TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScrollOnExpand, toAutoDeleteMovedNodes]
     
    4751      OnGetText = VSTGetText
    4852      OnPaintText = VSTPaintText
     53      OnGetHint = VSTGetHint
    4954      OnGetPopupMenu = VSTGetPopupMenu
    5055      OnInitChildren = VSTInitChildren
     
    5358          Position = 0
    5459          Width = 250
    55           WideText = 'FName'
     60          WideText = 'Name'
    5661        end
    5762        item
    5863          Position = 1
    59           WideText = 'FType'
     64          Width = 100
     65          WideText = 'Type'
    6066        end
    6167        item
    6268          Position = 2
    63           WideText = 'FID'
    64         end
    65         item
    66           Position = 3
    6769          Width = 150
    68           WideText = 'Data'
     70          WideText = 'Value'
    6971        end>
    7072    end
     
    7476      Width = 400
    7577      Height = 424
    76       ActivePage = tab_hex
     78      ActivePage = tab_meta
    7779      Align = alRight
    7880      TabOrder = 1
  • oup/current/Tools/MetaEditor.pas

    r240 r241  
    5353    procedure vst_setRootClick(Sender: TObject);
    5454    procedure vst_newRootClick(Sender: TObject);
     55    procedure VSTGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode;
     56      Column: TColumnIndex; var LineBreakStyle: TVTTooltipLineBreakStyle;
     57      var HintText: WideString);
    5558  private
    5659    root: TTreeElement;
     
    6366implementation
    6467{$R *.dfm}
    65 uses _MetaManager, _MetaTypes, ConnectionManager, Data, _FileTypes, Main;
     68uses _MetaManager, _MetaTypes, ConnectionManager, Data, _FileTypes, Main,
     69  TypeDefs;
    6670
    6771type
     
    8892  if ID >= 0 then
    8993    SetRoot(ConManager.Connection[FConnectionID].MetaData.Root);
     94//SetRoot(ConManager.Connection[FConnectionID].MetaData.FileById[454]);
    9095end;
    9196
     
    119124  newnode: PVirtualNode;
    120125  i: Integer;
    121   Meta: TMetaManager;
    122126begin
    123127  data := Sender.GetNodeData(node);
    124   Meta := ConManager.Connection[ConnectionID].MetaData;
    125128
    126129  if data.Field.ChildCount > 0 then
     
    152155  if data.Field is TFile then
    153156    ffile := TFile(data.Field);
    154   if data.Field is TDatLink then
    155     if Assigned(TDatLink(data.Field).TargetFile) then
    156       ffile := TFile(TDatLink(data.Field).TargetFile);
     157  if data.Field is _MetaTypes.TDatLink then
     158    if Assigned(_MetaTypes.TDatLink(data.Field).TargetFile) then
     159      ffile := TFile(_MetaTypes.TDatLink(data.Field).TargetFile);
    157160  if Assigned(ffile) then
    158161  begin
     
    214217  begin
    215218    case Column of
    216       0:
    217         begin
    218           CellText := Data.Field.GetCaption;
    219         end;
    220       1:
    221         begin
    222           if Data.Field is TFile then
    223             CellText := TFile(Data.Field).FileInfo.Extension;
    224         end;
     219      0: CellText := Data.Field.Caption;
     220      1: CellText := data.Field.VType;
    225221      2:
    226         begin
    227           if Data.Field is TFile then
    228             CellText := IntToStr(TFile(Data.Field).FileInfo.ID);
    229         end;
    230       3:
    231222        begin
    232223          if Data.Field is TDataField then
     
    264255
    265256
     257procedure TForm_Meta.VSTGetHint(Sender: TBaseVirtualTree; Node: PVirtualNode;
     258  Column: TColumnIndex; var LineBreakStyle: TVTTooltipLineBreakStyle;
     259  var HintText: WideString);
     260var
     261  data: PNodeData;
     262  CellText: WideString;
     263
     264  i: Integer;
     265  links: TStrings;
     266begin
     267  inherited;
     268  if Assigned(Node) then
     269  begin
     270    VSTGetText(Sender, Node, Column, ttNormal, CellText);
     271    if Length(CellText) > 0 then
     272    begin
     273      data := Sender.GetNodeData(Node);
     274      if data.Field is TDataField then
     275      begin
     276        case Column of
     277          0,1: HintText := TDataField(data.Field).Description;
     278          2: HintText := '';
     279        end;
     280      end;
     281      if (data.Field is _MetaTypes.TDatLink) and (Column = 2) then
     282      begin
     283        links := nil;
     284        links := ConManager.Connection[FConnectionID].GetFilesList(_MetaTypes.TDatLink(data.Field).PosExts, '', False, ST_NameAsc);
     285        HintText := IntToStr(links.Count);
     286        for i := 0 to Min(links.Count - 1, 99) do
     287        begin
     288          if (i mod 5) = 0 then
     289            HintText := HintText + #13+#10;
     290          HintText := HintText + links.Strings[i] + '       ';
     291        end;
     292      end;
     293    end;
     294  end
     295  else
     296    HintText := '';
     297end;
     298
    266299procedure TForm_Meta.VSTGetPopupMenu(Sender: TBaseVirtualTree;
    267300  Node: PVirtualNode; Column: TColumnIndex; const P: TPoint;
     
    279312    if Column = 0 then
    280313    begin
    281       if TTreeElement(data.Field).GetChildCount > 0 then
     314      if TTreeElement(data.Field).ChildCount > 0 then
    282315        PopupMenu := vst_popup
    283316      else
  • oup/current/Tools/_TemplateFileList.dfm

    r233 r241  
    3333        Margins.Right = 1
    3434        Margins.Bottom = 0
    35         ActivePage = tab_meta
     35        ActivePage = tab_files
    3636        Align = alClient
    3737        TabOrder = 0
     
    261261            Align = alClient
    262262            ItemHeight = 13
     263            PopupMenu = filepopup
    263264            TabOrder = 1
    264265            OnClick = listClick
     
    269270          Caption = 'Tree'
    270271          ImageIndex = 1
    271           ExplicitLeft = 0
    272           ExplicitTop = 0
    273           ExplicitWidth = 0
    274           ExplicitHeight = 0
    275272          object filelist_meta: TVirtualStringTree
    276273            Left = 0
     
    309306  end
    310307  object filepopup: TPopupMenu
     308    OnPopup = filepopupPopup
    311309    Left = 72
    312310    Top = 216
     
    316314    object popup_linkshere: TMenuItem
    317315      Caption = 'What links here? Where does this file link to?'
     316      OnClick = popup_linkshereClick
    318317    end
    319318    object popup_separator: TMenuItem
     
    322321    object popup_import: TMenuItem
    323322      Caption = 'Import binary .dat-file'
     323      OnClick = popup_importClick
    324324    end
    325325    object popup_export: TMenuItem
    326326      Caption = 'Export binary .dat-file'
     327      OnClick = popup_exportClick
    327328    end
    328329  end
Note: See TracChangeset for help on using the changeset viewer.