123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using UnityEngine;
- public class ByteReader
- {
- public ByteReader(byte[] bytes)
- {
- this.mBuffer = bytes;
- }
- public ByteReader(TextAsset asset)
- {
- this.mBuffer = asset.bytes;
- }
- public static ByteReader Open(string path)
- {
- FileStream fileStream = File.OpenRead(path);
- if (fileStream != null)
- {
- fileStream.Seek(0L, SeekOrigin.End);
- byte[] array = new byte[fileStream.Position];
- fileStream.Seek(0L, SeekOrigin.Begin);
- fileStream.Read(array, 0, array.Length);
- fileStream.Close();
- return new ByteReader(array);
- }
- return null;
- }
- public bool canRead
- {
- get
- {
- return this.mBuffer != null && this.mOffset < this.mBuffer.Length;
- }
- }
- private static string ReadLine(byte[] buffer, int start, int count)
- {
- return Encoding.UTF8.GetString(buffer, start, count);
- }
- public string ReadLine()
- {
- return this.ReadLine(true);
- }
- public string ReadLine(bool skipEmptyLines)
- {
- int num = this.mBuffer.Length;
- if (skipEmptyLines)
- {
- while (this.mOffset < num && this.mBuffer[this.mOffset] < 32)
- {
- this.mOffset++;
- }
- }
- int i = this.mOffset;
- if (i < num)
- {
- while (i < num)
- {
- int num2 = (int)this.mBuffer[i++];
- if (num2 == 10 || num2 == 13)
- {
- IL_87:
- string result = ByteReader.ReadLine(this.mBuffer, this.mOffset, i - this.mOffset - 1);
- this.mOffset = i;
- return result;
- }
- }
- i++;
- goto IL_87;
- }
- this.mOffset = num;
- return null;
- }
- public Dictionary<string, string> ReadDictionary()
- {
- Dictionary<string, string> dictionary = new Dictionary<string, string>();
- char[] separator = new char[]
- {
- '='
- };
- while (this.canRead)
- {
- string text = this.ReadLine();
- if (text == null)
- {
- break;
- }
- if (!text.StartsWith("//"))
- {
- string[] array = text.Split(separator, 2, StringSplitOptions.RemoveEmptyEntries);
- if (array.Length == 2)
- {
- string key = array[0].Trim();
- string value = array[1].Trim().Replace("\\n", "\n");
- dictionary[key] = value;
- }
- }
- }
- return dictionary;
- }
- public BetterList<string> ReadCSV()
- {
- ByteReader.mTemp.Clear();
- string text = string.Empty;
- bool flag = false;
- int num = 0;
- while (this.canRead)
- {
- if (flag)
- {
- string text2 = this.ReadLine(false);
- if (text2 == null)
- {
- return null;
- }
- text2 = text2.Replace("\\n", "\n");
- text = text + "\n" + text2;
- }
- else
- {
- text = this.ReadLine(true);
- if (text == null)
- {
- return null;
- }
- text = text.Replace("\\n", "\n");
- num = 0;
- }
- int i = num;
- int length = text.Length;
- while (i < length)
- {
- char c = text[i];
- if (c == ',')
- {
- if (!flag)
- {
- ByteReader.mTemp.Add(text.Substring(num, i - num));
- num = i + 1;
- }
- }
- else if (c == '"')
- {
- if (flag)
- {
- if (i + 1 >= length)
- {
- ByteReader.mTemp.Add(text.Substring(num, i - num).Replace("\"\"", "\""));
- return ByteReader.mTemp;
- }
- if (text[i + 1] != '"')
- {
- ByteReader.mTemp.Add(text.Substring(num, i - num).Replace("\"\"", "\""));
- flag = false;
- if (text[i + 1] == ',')
- {
- i++;
- num = i + 1;
- }
- }
- else
- {
- i++;
- }
- }
- else
- {
- num = i + 1;
- flag = true;
- }
- }
- i++;
- }
- if (num < text.Length)
- {
- if (flag)
- {
- continue;
- }
- ByteReader.mTemp.Add(text.Substring(num, text.Length - num));
- }
- return ByteReader.mTemp;
- }
- return null;
- }
- private byte[] mBuffer;
- private int mOffset;
- private static BetterList<string> mTemp = new BetterList<string>();
- }
|