feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
This commit is contained in:
203
SVSim.BattleEngine/Engine/ByteReader.cs
Normal file
203
SVSim.BattleEngine/Engine/ByteReader.cs
Normal file
@@ -0,0 +1,203 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
public class ByteReader
|
||||
{
|
||||
private byte[] mBuffer;
|
||||
|
||||
private int mOffset;
|
||||
|
||||
private static BetterList<string> mTemp = new BetterList<string>();
|
||||
|
||||
public bool canRead
|
||||
{
|
||||
get
|
||||
{
|
||||
if (mBuffer != null)
|
||||
{
|
||||
return mOffset < mBuffer.Length;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public ByteReader(byte[] bytes)
|
||||
{
|
||||
mBuffer = bytes;
|
||||
}
|
||||
|
||||
public ByteReader(TextAsset asset)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
private static string ReadLine(byte[] buffer, int start, int count)
|
||||
{
|
||||
return Encoding.UTF8.GetString(buffer, start, count);
|
||||
}
|
||||
|
||||
public string ReadLine()
|
||||
{
|
||||
return ReadLine(skipEmptyLines: true);
|
||||
}
|
||||
|
||||
public string ReadLine(bool skipEmptyLines)
|
||||
{
|
||||
int num = mBuffer.Length;
|
||||
if (skipEmptyLines)
|
||||
{
|
||||
while (mOffset < num && mBuffer[mOffset] < 32)
|
||||
{
|
||||
mOffset++;
|
||||
}
|
||||
}
|
||||
int num2 = mOffset;
|
||||
if (num2 < num)
|
||||
{
|
||||
int num3;
|
||||
do
|
||||
{
|
||||
if (num2 < num)
|
||||
{
|
||||
num3 = mBuffer[num2++];
|
||||
continue;
|
||||
}
|
||||
num2++;
|
||||
break;
|
||||
}
|
||||
while (num3 != 10 && num3 != 13);
|
||||
string result = ReadLine(mBuffer, mOffset, num2 - mOffset - 1);
|
||||
mOffset = num2;
|
||||
return result;
|
||||
}
|
||||
mOffset = num;
|
||||
return null;
|
||||
}
|
||||
|
||||
public Dictionary<string, string> ReadDictionary()
|
||||
{
|
||||
Dictionary<string, string> dictionary = new Dictionary<string, string>();
|
||||
char[] separator = new char[1] { '=' };
|
||||
while (canRead)
|
||||
{
|
||||
string text = 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()
|
||||
{
|
||||
mTemp.Clear();
|
||||
string text = "";
|
||||
bool flag = false;
|
||||
int num = 0;
|
||||
while (canRead)
|
||||
{
|
||||
if (flag)
|
||||
{
|
||||
string text2 = ReadLine(skipEmptyLines: false);
|
||||
if (text2 == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
text2 = text2.Replace("\\n", "\n");
|
||||
text = text + "\n" + text2;
|
||||
}
|
||||
else
|
||||
{
|
||||
text = ReadLine(skipEmptyLines: true);
|
||||
if (text == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
text = text.Replace("\\n", "\n");
|
||||
num = 0;
|
||||
}
|
||||
int i = num;
|
||||
for (int length = text.Length; i < length; i++)
|
||||
{
|
||||
switch (text[i])
|
||||
{
|
||||
case ',':
|
||||
if (!flag)
|
||||
{
|
||||
mTemp.Add(text.Substring(num, i - num));
|
||||
num = i + 1;
|
||||
}
|
||||
break;
|
||||
case '"':
|
||||
if (flag)
|
||||
{
|
||||
if (i + 1 >= length)
|
||||
{
|
||||
mTemp.Add(text.Substring(num, i - num).Replace("\"\"", "\""));
|
||||
return mTemp;
|
||||
}
|
||||
if (text[i + 1] != '"')
|
||||
{
|
||||
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;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (num < text.Length)
|
||||
{
|
||||
if (flag)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
mTemp.Add(text.Substring(num, text.Length - num));
|
||||
}
|
||||
return mTemp;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user