annotate RelicChunkyStructure.cs @ 0:82db9430c2e4 default tip

Initial commit under GPLv3
author IBBoard <dev@ibboard.co.uk>
date Sat, 06 Oct 2018 19:49:25 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 // This file is a part of the Relic Tools and is copyright 2006-2018 IBBoard.
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 //
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 // The file and the library/program it is in are licensed under the GNU GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license.
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 using System;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 using System.IO;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 using System.Text;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 using IBBoard.Relic.RelicTools;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8 using IBBoard.Relic.RelicTools.Collections;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 namespace IBBoard.Relic.RelicTools
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 /// <summary>
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 /// Summary description for RelicChunkyStructure.
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 /// </summary>
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 public class RelicChunkyStructure
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 protected ChunkyCollection chunkCol;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 int unknownInt1;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 int unknownInt2;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 int unknownInt3;
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 static readonly byte[] ChunkyHeader = new byte[]{0x52, 0x65, 0x6C, 0x69, 0x63, 0x20, 0x43, 0x68, 0x75, 0x6E, 0x6B, 0x79, 0x0D, 0x0A, 0x1A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00};
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24 public RelicChunkyStructure(ChunkyFolder chunkyRoot):this(chunkyRoot, 0, 0, 0){}
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 public RelicChunkyStructure(ChunkyFolder chunkyRoot, int unknown1, int unknown2, int unknown3)
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 chunkCol = new ChunkyCollection();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 chunkCol.Add(chunkyRoot);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30 unknownInt1 = unknown1;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31 unknownInt2 = unknown2;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 unknownInt3 = unknown3;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 }
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 public RelicChunkyStructure(ChunkyCollection col):this(col, 0, 0, 0){}
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 public RelicChunkyStructure(ChunkyCollection col, int unknown1, int unknown2, int unknown3)
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 chunkCol = col;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40 unknownInt1 = unknown1;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41 unknownInt2 = unknown2;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
42 unknownInt3 = unknown3;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
43 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
44
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
45 public RelicChunkyFile ParentFile
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 get{ return (chunkCol.Count>0)?chunkCol[0].ParentFile:null; }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
48 set{
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
49 for (int i = 0; i<chunkCol.Count; i++)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
50 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
51 chunkCol[i].ParentFile = value;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
52 }
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
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
56 public ChunkyCollection RootChunks
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
57 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
58 get{ return chunkCol; }
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
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
61 public void Save(BinaryWriter bw)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
62 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
63 bw.Write(ChunkyHeader);
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
64
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
65 foreach(ChunkyChunk chunk in RootChunks)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
66 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
67 bw.Write(chunk.GetBytes());
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
68 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
69 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
70
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
71 public string GetValidationString()
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
72 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
73 int childCount = this.RootChunks.Count;
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
74
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
75 if (childCount>1)
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
76 {
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
77 StringBuilder sb = new StringBuilder();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
78 childCount--;
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 for (int i = 0; i<childCount; i++)
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 sb.Append(RootChunks[i].GetValidationString()+" ");
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
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
85 sb.Append(RootChunks[childCount].GetValidationString());
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 return sb.ToString();
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 else
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 return RootChunks[0].GetValidationString();
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
92 }
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 }
82db9430c2e4 Initial commit under GPLv3
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
95 }