annotate WTPFile.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.Collections;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using System.IO;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 using IBBoard.Graphics;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8 using IBBoard.Relic.RelicTools.Exceptions;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9 using IBBoard.Relic.RelicTools.Collections;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11 namespace IBBoard.Relic.RelicTools
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 /// <summary>
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 /// Summary description for WTPFile.
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 /// </summary>
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 public class WTPFile:RelicChunkyFile
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 int width = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 int height = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 ChunkyDataATTR attr = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22 public WTPFile(string filename, ChunkyFolder folder)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23 :this(filename, new ChunkyStructureCollection(new RelicChunkyStructure(folder))){}
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25 public WTPFile(string filename, ChunkyCollection col)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 :this(filename, new ChunkyStructureCollection(new RelicChunkyStructure(col))){}
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
27
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 public WTPFile(string filename, ChunkyStructureCollection col): base(filename, col)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30 ChunkyFolder folder = (ChunkyFolder)col[0].RootChunks[0];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31 int children = folder.Children.Count;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 ChunkyChunk chunk = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 ChunkyDataINFOTPAT info = null;
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 for (int i = 0; i<children; i++)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 chunk = folder.Children[i];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
39 if (chunk is ChunkyDataINFOTPAT)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41 info = (ChunkyDataINFOTPAT)chunk;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
42 width = info.Width;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
43 height = info.Height;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
44 }
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
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
48 public void SaveParts(DirectoryInfo destination)
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 string filenamebase = filename.Substring(0, filename.LastIndexOf('.'));
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 saveFolder((ChunkyFolder)this.ChunkyStructures[0].RootChunks[0], destination, filenamebase);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
53 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
54
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
55 private void saveFolder(ChunkyFolder folder, DirectoryInfo destination, string filenamebase)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
56 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
57 int children = folder.Children.Count;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
58 ChunkyChunk chunk = null;
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 for (int i = 0; i<children; i++)
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 chunk = folder.Children[i];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
63
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
64 if (chunk is ChunkyData)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
65 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
66 ((ChunkyData)chunk).Save(destination, filenamebase);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
67 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
68 else if (chunk is ChunkyFolder)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
69 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
70 this.saveFolder((ChunkyFolder)chunk, destination, filenamebase);
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 //else something is wrong!
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 /*else if (chunk is ChunkyDataDATAIMAG)
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 ((ChunkyDataDATAIMAG)chunk).Save(destination, filenamebase);
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 else if (chunk is ChunkyDataPTBD)
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 ((ChunkyDataPTBD)chunk).Save(destination, filenamebase);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
81 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
82 else if (chunk is ChunkyDataPTBN)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
83 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
84 ((ChunkyDataPTBN)chunk).Save(destination, filenamebase);
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 }
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
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
89 public static WTPFile Create(string filepath)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
90 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
91 string baseFileName = filepath.Substring(filepath.LastIndexOf(Path.DirectorySeparatorChar)+1);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
92 string baseFileNameLower = baseFileName.ToLower();
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 string directory = "";
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 if (filepath.IndexOf(Path.DirectorySeparatorChar)!=-1)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
97 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
98 directory = filepath.Substring(0, filepath.LastIndexOf(Path.DirectorySeparatorChar))+Path.DirectorySeparatorChar;
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
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
101 if (baseFileNameLower.EndsWith(".wtp"))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
102 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
103 baseFileName = baseFileName.Substring(0, baseFileName.Length-4);
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 else if(baseFileNameLower.EndsWith(".tga"))
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
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
108 if (baseFileNameLower.EndsWith("_primary.tga"))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
109 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
110 baseFileName = baseFileName.Substring(0, baseFileName.Length-12);
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 else if (baseFileNameLower.EndsWith("_secondary.tga"))
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 baseFileName = baseFileName.Substring(0, baseFileName.Length-14);
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 else if (baseFileNameLower.EndsWith("_weapon.tga")||baseFileNameLower.EndsWith("_banner.tga"))
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 baseFileName = baseFileName.Substring(0, baseFileName.Length-11);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
119 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
120 else if (baseFileNameLower.EndsWith("_badge.tga"))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
121 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
122 baseFileName = baseFileName.Substring(0, baseFileName.Length-10);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
123 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
124 else if (baseFileNameLower.EndsWith("_eyes.tga") || baseFileNameLower.EndsWith("_trim.tga") || baseFileNameLower.EndsWith("_dirt.tga"))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
125 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
126 baseFileName = baseFileName.Substring(0, baseFileName.Length-9);
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 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
129 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
130 baseFileName = baseFileName.Substring(0, baseFileName.Length-4);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
131 }
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 else
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 throw new InvalidFileException("File path specified is not valid for a WTP file or one of its components");
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
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
138 string skinName = baseFileName.Substring(baseFileName.LastIndexOf('_')+1);//make it forwards compatible on the off-chance Relic introduce multiple textures
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
139
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
140 ChunkyDataDATA defaultData = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
141 ChunkyData attr = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
142 FileStream fs = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
143 BinaryReader br = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
144 FileInfo file = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
145 byte [] data;
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 int width = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
148 int height = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
149
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
150 if (File.Exists(directory+baseFileName+".tga"))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
151 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
152 CompilationEvent("Reading "+baseFileName+".tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
153 file = new FileInfo(directory+baseFileName+".tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
154 fs = file.OpenRead();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
155 br = new BinaryReader(fs);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
156 br.BaseStream.Seek(12,SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
157 width = br.ReadInt16();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
158 height = br.ReadInt16();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
159 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
160 data = br.ReadBytes((int)br.BaseStream.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
161
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
162 defaultData = ChunkyDataDATAIMAG.CreateFromTGA(2, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
163
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
164 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
165 data = new byte[]{0x0, 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), 0x1, 0x0, 0x0, 0x0};
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
166 attr = new ChunkyDataUnknown("ATTR", 2, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
167 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
168 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
169 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
170 throw new RelicTools.Exceptions.FileNotFoundException("WTP files must have a 32bit layer e.g. _default.tga layer");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
171 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
172
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
173 string dirt_name = directory+baseFileName+"_Dirt.tga";
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 ChunkyFolder defaultFolder = new ChunkyFolder("IMAG", 1, "TOOL:"+dirt_name);
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 defaultFolder.Children.Add(attr);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
178 defaultFolder.Children.Add(defaultData);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
179
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
180 ChunkyDataPTLD primary = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
181 ChunkyDataPTLD secondary = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
182 ChunkyDataPTLD trim = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
183 ChunkyDataPTLD weapon = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
184 ChunkyDataPTLD eyes = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
185 ChunkyDataPTLD dirt = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
186 ChunkyDataPTBD badge = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
187 ChunkyDataPTBN banner = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
188 string primaryname = directory+baseFileName+"_Primary.tga";
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
189 string secondaryname = directory+baseFileName+"_Secondary.tga";
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
190 string trimname = directory+baseFileName+"_Trim.tga";
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
191 string weaponname = directory+baseFileName+"_Weapon.tga";
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
192 string eyesname = directory+baseFileName+"_Eyes.tga";
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
193 string badgename = directory+baseFileName+"_Badge.tga";
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
194 string bannername = directory+baseFileName+"_Banner.tga";
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
195
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
196 //int byteRead = width*height+18;//length of TGA data plus header
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
197
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
198 if (File.Exists(dirt_name))
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 CompilationEvent("Reading "+baseFileName+"_Dirt.tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
201 file = new FileInfo(dirt_name);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
202 fs = file.OpenRead();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
203 br = new BinaryReader(fs);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
204 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
205
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
206 data = br.ReadBytes((int)br.BaseStream.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
207 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
208
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
209 dirt = ChunkyDataPTLD.CreateFromTGA(PTLD_Layers.Dirt, 1, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
210 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
211 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
212 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
213 throw new RelicTools.Exceptions.FileNotFoundException("WTP Files must contain a dirt layer");
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 data = new byte[8];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
217 data[0] = (byte)(width);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
218 data[1] = (byte)(width >> 8);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
219 data[2] = (byte)(width >> 16);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
220 data[3] = (byte)(width >> 24);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
221 data[4] = (byte)(height);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
222 data[5] = (byte)(height >> 8);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
223 data[6] = (byte)(height >> 16);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
224 data[7] = (byte)(height >> 24);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
225
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
226 ChunkyData info = new ChunkyDataUnknown("INFO", 1, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
227
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
228 if (File.Exists(primaryname))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
229 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
230 CompilationEvent("Reading "+baseFileName+"_Primary.tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
231 file = new FileInfo(primaryname);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
232 fs = file.OpenRead();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
233 br = new BinaryReader(fs);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
234 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
235
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
236 data = br.ReadBytes((int)br.BaseStream.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
237 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
238
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
239 primary = ChunkyDataPTLD.CreateFromTGA(PTLD_Layers.Primary, 1, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
240
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
241 if (primary==null)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
242 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
243 CompilationEvent("Skipped "+baseFileName+"_Primary.tga - no team colour data");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
244 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
245 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
246
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
247 if (File.Exists(secondaryname))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
248 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
249 CompilationEvent("Reading "+baseFileName+"_Secondary.tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
250 file = new FileInfo(secondaryname);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
251 fs = file.OpenRead();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
252 br = new BinaryReader(fs);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
253 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
254
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
255 data = br.ReadBytes((int)br.BaseStream.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
256 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
257
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
258 secondary = ChunkyDataPTLD.CreateFromTGA(PTLD_Layers.Secondary, 1, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
259
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
260 if (secondary==null)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
261 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
262 CompilationEvent("Skipped "+baseFileName+"_Secondary.tga - no team colour data");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
263 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
264 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
265
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
266 if (File.Exists(trimname))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
267 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
268 CompilationEvent("Reading "+baseFileName+"_Trim.tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
269 file = new FileInfo(trimname);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
270 fs = file.OpenRead();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
271 br = new BinaryReader(fs);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
272 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
273
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
274 data = br.ReadBytes((int)br.BaseStream.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
275 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
276
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
277 trim = ChunkyDataPTLD.CreateFromTGA(PTLD_Layers.Trim, 1, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
278
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
279 if (trim==null)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
280 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
281 CompilationEvent("Skipped "+baseFileName+"_Trim.tga - no team colour data");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
282 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
283 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
284
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
285 if (File.Exists(weaponname))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
286 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
287 CompilationEvent("Reading "+baseFileName+"_Weapon.tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
288 file = new FileInfo(weaponname);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
289 fs = file.OpenRead();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
290 br = new BinaryReader(fs);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
291 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
292
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
293 data = br.ReadBytes((int)br.BaseStream.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
294 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
295
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
296 weapon = ChunkyDataPTLD.CreateFromTGA(PTLD_Layers.Weapon, 1, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
297
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
298 if (weapon==null)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
299 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
300 CompilationEvent("Skipped "+baseFileName+"_Weapon.tga - no team colour data");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
301 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
302 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
303
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
304 if (File.Exists(eyesname))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
305 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
306 CompilationEvent("Reading "+baseFileName+"_Eyes.tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
307 file = new FileInfo(eyesname);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
308 fs = file.OpenRead();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
309 br = new BinaryReader(fs);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
310 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
311
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
312 data = br.ReadBytes((int)br.BaseStream.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
313 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
314
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
315 eyes = ChunkyDataPTLD.CreateFromTGA(PTLD_Layers.Eyes, 1, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
316
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
317 if (eyes==null)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
318 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
319 CompilationEvent("Skipped "+baseFileName+"_Eyes.tga - no team colour data");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
320 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
321 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
322
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
323 if (File.Exists(badgename))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
324 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
325 CompilationEvent("Reading "+baseFileName+"_Badge.tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
326 file = new FileInfo(badgename);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
327 fs = file.OpenRead();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
328 br = new BinaryReader(fs);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
329 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
330
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
331 data = br.ReadBytes((int)br.BaseStream.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
332 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
333
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
334 badge = ChunkyDataPTBD.CreateFromTGA(1, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
335 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
336
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
337 if (File.Exists(bannername))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
338 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
339 CompilationEvent("Reading "+baseFileName+"_Banner.tga");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
340 file = new FileInfo(bannername);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
341 fs = file.OpenRead();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
342 br = new BinaryReader(fs);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
343 br.BaseStream.Seek(0, SeekOrigin.Begin);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
344
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
345 data = br.ReadBytes((int)br.BaseStream.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
346 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
347
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
348 banner = ChunkyDataPTBN.CreateFromTGA(1, "", data);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
349 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
350
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
351 if (badge!=null && banner!=null)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
352 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
353 if (((badge.Pos_x<=banner.Pos_x && (badge.Pos_x+badge.Width)>=banner.Pos_x)||
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
354 (badge.Pos_x<=(banner.Pos_x+banner.Width) && (badge.Pos_x+badge.Width)>=(banner.Pos_x+banner.Width)))&&
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
355 ((badge.Pos_y<=banner.Pos_y && (badge.Pos_y+badge.Height)>=banner.Pos_y)||
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
356 (badge.Pos_y<=(banner.Pos_y+banner.Height) && (badge.Pos_y+badge.Height)>=(banner.Pos_y+banner.Height))))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
357 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
358 throw new InvalidFileException("Badge and banner position overlap");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
359 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
360 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
361
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
362
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
363 CompilationEvent("Compiling WTP File");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
364 ChunkyFolder tpat = new ChunkyFolder("TPAT", 3, skinName);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
365 tpat.Children.Add(info);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
366 tpat.Children.Add(primary);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
367 tpat.Children.Add(secondary);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
368 tpat.Children.Add(trim);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
369 tpat.Children.Add(weapon);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
370 tpat.Children.Add(eyes);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
371 tpat.Children.Add(dirt);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
372 tpat.Children.Add(defaultFolder);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
373 tpat.Children.Add(banner);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
374 tpat.Children.Add(badge);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
375
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
376 return new WTPFile(baseFileName+".wtp", tpat);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
377
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
378 //RelicChunkyFile.SaveChunky(directory+baseFileName+".wtp", tpat.GetBytes());
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
379 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
380
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
381 public byte[] CreateCompositeTGABytes(LayerCollection colours, string badgePath, string bannerPath)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
382 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
383 if (colours[PTLD_Layers.Dirt].Length!=3)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
384 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
385 throw new InvalidOperationException("LayerCollection 'colours' must contain RGB colour data in a 3-byte array");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
386 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
387
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
388 FileInfo file = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
389 BinaryReader br = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
390 byte[] badge = new byte[64*64*4];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
391 byte[] banner = new byte[64*96*4];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
392 byte[] temp;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
393
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
394 CompilationEvent("Loading badge");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
395 if (File.Exists(badgePath))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
396 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
397 file = new FileInfo(badgePath);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
398 br = new BinaryReader(file.OpenRead());
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
399 temp = br.ReadBytes((int)file.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
400 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
401
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
402 if ((temp[12]+(temp[13]<<8))!=64 ||(temp[14]+(temp[15]<<8))!=64)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
403 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
404 CompilationEvent("Invalid badge image - badge must be a 64x64 pixel 24/32-bit TGA image", true);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
405 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
406 else if (!((temp[16]==32 || temp[16]==24) && temp[2]==2))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
407 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
408 CompilationEvent("Invalid badge image - badge must be a 64x64 pixel 24/32-bit TGA image", true);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
409 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
410 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
411 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
412 Buffer.BlockCopy(ImageConverter.TGAto32bitTGA(temp), 18, badge, 0, badge.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
413 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
414 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
415 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
416 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
417 CompilationEvent("Invalid badge path - file must exist. Using blank badge.", true);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
418 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
419
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
420 CompilationEvent("Loading banner");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
421 if (File.Exists(bannerPath))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
422 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
423 file = new FileInfo(bannerPath);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
424 br = new BinaryReader(file.OpenRead());
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
425 temp = br.ReadBytes((int)file.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
426 br.Close();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
427
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
428
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
429 if ((temp[12]+(temp[13]<<8))!=64 ||(temp[14]+(temp[15]<<8))!=96)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
430 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
431 CompilationEvent("Invalid banner image - banner must be a 64x96 pixel 24/32-bit TGA image", true);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
432 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
433 else if (!((temp[16]==32 || temp[16]==24) && temp[2]==2))
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
434 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
435 CompilationEvent("Invalid banner image - banner must be a 64x64 pixel 24/32-bit TGA image", true);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
436 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
437 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
438 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
439 Buffer.BlockCopy(ImageConverter.TGAto32bitTGA(temp), 18, banner, 0, banner.Length);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
440 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
441 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
442 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
443 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
444 CompilationEvent("Invalid banner path - file must exist. Using blank badge.", true);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
445 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
446
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
447 ChunkyFolder root = (ChunkyFolder)this.ChunkyStructures[0].RootChunks[0];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
448
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
449 ChunkyChunk chunk = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
450 ChunkyDataPTLD ptld = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
451 ChunkyDataPTBN bannerLayer = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
452 ChunkyDataPTBD badgeLayer = null;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
453 ChunkyDataINFOTPAT info = (ChunkyDataINFOTPAT)root.Children[0];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
454 LayerCollection layers = new LayerCollection(info.Width*info.Height);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
455 byte[] mainImage = new byte[info.Width*info.Height];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
456
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
457 int badge_bottom = int.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
458 int badge_top = int.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
459 int badge_left = int.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
460 int badge_right = int.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
461
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
462 int banner_bottom = int.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
463 int banner_top = int.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
464 int banner_left = int.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
465 int banner_right = int.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
466
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
467 CompilationEvent("Loading colour layers");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
468 for (int i = 0; i<root.Children.Count; i++)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
469 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
470 chunk = root.Children[i];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
471
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
472 if (chunk is ChunkyDataPTLD)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
473 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
474 ptld = (ChunkyDataPTLD)root.Children[i];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
475 layers[(int)ptld.Layer] = ptld.GetColourBytes();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
476 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
477 else if (chunk is ChunkyDataPTBD)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
478 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
479 badgeLayer = (ChunkyDataPTBD)chunk;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
480 badge_bottom = (int)badgeLayer.Pos_y;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
481 badge_top = badge_bottom+(int)badgeLayer.Height;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
482 badge_left = (int)badgeLayer.Pos_x;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
483 badge_right = badge_left+(int)badgeLayer.Width;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
484 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
485 else if (chunk is ChunkyDataPTBN)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
486 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
487 bannerLayer = (ChunkyDataPTBN)chunk;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
488 banner_bottom = (int)bannerLayer.Pos_y;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
489 banner_top = banner_bottom+(int)bannerLayer.Height;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
490 banner_left = (int)bannerLayer.Pos_x;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
491 banner_right = banner_left+(int)bannerLayer.Width;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
492 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
493 else if (chunk is ChunkyFolder)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
494 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
495 mainImage = ((ChunkyData)((ChunkyFolder)chunk).Children[1]).GetDataBytes();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
496 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
497 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
498
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
499 int bytePos = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
500 int bytePos32bit = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
501 int bytePosBadge = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
502 int bytePosBanner = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
503 byte[] badgeByte;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
504 byte[] bannerByte;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
505 double ratio;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
506 double ratio2;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
507 double ratio3;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
508 double ratioTC;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
509 double tempByte = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
510 double extra = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
511 int badge_width = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
512
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
513 if (badgeLayer != null)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
514 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
515 badge_width = (int)badgeLayer.Width;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
516 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
517
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
518 int banner_width = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
519
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
520 if (bannerLayer!=null)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
521 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
522 banner_width = (int)bannerLayer.Width;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
523 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
524
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
525 CompilationEvent("Compiling TGA");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
526 for (int i = 0; i<info.Height; i++)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
527 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
528 for (int j = 0; j<info.Width; j++)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
529 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
530 bytePos = (i*info.Width)+j;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
531 bytePos32bit = bytePos*4;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
532 ratio = layers[PTLD_Layers.Dirt][bytePos]/255.0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
533
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
534 if (badge_left<=j && badge_right>j && badge_bottom<=i && badge_top>i)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
535 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
536 bytePosBadge = ((i-badge_bottom)*badge_width+(j-badge_left))*4;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
537
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
538 ratio2 = (badge[bytePosBadge+3]/255.0);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
539 badgeByte = new byte[]{badge[bytePosBadge], badge[bytePosBadge+1], badge[bytePosBadge+2]};
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
540 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
541 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
542 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
543 ratio2 = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
544 badgeByte = new byte[3];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
545 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
546
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
547 if (banner_left<=j && banner_right>j && banner_bottom<=i && banner_top>i)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
548 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
549 bytePosBanner = ((i-banner_bottom)*banner_width+(j-banner_left))*4;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
550
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
551 ratio3 = (banner[bytePosBanner+3]/255.0);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
552 bannerByte = new byte[]{banner[bytePosBanner], banner[bytePosBanner+1], banner[bytePosBanner+2]};
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
553 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
554 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
555 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
556 ratio3 = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
557 bannerByte = new byte[3];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
558 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
559
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
560 ratioTC = 1-ratio;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
561
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
562 ratio2 = ratioTC*ratio2;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
563 ratio3 = ratioTC*ratio3;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
564 ratioTC = (ratioTC-ratio2-ratio3)*2;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
565 extra = 0;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
566
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
567 //TGA files run in reverse - little-endian ARGB, which ends up as BGRA in the file
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
568
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
569 //red
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
570 tempByte = (ratio*mainImage[bytePos32bit+2]) + (ratioTC)*((colours[PTLD_Layers.Primary][0]*layers[PTLD_Layers.Primary][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
571 (colours[PTLD_Layers.Secondary][0]*layers[PTLD_Layers.Secondary][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
572 (colours[PTLD_Layers.Weapon][0]*layers[PTLD_Layers.Weapon][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
573 (colours[PTLD_Layers.Trim][0]*layers[PTLD_Layers.Trim][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
574 (colours[PTLD_Layers.Eyes][0]*layers[PTLD_Layers.Eyes][bytePos]/255.0)) + ratio2*badgeByte[2] + ratio3*bannerByte[2];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
575
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
576 if (tempByte>byte.MaxValue)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
577 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
578 //CompilationEvent("Colour overflow at X:"+j.ToString()+", Y:"+i.ToString()+". Colour will show as Magenta or other bright colour with some colour schemes.", true);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
579 mainImage[bytePos32bit+2] = byte.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
580 extra = (tempByte-byte.MaxValue);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
581 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
582 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
583 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
584 mainImage[bytePos32bit+2] = (byte)tempByte;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
585 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
586
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
587 //green
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
588 tempByte = (ratio*mainImage[bytePos32bit+1]) + (ratioTC)*((colours[PTLD_Layers.Primary][1]*layers[PTLD_Layers.Primary][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
589 (colours[PTLD_Layers.Secondary][1]*layers[PTLD_Layers.Secondary][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
590 (colours[PTLD_Layers.Weapon][1]*layers[PTLD_Layers.Weapon][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
591 (colours[PTLD_Layers.Trim][1]*layers[PTLD_Layers.Trim][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
592 (colours[PTLD_Layers.Eyes][1]*layers[PTLD_Layers.Eyes][bytePos]/255.0)) + extra + ratio2*badgeByte[1] + ratio3*bannerByte[1];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
593
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
594 if (tempByte>byte.MaxValue)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
595 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
596 //CompilationEvent("Colour overflow at X:"+j.ToString()+", Y:"+i.ToString()+". Colour will show as Magenta or other bright colour with some colour schemes.", true);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
597 mainImage[bytePos32bit+1] = byte.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
598 extra = extra + tempByte-byte.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
599 tempByte = mainImage[bytePos32bit+2]+extra;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
600 if (tempByte>byte.MaxValue)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
601 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
602 tempByte = byte.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
603 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
604 mainImage[bytePos32bit+2] = (byte)tempByte;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
605 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
606 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
607 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
608 mainImage[bytePos32bit+1] = (byte)tempByte;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
609 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
610
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
611 //blue
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
612 tempByte = (ratio*mainImage[bytePos32bit]) + (ratioTC)*((colours[PTLD_Layers.Primary][2]*layers[PTLD_Layers.Primary][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
613 (colours[PTLD_Layers.Secondary][2]*layers[PTLD_Layers.Secondary][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
614 (colours[PTLD_Layers.Weapon][2]*layers[PTLD_Layers.Weapon][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
615 (colours[PTLD_Layers.Trim][2]*layers[PTLD_Layers.Trim][bytePos]/255.0) +
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
616 (colours[PTLD_Layers.Eyes][2]*layers[PTLD_Layers.Eyes][bytePos]/255.0)) + extra + ratio2*badgeByte[0] + ratio3*bannerByte[0];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
617
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
618 if (tempByte>byte.MaxValue)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
619 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
620 //CompilationEvent("Colour overflow at X:"+j.ToString()+", Y:"+i.ToString()+". Colour will show as Magenta or other bright colour with some colour schemes.", true);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
621 mainImage[bytePos32bit] = byte.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
622 extra = extra + tempByte - byte.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
623 tempByte = mainImage[bytePos32bit+2]+extra;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
624 if (tempByte>byte.MaxValue)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
625 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
626 tempByte = byte.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
627 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
628 mainImage[bytePos32bit+2] = (byte)tempByte;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
629 tempByte = mainImage[bytePos32bit+1]+extra;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
630 if (tempByte>byte.MaxValue)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
631 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
632 tempByte = byte.MaxValue;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
633 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
634 mainImage[bytePos32bit+1] = (byte)tempByte;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
635 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
636 else
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
637 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
638 mainImage[bytePos32bit] = (byte)tempByte;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
639 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
640 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
641 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
642
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
643 return mainImage;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
644 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
645
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
646 public void SaveCompositeTGA(DirectoryInfo destination, LayerCollection colours, string badgePath, string bannerPath)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
647 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
648 byte[] tga = this.CreateCompositeTGABytes(colours, badgePath, bannerPath);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
649
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
650 ChunkyDataATTR attr = findFirstDataAttributes();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
651
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
652 ChunkyDataDATAIMAG data = new ChunkyDataDATAIMAG(2, "", tga);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
653 data.Attributes = attr;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
654 CompilationEvent("Saving compiled TGA");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
655 data.Save(destination, filename.Substring(0, filename.LastIndexOf('_')));
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
656 CompilationEvent("Compilation Complete\r\n");
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
657 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
658
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
659 private ChunkyDataATTR findFirstDataAttributes()
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
660 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
661 if (attr == null)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
662 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
663 ChunkyFolder root = (ChunkyFolder)this.ChunkyStructures[0].RootChunks[0];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
664
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
665 for (int i = 0; i<root.Children.Count; i++)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
666 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
667 if (root.Children[i] is ChunkyFolder)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
668 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
669 root = (ChunkyFolder)root.Children[i];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
670 break;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
671 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
672 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
673
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
674 if (root.Children[0] is ChunkyDataATTR)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
675 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
676 attr = (ChunkyDataATTR)root.Children[0];
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
677 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
678 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
679
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
680 return attr;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
681 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
682 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
683 }