annotate RTXFile.cs @ 0:82db9430c2e4 default tip

Initial commit under GPLv3
author IBBoard <dev@ibboard.co.uk>
date Sat, 06 Oct 2018 19:49:25 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 // This file is a part of the Relic Tools and is copyright 2006-2018 IBBoard.
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 //
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 // The file and the library/program it is in are licensed under the GNU GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 using System;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 using System.IO;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using IBBoard.Relic.RelicTools.Exceptions;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 using IBBoard.Relic.RelicTools.Collections;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 namespace IBBoard.Relic.RelicTools
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 /// <summary>
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 /// Summary description for WTPFile.
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 /// </summary>
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 public class RTXFile:RelicChunkyFile
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 int width = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 int height = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 int id = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21 public RTXFile(string filename, ChunkyFolder folder)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22 :this(filename, new ChunkyStructureCollection(new RelicChunkyStructure(folder))){}
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24 public RTXFile(string filename, ChunkyCollection col)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25 :this(filename, new ChunkyStructureCollection(new RelicChunkyStructure(col))){}
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
27 public RTXFile(string filename, ChunkyStructureCollection col): base(filename, col)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 int lastIndex = filename.LastIndexOf('_');
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31 if (lastIndex == -1 || filename.IndexOf('_')==lastIndex)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 throw new InvalidFileException("RTX file name specified must end with a skin name and number e.g. _default_0.rtx");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36 try
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38 int dot = filename.LastIndexOf('.');
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
39 lastIndex++;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40 id = int.Parse(filename.Substring(lastIndex, dot - lastIndex));
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
42 catch(FormatException)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
43 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
44 throw new InvalidFileException("RTX file name specified must end with a skin name and number e.g. _default_0.rtx");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
45 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
46
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
47 FindAttributes((ChunkyFolder)this.ChunkyStructures[0].RootChunks[0]);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
48 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
49
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
50 private void FindAttributes(ChunkyFolder folder)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
51 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
52 int children = folder.Children.Count;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
53 ChunkyChunk chunk = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
54 ChunkyDataATTR attr = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
55
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
56 for (int i = 0; i<children; i++)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
57 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
58 chunk = folder.Children[i];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
59
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
60 if (chunk is ChunkyDataATTR)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
61 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
62 attr = (ChunkyDataATTR)chunk;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
63 width = attr.Width;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
64 height = attr.Height;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
65 break;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
66 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
67 else if (chunk is ChunkyFolder)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
68 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
69 FindAttributes((ChunkyFolder)chunk);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
70 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
71 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
72 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
73
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
74 public void SaveParts(DirectoryInfo destination)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
75 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
76 string filenamebase = filename.Substring(0, filename.LastIndexOf('.'));
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
77
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
78 saveFolder((ChunkyFolder)this.ChunkyStructures[0].RootChunks[0], destination, filenamebase);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
79 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
80
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
81 private void saveFolder(ChunkyFolder folder, DirectoryInfo destination, string filenamebase)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
82 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
83 int children = folder.Children.Count;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
84 ChunkyChunk chunk = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
85
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
86 for (int i = 0; i<children; i++)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
87 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
88 chunk = folder.Children[i];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
89
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
90 if (chunk is ChunkyFolder)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
91 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
92 this.saveFolder((ChunkyFolder)chunk, destination, filenamebase);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
93 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
94 /*else if (chunk is ChunkyDataATTR)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
95 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
96 attr = (ChunkyDataATTR)chunk;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
97 imagetype = attr.ImageType;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
98 mipmaps = attr.MipMaps;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
99 }*/
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
100 else if (chunk is ChunkyDataDATAIMAG)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
101 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
102 ((ChunkyDataDATAIMAG)chunk).Save(destination, filenamebase);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
103 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
104 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
105 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
106
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
107 public static RTXFile Create(string filepath)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
108 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
109 string baseFileName = filepath.Substring(filepath.LastIndexOf(Path.DirectorySeparatorChar)+1);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
110 string baseFileNameLower = baseFileName.ToLower();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
111
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
112 string directory = "";
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
113
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
114 if (filepath.IndexOf(Path.DirectorySeparatorChar)!=-1)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
115 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
116 directory = filepath.Substring(0, filepath.LastIndexOf(Path.DirectorySeparatorChar))+Path.DirectorySeparatorChar;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
117 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
118
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
119 if(baseFileNameLower.EndsWith(".dds"))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
120 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
121 baseFileName = baseFileName.Substring(0, baseFileName.Length-4);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
122 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
123 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
124 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
125 throw new InvalidFileException("File path specified is not valid for a RTX file");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
126 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
127
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
128 string unit_name = "";
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
129 int lastUnderscore = baseFileName.LastIndexOf('_');
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
130
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
131 if (lastUnderscore!=-1)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
132 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
133 unit_name = baseFileName.Substring(0, lastUnderscore);//trim the number
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
134
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
135 try
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
136 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
137 int id = int.Parse(baseFileName.Substring(lastUnderscore+1));
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
138 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
139 catch
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
140 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
141 throw new InvalidFileException("DDS file name specified must end with a number to identify RTX e.g. _default_0.dds");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
142 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
143
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
144 lastUnderscore = unit_name.LastIndexOf('_');
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
145 if (lastUnderscore!=-1)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
146 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
147 unit_name = unit_name.Substring(0, lastUnderscore);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
148 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
149 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
150 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
151 throw new InvalidFileException("DDS file name specified must end with a skin name followed by a number e.g. _default_0.dds");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
152 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
153 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
154 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
155 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
156 throw new InvalidFileException("DDS file name specified must end with a skin name and number e.g. _default_0.dds");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
157 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
158
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
159 ChunkyDataDATA defaultData = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
160 ChunkyData attr = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
161 byte [] data;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
162
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
163 int width = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
164 int height = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
165 int mipmaps = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
166
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
167 if (File.Exists(directory+baseFileName+".dds"))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
168 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
169 CompilationEvent("Reading "+baseFileName+".dds");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
170 FileInfo file = new FileInfo(directory+baseFileName+".dds");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
171 BinaryReader br = new BinaryReader(file.OpenRead());
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
172 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
173 data = br.ReadBytes((int)file.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
174
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
175 defaultData = ChunkyDataDATAIMAG.CreateFromDDS(2, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
176
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
177 br.BaseStream.Seek(12,SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
178 height = br.ReadInt32();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
179 width = br.ReadInt32();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
180 int size = br.ReadInt32();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
181 br.BaseStream.Seek(4, SeekOrigin.Current);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
182 mipmaps = br.ReadInt32();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
183 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
184
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
185 byte type = 0x8;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
186
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
187 if (size==width*height)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
188 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
189 type = 0xb;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
190 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
191
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
192 data = new byte[]{type, 0x0, 0x0, 0x0, (byte)width, (byte)(width>>8), (byte)(width>>16), (byte)(width>>24), (byte)(height), (byte)(height>>8), (byte)(height>>16), (byte)(height>>24), (byte)mipmaps, (byte)(mipmaps>>8), (byte)(mipmaps>>16), (byte)(mipmaps>>24)};
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
193 attr = new ChunkyDataUnknown("ATTR", 2, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
194 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
195 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
196 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
197 throw new RelicTools.Exceptions.FileNotFoundException("RTX files must be made from a DDS file");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
198 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
199
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
200 ChunkyFolder defaultFolder = new ChunkyFolder("IMAG", 1, "");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
201
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
202 defaultFolder.Children.Add(attr);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
203 defaultFolder.Children.Add(defaultData);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
204
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
205 ChunkyData head = new ChunkyDataUnknown("HEAD", 1, "", new byte[]{0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00});
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
206
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
207
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
208 CompilationEvent("Compiling RTX File");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
209 ChunkyFolder txtr = new ChunkyFolder("TXTR", 1, unit_name);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
210 txtr.Children.Add(head);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
211 txtr.Children.Add(defaultFolder);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
212 return new RTXFile(baseFileName+".rtx", txtr);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
213 //RelicChunkyFile.SaveChunky(directory+baseFileName+".rtx", txtr.GetBytes());
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
214 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
215 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
216 }