From a7db3d7462c94766a2d57258eee82048fc0cc739 Mon Sep 17 00:00:00 2001 From: Greg Edwards Date: Fri, 23 May 2014 22:01:20 -0400 Subject: [PATCH] More refactors --- library/Support/EncodedString4.cs | 43 +++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/library/Support/EncodedString4.cs b/library/Support/EncodedString4.cs index 70f0806c..da52be28 100644 --- a/library/Support/EncodedString4.cs +++ b/library/Support/EncodedString4.cs @@ -8,12 +8,33 @@ namespace PkmnFoundations.Support { public class EncodedString4 { + public EncodedString4(byte[] data) + { + RawData = data; + } + + public EncodedString4(byte[] data, int start, int count) + { + if (data.Length < start + count) throw new ArgumentOutOfRangeException("count"); + + byte[] trim = new byte[count]; + Array.Copy(data, start, trim, 0, count); + AssignData(trim); + } + + public EncodedString4(String text) + { + Text = text; + } + // todo: Use pointers for both of these - public static string DecodeString(byte[] data, int location, int maxCount) + public static string DecodeString(byte[] data, int start, int count) { + if (data.Length < start + count) throw new ArgumentOutOfRangeException("count"); + StringBuilder sb = new StringBuilder(); - for (int i = location; i < location + maxCount * 2; i += 2) + for (int i = start; i < start + count * 2; i += 2) { ushort gamecode = BitConverter.ToUInt16(data, i); if (gamecode == 0xFFFF) { break; } @@ -24,6 +45,11 @@ namespace PkmnFoundations.Support return sb.ToString(); } + public static String DecodeString(byte[] data) + { + return DecodeString(data, 0, data.Length); + } + public static byte[] EncodeString(string str) { MemoryStream m = new MemoryStream(str.Length * 2 + 2); @@ -44,7 +70,7 @@ namespace PkmnFoundations.Support get { if (m_text == null && m_raw_data == null) return null; - if (m_text == null) m_text = DecodeString(m_raw_data, 0, m_raw_data.Length); + if (m_text == null) m_text = DecodeString(m_raw_data); return m_text; } set @@ -80,17 +106,6 @@ namespace PkmnFoundations.Support m_raw_data = null; } - public EncodedString4(byte[] data) - { - RawData = data; - } - - public EncodedString4(byte[] data, int start, int count) - { - - Array.Copy(data, start, m_raw_data, 0, count); - } - public override string ToString() { return Text;