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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
ec77b60e5369 Re #121: Migrate to AGPL license
IBBoard <dev@ibboard.co.uk>
parents: 3
diff changeset
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 }