Mercurial > repos > IBBoard.ArmyBuilder.API
annotate Loaders/ArmyBuilderABFileLoader.cs @ 5:ec77b60e5369 default tip
Re #121: Migrate to AGPL license
* Update all Army Builder API files to AGPL license
* Include AGPL license and remove GPL/LGPL documents
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 15 Aug 2009 10:51:59 +0000 |
parents | 1a54f6afafe7 |
children |
rev | line source |
---|---|
0
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
1 // This file (ArmyBuilderFileLoader.cs) is a part of the IBBoard.ArmyBuilder.API project and is copyright 2009 IBBoard |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
2 // |
5 | 3 // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero 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. |
0
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
4 |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
5 using System; |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
6 using System.IO; |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
7 |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
8 namespace IBBoard.ArmyBuilder.API.Loaders |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
9 { |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
10 public class ArmyBuilderABFileLoader |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
11 { |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
12 private static byte HEADER_DELIMITER = 0x09; |
3
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
13 private static byte HEADER_TYPE_DELIMITER = 0x3A; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
14 private static byte TABLE_HEADER_OFFSET_FROM = 4; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
15 private static byte FILE_TABLE_OFFSET_LENGTH = 2; |
0
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
16 |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
17 public static ABFile LoadFile(FileInfo file) |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
18 { |
3
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
19 ABFile abFile = ReadFileInfo(file); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
20 ReadFileTable(abFile); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
21 return abFile; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
22 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
23 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
24 private static ABFile ReadFileInfo(FileInfo file) |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
25 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
26 BinaryReaderBigEndian reader = new BinaryReaderBigEndian(file.OpenRead()); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
27 ABFile abFile = null; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
28 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
29 try |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
30 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
31 abFile = ReadFileInfo(file, reader); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
32 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
33 finally |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
34 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
35 reader.Close(); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
36 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
37 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
38 return abFile; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
39 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
40 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
41 private static ABFile ReadFileInfo(FileInfo file, BinaryReaderBigEndian reader) |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
42 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
43 int tableOffset = reader.ReadInt(); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
44 reader.Move(tableOffset); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
45 ushort fileTableOffset = reader.ReadUShort(); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
46 string header = reader.ReadDelimitedString(HEADER_TYPE_DELIMITER); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
47 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
48 ABFile abFile = CreateFile(file, header); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
49 ReadExtraHeaders(abFile, reader); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
50 int fileTablePosition = TABLE_HEADER_OFFSET_FROM + tableOffset + FILE_TABLE_OFFSET_LENGTH + fileTableOffset; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
51 abFile.FileTablePosition = fileTablePosition; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
52 int readerPosition = (int)reader.Position; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
53 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
54 if (fileTablePosition > readerPosition) |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
55 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
56 abFile.Comment = reader.ReadString(fileTablePosition - readerPosition); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
57 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
58 |
0
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
59 return abFile; |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
60 } |
3
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
61 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
62 private static ABFile CreateFile(FileInfo file, string header) |
0
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
63 { |
3
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
64 ABFile abFile = null; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
65 header = header.Trim(); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
66 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
67 if ("LWDExport".Equals(header)) |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
68 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
69 abFile = new ABv3File(file); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
70 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
71 else if ("ArmyBuilder".Equals(header)) |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
72 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
73 abFile = new ABv2File(file); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
74 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
75 else |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
76 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
77 throw new InvalidDataException("Unsupported file table header: "+header); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
78 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
79 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
80 abFile.Header = header; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
81 return abFile; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
82 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
83 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
84 private static void ReadExtraHeaders(ABFile abFile, BinaryReaderBigEndian reader) |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
85 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
86 if (abFile is ABv3File) |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
87 { |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
88 ABv3File ab3File = (ABv3File)abFile; |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
89 ab3File.GameName = reader.ReadDelimitedString(HEADER_DELIMITER); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
90 ab3File.FolderName = reader.ReadDelimitedString(HEADER_DELIMITER); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
91 ab3File.ReleaseMajor = reader.ReadDelimitedString(HEADER_DELIMITER); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
92 ab3File.ReleaseMinor = reader.ReadDelimitedString(HEADER_DELIMITER); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
93 ab3File.RequiredMajorVersion = reader.ReadDelimitedString(HEADER_DELIMITER); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
94 ab3File.RequiredMinorVersion = reader.ReadDelimitedString(HEADER_DELIMITER); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
95 ab3File.UniqueID = reader.ReadDelimitedString(HEADER_DELIMITER); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
96 ab3File.Exporter = reader.ReadDelimitedString(HEADER_DELIMITER); |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
97 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
98 } |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
99 |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
100 private static void ReadFileTable(ABFile abFile) |
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
101 { |
0
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
102 BinaryReaderBigEndian reader = new BinaryReaderBigEndian(abFile.File.OpenRead()); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
103 |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
104 try |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
105 { |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
106 ReadFileTable(abFile, reader); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
107 } |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
108 finally |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
109 { |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
110 reader.Close(); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
111 } |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
112 } |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
113 |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
114 private static void ReadFileTable(ABFile abFile, BinaryReaderBigEndian reader) |
3
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
115 { |
0
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
116 FileTableEntry entry = null; |
3
1a54f6afafe7
Re #84 and #85: Support Army Builder v2/v3 files
IBBoard <dev@ibboard.co.uk>
parents:
2
diff
changeset
|
117 reader.Seek(abFile.FileTablePosition); |
0
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
118 |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
119 do |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
120 { |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
121 entry = ReadFileTableEntry(reader); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
122 abFile.AddFileTableEntry(entry); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
123 } |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
124 while (entry!=null); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
125 } |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
126 |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
127 private static FileTableEntry ReadFileTableEntry(BinaryReaderBigEndian reader) |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
128 { |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
129 FileTableEntry entry = null; |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
130 string name = reader.ReadUShortLengthString(); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
131 |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
132 if (name!="" && name!=null) |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
133 { |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
134 entry = new FileTableEntry(name); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
135 entry.FirstBytes = reader.ReadBytes(8); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
136 entry.FileSize = reader.ReadInt(); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
137 entry.CompressedSize = reader.ReadInt(); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
138 entry.MidBytes = reader.ReadBytes(4); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
139 entry.Location = reader.ReadInt(); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
140 entry.EndBytes = reader.ReadBytes(8); |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
141 } |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
142 |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
143 return entry; |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
144 } |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
145 } |
1a5205612b72
Add initial work on ArmyBuilder API project\nno-open-ticket
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
146 } |