unit TypeDefs;
interface

uses
  Graphics, SysUtils;

type
  ENotImplemented = class(Exception);

  TDataBackend = (DB_ONI, DB_ADB, DB_ONISPLIT);
  TDataOS = (DOS_WIN, DOS_WINDEMO, DOS_MAC, DOS_MACBETA);

  TChangeRights = set of (CR_EditDat, CR_EditRaw, CR_ResizeDat, CR_ResizeRaw, CR_AppendRaw);

  TStatusMessages = (
      SM_OK,
      SM_AlreadyOpened,
      SM_FileNotFound,
      SM_UnknownExtension,
      SM_IncompatibleFile,
      SM_IncompatibleDBVersion,
      SM_UnknownError
  );

  TDatOSIdent = array[0..3] of Byte;
  TDatGlobalIdent = array[0..15] of Byte;

  THeader = packed record
    OSIdent:    TDatOSIdent;
    GlobalIdent:TDatGlobalIdent;
    Files:      Integer;
    NamedFiles: Integer;
    Extensions: Integer;
    DataAddr:   Integer;
    DataSize:   Integer;
    NamesAddr:  Integer;
    NamesSize:  Integer;
    Ident2:     array[0..$F] of Byte;
  end;
  TFilesMap = array of packed record
    Extension: array[0..$3] of Char;
    DataAddr:  Integer;
    NameAddr:  Integer;
    FileSize:  Integer;
    FileType:  LongWord;
  end;
  TNamedFilesMap = array of packed record
    FileNumber: Integer;
    blubb:      Integer;
  end;

	TTypeIdent = array[0..7] of Byte;
	TFileType = record
		Extension: String[4];
		StructID:  Integer;
    Name:      String;
		IdentWin:  TTypeIdent;
    IdentMac:  TTypeIdent;
	end;

  TExtensionsMap = array of packed record
      Ident:       TTypeIdent;
      Extension:   array[0..$3] of Char;
      ExtCount:    Integer;
  end;

  TFileInfo = packed record
      ID:          Integer;
      Name:        String;
      Extension:   String[4];
      Size:        Integer;
      FileType:    LongWord;
      DatAddr:     Integer;
  end;
  TFiles = array of TFileInfo;

  TRawDataInfo = record
      Name:          String;
      SrcID:         Integer;
      SrcOffset:     Integer;
      RawAddr:       Integer;
      RawSize:       Integer;
      LocSep:        Boolean;
      RawType:       String;
  end;
  TRawDataList = array of TRawDataInfo;

  TSortType = (
      ST_IDAsc,
      ST_IDDesc,
      ST_NameAsc,
      ST_NameDesc,
      ST_ExtAsc,
      ST_ExtDesc,
      ST_ExtNameAsc,
      ST_ExtNameDesc
  );

  TExtensionFormat = (
      EF_ExtOnly,
      EF_ExtCount
  );

  TByteData = array of Byte; 

  TAppSettings = record
      DatPath:        String[250];
      ExtractPath:    String[250];
      CharSet:        TFontCharSet;
      HideUnusedData: Boolean;
  end;

  TToolList = array of record
      context: String;
      name: String;
      exts: String;
  end;


  TLinkByName = record
      SrcOffset: Integer;
      Destination: String;
  end;
  TLinkByID = record
      SrcOffset: Integer;
      Destination: Integer;
  end;
  TLinks = record
      ByName: array of TLinkByName;
      ByID: array of TLinkByID;
  end;

  TDatLink = record
      SrcOffset: Integer;
      DestID:    Integer;
      PosDestExts:   String;
  end;
  TDatLinkList = array of TDatLink;
 
{
  TLevelInfo = record
    Ident: array[0..$13] of Byte;
    LevelNumber: Byte;
  end;

 TDatLinks = array of record
    Src_Offset: Integer;
    Target:     Integer;
  end;
}

const
  CrLf: String[2] = #13#10;

implementation

end.
