This commit is contained in:
Perfare 2018-01-08 23:53:15 +08:00
parent 17d2140909
commit c00da37267
2 changed files with 23 additions and 21 deletions

View File

@ -452,22 +452,11 @@ namespace Unity_Studio
type1 = classID; type1 = classID;
} }
classIDs.Add(new[] { type1, classID }); classIDs.Add(new[] { type1, classID });
if (classID == 114)
{
a_Stream.Position += 16;
}
classID = type1; classID = type1;
/*TODO
if(classID == 114)
{
a_Stream.Position += 16;
}*/
var temp = a_Stream.ReadInt32();
if (temp == 0)
{
a_Stream.Position += 16;
}
a_Stream.Position -= 4;
if (type1 < 0)
{
a_Stream.Position += 16;
}
} }
else if (classID < 0) else if (classID < 0)
{ {
@ -481,7 +470,7 @@ namespace Unity_Studio
int stringSize = a_Stream.ReadInt32(); int stringSize = a_Stream.ReadInt32();
a_Stream.Position += varCount * 24; a_Stream.Position += varCount * 24;
string varStrings = Encoding.UTF8.GetString(a_Stream.ReadBytes(stringSize)); var stringReader = new EndianBinaryReader(new MemoryStream(a_Stream.ReadBytes(stringSize)));
string className = ""; string className = "";
var classVar = new List<ClassMember>(); var classVar = new List<ClassMember>();
//build Class Structures //build Class Structures
@ -496,15 +485,27 @@ namespace Unity_Studio
ushort test = a_Stream.ReadUInt16(); ushort test = a_Stream.ReadUInt16();
string varTypeStr; string varTypeStr;
if (test == 0) //varType is an offset in the string block if (test == 0) //varType is an offset in the string block
{ varTypeStr = varStrings.Substring(varTypeIndex, varStrings.IndexOf('\0', varTypeIndex) - varTypeIndex); }//substringToNull {
stringReader.Position = varTypeIndex;
varTypeStr = stringReader.ReadStringToNull();
}
else //varType is an index in an internal strig array else //varType is an index in an internal strig array
{ varTypeStr = baseStrings.ContainsKey(varTypeIndex) ? baseStrings[varTypeIndex] : varTypeIndex.ToString(); } {
varTypeStr = baseStrings.ContainsKey(varTypeIndex) ? baseStrings[varTypeIndex] : varTypeIndex.ToString();
}
ushort varNameIndex = a_Stream.ReadUInt16(); ushort varNameIndex = a_Stream.ReadUInt16();
test = a_Stream.ReadUInt16(); test = a_Stream.ReadUInt16();
string varNameStr; string varNameStr;
if (test == 0) { varNameStr = varStrings.Substring(varNameIndex, varStrings.IndexOf('\0', varNameIndex) - varNameIndex); } if (test == 0)
else { varNameStr = baseStrings.ContainsKey(varNameIndex) ? baseStrings[varNameIndex] : varNameIndex.ToString(); } {
stringReader.Position = varNameIndex;
varNameStr = stringReader.ReadStringToNull();
}
else
{
varNameStr = baseStrings.ContainsKey(varNameIndex) ? baseStrings[varNameIndex] : varNameIndex.ToString();
}
int size = a_Stream.ReadInt32(); int size = a_Stream.ReadInt32();
int index = a_Stream.ReadInt32(); int index = a_Stream.ReadInt32();
@ -523,6 +524,7 @@ namespace Unity_Studio
}); });
} }
} }
stringReader.Dispose();
a_Stream.Position += stringSize; a_Stream.Position += stringSize;
var aClass = new ClassStruct() { ID = classID, Text = className, members = classVar }; var aClass = new ClassStruct() { ID = classID, Text = className, members = classVar };

View File

@ -1172,7 +1172,7 @@ namespace Unity_Studio
FMODstatusLabel.Text = "Stopped"; FMODstatusLabel.Text = "Stopped";
FMODinfoLabel.Text = ""; FMODinfoLabel.Text = "";
if (sound != null) if (sound != null && sound.isValid())
{ {
var result = sound.release(); var result = sound.release();
ERRCHECK(result); ERRCHECK(result);