comparison ChunkyDataFBIF.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
comparison
equal deleted inserted replaced
-1:000000000000 0:82db9430c2e4
1 // This file is a part of the Relic Tools and is copyright 2006-2018 IBBoard.
2 //
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.
4 using System;
5 using System.IO;
6 using IBBoard.Relic.RelicTools.Exceptions;
7
8 namespace IBBoard.Relic.RelicTools
9 {
10 /// <summary>
11 /// Summary description for ChunkyDataDATA.
12 /// </summary>
13 public class ChunkyDataFBIF : ChunkyData
14 {
15 string pluginName, username, burntime;
16 int pluginVer;
17
18 public ChunkyDataFBIF(int version_in, string name_in, byte[] innerData):base("FBIF", version_in, name_in)
19 {
20 int pos = 0;
21 int length = innerData[0]+(innerData[1]<<8)+(innerData[2]<<16)+(innerData[3]<<24);
22 pos = 4;
23 pluginName = ByteArrayToTextString(innerData, 4, length);
24 pos += length;
25 pluginVer = innerData[pos]+(innerData[pos+1]<<8)+(innerData[pos+2]<<16)+(innerData[pos+3]<<24);
26 pos+=4;
27 length = innerData[pos]+(innerData[pos+1]<<8)+(innerData[pos+2]<<16)+(innerData[pos+3]<<24);
28 pos+=4;
29 username = ByteArrayToTextString(innerData, pos, length);
30 pos += length;
31 length = innerData[pos]+(innerData[pos+1]<<8)+(innerData[pos+2]<<16)+(innerData[pos+3]<<24);
32 pos+=4;
33 burntime = ByteArrayToTextString(innerData, pos, length);
34 }
35
36 public override string GetDisplayDetails()
37 {
38 return base.GetBaseDisplayDetails()+Environment.NewLine+
39 "------------"+Environment.NewLine+
40 "Plugin name:\t\t"+pluginName+Environment.NewLine+
41 "Plugin version:\t\t"+pluginVer+Environment.NewLine+
42 "Username:\t\t"+username+Environment.NewLine+
43 "Burn time:\t\t"+burntime;
44 }
45
46 public override int DataLength
47 {
48 get
49 {
50 return 16+pluginName.Length+username.Length+burntime.Length;
51 }
52 }
53
54 public override byte[] GetDataBytes()
55 {
56 byte[] data = new byte[DataLength];
57 int pos = 0;
58 int temp;
59
60 temp = pluginName.Length;
61 data[pos++] = (byte)temp;
62 data[pos++] = (byte)(temp>>8);
63 data[pos++] = (byte)(temp>>16);
64 data[pos++] = (byte)(temp>>24);
65
66 System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
67
68 enc.GetBytes(pluginName).CopyTo(data,pos);
69 pos += temp;
70
71 data[pos++] = (byte)pluginVer;
72 data[pos++] = (byte)(pluginVer>>8);
73 data[pos++] = (byte)(pluginVer>>16);
74 data[pos++] = (byte)(pluginVer>>24);
75
76 temp = username.Length;
77 data[pos++] = (byte)temp;
78 data[pos++] = (byte)(temp>>8);
79 data[pos++] = (byte)(temp>>16);
80 data[pos++] = (byte)(temp>>24);
81
82 enc.GetBytes(username).CopyTo(data,pos);
83 pos += temp;
84
85 temp = burntime.Length;
86 data[pos++] = (byte)temp;
87 data[pos++] = (byte)(temp>>8);
88 data[pos++] = (byte)(temp>>16);
89 data[pos++] = (byte)(temp>>24);
90
91 enc.GetBytes(burntime).CopyTo(data,pos);
92 pos += temp;
93
94 return data;
95 }
96
97
98 }
99 }