ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/FileClasses/TXMP.pas
(Generate patch)

Comparing oup/current/FileClasses/TXMP.pas (file contents):
Revision 206 by alloc, Sun May 27 23:31:26 2007 UTC vs.
Revision 232 by alloc, Thu Jun 28 09:24:08 2007 UTC

# Line 3 | Line 3 | unit TXMP;
3   interface
4  
5   uses
6 <  TypeDefs, _DataTypes, _FileTypes;
6 >  _FileTypes;
7  
8   type
9    TFile_TXMP = class(TFile)
10 <    protected
11 <      procedure InitDatLinks; override;
10 >    public
11        procedure InitDataFields; override;
12 <      procedure InitRawList; override;
12 >      procedure InitEditor; override;
13    end;
14  
15   implementation
16  
17   uses
18 <  ConnectionManager, Math;
19 <
21 < { TFile_SNDD }
22 <
23 < procedure TFile_TXMP.InitDatLinks;
24 < begin
25 <  SetLength(FDatLinks, 2);
26 <  FDatLinks[0].SrcOffset := $94;
27 <  FDatLinks[0].DestID := -1;
28 <  FDatLinks[0].PosDestExts := '*';
29 <  FDatLinks[1].SrcOffset := $98;
30 <  FDatLinks[1].DestID := -1;
31 <  FDatLinks[1].PosDestExts := 'TXMP';
32 < end;
18 >  ConnectionManager, Math, Classes, TypeDefs, _DataTypes, ExtCtrls, StdCtrls,
19 >  Controls, Forms;
20  
21 + { TFile_TXMP }
22  
23   procedure TFile_TXMP.InitDataFields;
24   var
25    tempi: Integer;
26    temps: String;
27 +  templist: TStringList;
28   begin
29 <  FDataFields := TBlock.Create(Self, 0, 'Base', '', nil);
29 >  inherited;
30 >  FDataFields := TBlock.Create(Self, nil, 0, 'Base', '', nil);
31 >  templist := TStringList.Create;
32    with FDataFields do
33    begin
34      AddField(TFileID, $00, 'FileID', '', nil);
35 +
36      AddField(TLevelID, $04, 'LevelID', '', nil);
37 +
38      tempi := 128;
39      AddField(TString, $08, 'FileName', '', @tempi);
40 <    tempi := 4;
41 <    AddField(TInt, $88, 'Flags', '', @tempi);
40 >
41 >    templist.Add('MipMapping enabled');
42 >    templist.Add('unknown');
43 >    templist.Add('U wrapping disabled');
44 >    templist.Add('V wrapping disabled');
45 >    templist.Add('EnvMapped/EnvMap');
46 >    templist.Add('unused');
47 >    templist.Add('Play anim back to back');
48 >    templist.Add('Random anim order + frame time');
49 >    AddField(TBitSet, $88, 'Flags1', '', @templist);
50 >
51 >    templist.Clear;
52 >    templist.Add('Random anim time offset');
53 >    templist.Add('High byte as EnvMap');
54 >    templist.Add('High byte as alpha');
55 >    templist.Add('Different alpha formula');
56 >    templist.Add('Data swapping (always set)');
57 >    templist.Add('used at runtime');
58 >    templist.Add('TXAN looping on/off');
59 >    templist.Add('16 bit blue');
60 >    AddField(TBitSet, $89, 'Flags2', '', @templist);
61 >
62 >    templist.Clear;
63 >    templist.Add('16 bit alpha');
64 >    templist.Add('16 bit red');
65 >    templist.Add('unknown');
66 >    templist.Add('unknown');
67 >    templist.Add('unknown');
68 >    templist.Add('unknown');
69 >    templist.Add('unknown');
70 >    templist.Add('unknown');
71 >    AddField(TBitSet, $8A, 'Flags3', '', @templist);
72 >
73 >    templist.Clear;
74 >    templist.Add('unknown');
75 >    templist.Add('unknown');
76 >    templist.Add('unknown');
77 >    templist.Add('unknown');
78 >    templist.Add('unknown');
79 >    templist.Add('unknown');
80 >    templist.Add('unknown');
81 >    templist.Add('unknown');
82 >    AddField(TBitSet, $8B, 'Flags4', '', @templist);
83 >
84      tempi := 2;
85      AddField(TInt, $8C, 'Width', '', @tempi);
86 +
87      tempi := 2;
88      AddField(TInt, $8E, 'Height', '', @tempi);
89 +
90      tempi := 4;
91      AddField(TInt, $90, 'StoreType', '', @tempi);
92 <    temps := 'TXAN';
92 >
93 >    temps := '*';
94      AddField(TLinkByID, $94, 'TXAN', '', @temps);
95 +
96      temps := 'TXMP';
97      AddField(TLinkByID, $98, 'TXMP', '', @temps);
98 +
99      AddField(TRawLink, $9C, 'RawLink', '', nil);
100 +
101      AddField(TRawLink, $A0, 'SepLink', '', nil);
102 +
103      tempi := $1C;
104      AddField(TUnused, $A4, 'Unused', '', @tempi);
105    end;
106 +  templist.Free;
107   end;
108  
109  
110 < procedure TFile_TXMP.InitRawList;
110 > procedure TFile_TXMP.InitEditor;
111   var
112 <  link_pc:   Integer;
113 <  link_mac:  Integer;
71 <  x, y:      Word;
72 <  storetype: Byte;
73 <  datasize:  Integer;
74 <  mipmap:    Byte;
75 <
76 <  function GetImgSize(w,h, storetype: Integer): Integer;
77 <  begin
78 <    case storetype of
79 <      0, 1, 2:
80 <        Result := w*h*2;
81 <      8:
82 <        Result := w*h*4;
83 <      9:
84 <        Result :=  Max(1, w div 4) * Max(1, h div 4) * 8;
85 <    else
86 <      Result := -1;
87 <    end;
88 <  end;
89 <
112 >  group: TGroupBox;
113 >  splitter: TSplitter;
114   begin
115 <  ConManager.Connection[FConnectionID].LoadDatFilePart(FFileID, $88, SizeOf(mipmap), @mipmap);
116 <  ConManager.Connection[FConnectionID].LoadDatFilePart(FFileID, $8C, SizeOf(x), @x);
117 <  ConManager.Connection[FConnectionID].LoadDatFilePart(FFileID, $8E, SizeOf(y), @y);
118 <  ConManager.Connection[FConnectionID].LoadDatFilePart(FFileID, $90, SizeOf(storetype), @storetype);
119 <  ConManager.Connection[FConnectionID].LoadDatFilePart(FFileID, $9C, 4, @link_pc);
120 <  ConManager.Connection[FConnectionID].LoadDatFilePart(FFileID, $A0, 4, @link_mac);
121 <
122 <  datasize := GetImgSize(x, y, storetype);
123 <  if (mipmap and $01) > 0 then
124 <  begin
125 <    repeat
126 <      x    := Max(x div 2, 1);
127 <      y    := Max(y div 2, 1);
128 <      datasize := datasize + GetImgSize(x, y, storetype);
129 <    until (x = 1) and (y = 1);
130 <  end;
131 <
132 <  SetLength(FRawParts, 1);
133 <  if ConManager.Connection[FConnectionID].DataOS = DOS_WIN then
134 <  begin
135 <    FRawParts[0].SrcOffset := $9C;
112 <    FRawParts[0].RawAddr   := link_pc;
113 <  end
114 <  else
115 <  begin
116 <    FRawParts[0].SrcOffset := $A0;
117 <    FRawParts[0].RawAddr   := link_mac;
118 <  end;
119 <  FRawParts[0].RawSize := datasize;
120 <  FRawParts[0].LocSep  := not (ConManager.Connection[FConnectionID].DataOS = DOS_WIN);
115 >  inherited;
116 >  FEditor := TFrame.Create(nil);
117 >  group := TGroupBox.Create(FEditor);
118 >  group.Align := alTop;
119 >  group.Height := 150;
120 >  group.Caption := '1. ';
121 >  group.Parent := FEditor;
122 >
123 >  splitter := TSplitter.Create(FEditor);
124 >  splitter.Align := alTop;
125 >  splitter.Top := group.Height + 10;
126 >  splitter.AutoSnap := False;
127 >  splitter.MinSize := 100;
128 >  splitter.Beveled := True;
129 >  splitter.Height := 8;
130 >  splitter.Parent := FEditor;
131 >
132 >  group := TGroupBox.Create(FEditor);
133 >  group.Align := alClient;
134 >  group.Caption := '2. ';
135 >  group.Parent := FEditor;
136   end;
137  
138   end.

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)