Mercurial > repos > RelicTools > RelicTools
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ChunkyDataFBIF.cs Sat Oct 06 19:49:25 2018 +0100 @@ -0,0 +1,99 @@ +// This file is a part of the Relic Tools and is copyright 2006-2018 IBBoard. +// +// 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. +using System; +using System.IO; +using IBBoard.Relic.RelicTools.Exceptions; + +namespace IBBoard.Relic.RelicTools +{ + /// <summary> + /// Summary description for ChunkyDataDATA. + /// </summary> + public class ChunkyDataFBIF : ChunkyData + { + string pluginName, username, burntime; + int pluginVer; + + public ChunkyDataFBIF(int version_in, string name_in, byte[] innerData):base("FBIF", version_in, name_in) + { + int pos = 0; + int length = innerData[0]+(innerData[1]<<8)+(innerData[2]<<16)+(innerData[3]<<24); + pos = 4; + pluginName = ByteArrayToTextString(innerData, 4, length); + pos += length; + pluginVer = innerData[pos]+(innerData[pos+1]<<8)+(innerData[pos+2]<<16)+(innerData[pos+3]<<24); + pos+=4; + length = innerData[pos]+(innerData[pos+1]<<8)+(innerData[pos+2]<<16)+(innerData[pos+3]<<24); + pos+=4; + username = ByteArrayToTextString(innerData, pos, length); + pos += length; + length = innerData[pos]+(innerData[pos+1]<<8)+(innerData[pos+2]<<16)+(innerData[pos+3]<<24); + pos+=4; + burntime = ByteArrayToTextString(innerData, pos, length); + } + + public override string GetDisplayDetails() + { + return base.GetBaseDisplayDetails()+Environment.NewLine+ + "------------"+Environment.NewLine+ + "Plugin name:\t\t"+pluginName+Environment.NewLine+ + "Plugin version:\t\t"+pluginVer+Environment.NewLine+ + "Username:\t\t"+username+Environment.NewLine+ + "Burn time:\t\t"+burntime; + } + + public override int DataLength + { + get + { + return 16+pluginName.Length+username.Length+burntime.Length; + } + } + + public override byte[] GetDataBytes() + { + byte[] data = new byte[DataLength]; + int pos = 0; + int temp; + + temp = pluginName.Length; + data[pos++] = (byte)temp; + data[pos++] = (byte)(temp>>8); + data[pos++] = (byte)(temp>>16); + data[pos++] = (byte)(temp>>24); + + System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); + + enc.GetBytes(pluginName).CopyTo(data,pos); + pos += temp; + + data[pos++] = (byte)pluginVer; + data[pos++] = (byte)(pluginVer>>8); + data[pos++] = (byte)(pluginVer>>16); + data[pos++] = (byte)(pluginVer>>24); + + temp = username.Length; + data[pos++] = (byte)temp; + data[pos++] = (byte)(temp>>8); + data[pos++] = (byte)(temp>>16); + data[pos++] = (byte)(temp>>24); + + enc.GetBytes(username).CopyTo(data,pos); + pos += temp; + + temp = burntime.Length; + data[pos++] = (byte)temp; + data[pos++] = (byte)(temp>>8); + data[pos++] = (byte)(temp>>16); + data[pos++] = (byte)(temp>>24); + + enc.GetBytes(burntime).CopyTo(data,pos); + pos += temp; + + return data; + } + + + } +}