mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-26 00:43:00 +08:00
Audio Explorer
This commit is contained in:
parent
e76e854ead
commit
df79715e6b
@ -1697,12 +1697,37 @@ namespace CodeWalker.GameFiles
|
||||
return null;
|
||||
}
|
||||
|
||||
public virtual MetaHash[] GetSynthHashes()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public virtual MetaHash[] GetMixerHashes()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public virtual MetaHash[] GetCurveHashes()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public virtual MetaHash[] GetCategoryHashes()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public virtual MetaHash[] GetSoundHashes()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public virtual MetaHash[] GetGameHashes()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public virtual void Write(BinaryWriter bw)
|
||||
{
|
||||
bw.Write(Data); //fallback for default byte array data writing...
|
||||
}
|
||||
|
||||
|
||||
public virtual void WriteXml(StringBuilder sb, int indent)
|
||||
{
|
||||
//default fallback to write raw data to XML...
|
||||
@ -2176,6 +2201,20 @@ namespace CodeWalker.GameFiles
|
||||
return offsets.ToArray();
|
||||
}
|
||||
|
||||
public override MetaHash[] GetSoundHashes()
|
||||
{
|
||||
return AudioTrackHashes;
|
||||
}
|
||||
public override MetaHash[] GetCurveHashes()
|
||||
{
|
||||
if ((Header != null) && (Header.RolloffCurve != 0)) return new[] { Header.RolloffCurve };
|
||||
return null;
|
||||
}
|
||||
public override MetaHash[] GetCategoryHashes()
|
||||
{
|
||||
if ((Header != null) && (Header.CategoryHash != 0)) return new[] { Header.CategoryHash };
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2443,6 +2482,10 @@ namespace CodeWalker.GameFiles
|
||||
{
|
||||
return new uint[] { 56 };
|
||||
}
|
||||
public override MetaHash[] GetCurveHashes()
|
||||
{
|
||||
return new[] { AttackCurve, DecayCurve, ReleaseCurve };
|
||||
}
|
||||
}
|
||||
[TC(typeof(EXP))] public class Dat54TwinLoopSound : Dat54Sound
|
||||
{
|
||||
@ -2519,6 +2562,10 @@ namespace CodeWalker.GameFiles
|
||||
{
|
||||
return GetAudioTracksHashTableOffsets(28);
|
||||
}
|
||||
public override MetaHash[] GetCurveHashes()
|
||||
{
|
||||
return new[] { CrossfadeCurve };
|
||||
}
|
||||
}
|
||||
[TC(typeof(EXP))] public class Dat54SpeechSound : Dat54Sound
|
||||
{
|
||||
@ -2924,6 +2971,10 @@ namespace CodeWalker.GameFiles
|
||||
{
|
||||
return new uint[] { 0, 4 };
|
||||
}
|
||||
public override MetaHash[] GetCurveHashes()
|
||||
{
|
||||
return new[] { UnkCurvesHash };
|
||||
}
|
||||
}
|
||||
[TC(typeof(EXP))] public class Dat54CollapsingStereoSound : Dat54Sound
|
||||
{
|
||||
@ -3292,20 +3343,20 @@ namespace CodeWalker.GameFiles
|
||||
}
|
||||
[TC(typeof(EXP))] public class Dat54ModularSynthSound : Dat54Sound
|
||||
{
|
||||
public MetaHash OptAmpSynthSound { get; set; } //0x0-0x4
|
||||
public MetaHash UnkHash { get; set; } //0x4-0x8
|
||||
public MetaHash SynthSound { get; set; } //0x0-0x4
|
||||
public MetaHash SynthPreset { get; set; } //0x4-0x8
|
||||
public float UnkFloat { get; set; } //0x8-0xC
|
||||
public int UnkInt { get; set; } //0xC-0x10
|
||||
public int TrackCount { get; set; }
|
||||
public int UnkItemCount { get; set; }
|
||||
public Dat54ModularSynthSoundData[] UnkItems { get; set; } //0x28-..
|
||||
public int VariableCount { get; set; }
|
||||
public Dat54ModularSynthSoundVariable[] Variables { get; set; } //0x28-..
|
||||
|
||||
public Dat54ModularSynthSound(RelFile rel) : base(rel, Dat54SoundType.ModularSynthSound)
|
||||
{ }
|
||||
public Dat54ModularSynthSound(RelData d, BinaryReader br) : base(d, br)
|
||||
{
|
||||
OptAmpSynthSound = br.ReadUInt32(); //0x0-0x4
|
||||
UnkHash = br.ReadUInt32(); //0x4-0x8
|
||||
SynthSound = br.ReadUInt32(); //0x0-0x4
|
||||
SynthPreset = br.ReadUInt32(); //0x4-0x8
|
||||
UnkFloat = br.ReadSingle(); //0x8-0xC
|
||||
UnkInt = br.ReadInt32(); //0xC-0x10
|
||||
TrackCount = br.ReadInt32(); //0x10-0x14
|
||||
@ -3314,41 +3365,41 @@ namespace CodeWalker.GameFiles
|
||||
{
|
||||
AudioTrackHashes[i] = br.ReadUInt32();
|
||||
}
|
||||
UnkItemCount = br.ReadInt32();
|
||||
UnkItems = new Dat54ModularSynthSoundData[UnkItemCount];
|
||||
for (int i = 0; i < UnkItemCount; i++)
|
||||
VariableCount = br.ReadInt32();
|
||||
Variables = new Dat54ModularSynthSoundVariable[VariableCount];
|
||||
for (int i = 0; i < VariableCount; i++)
|
||||
{
|
||||
UnkItems[i] = new Dat54ModularSynthSoundData(br);
|
||||
Variables[i] = new Dat54ModularSynthSoundVariable(br);
|
||||
}
|
||||
}
|
||||
public override void ReadXml(XmlNode node)
|
||||
{
|
||||
base.ReadXml(node);
|
||||
OptAmpSynthSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "OptAmpSynthSound"));
|
||||
UnkHash = XmlRel.GetHash(Xml.GetChildInnerText(node, "UnkHash"));
|
||||
SynthSound = XmlRel.GetHash(Xml.GetChildInnerText(node, "SynthSound"));
|
||||
SynthPreset = XmlRel.GetHash(Xml.GetChildInnerText(node, "SynthPreset"));
|
||||
UnkFloat = Xml.GetChildFloatAttribute(node, "UnkFloat", "value");
|
||||
UnkInt = Xml.GetChildIntAttribute(node, "UnkInt", "value");
|
||||
TrackCount = Xml.GetChildIntAttribute(node, "TrackCount", "value");
|
||||
ReadAudioTracksXml(node);
|
||||
UnkItems = XmlRel.ReadItemArray<Dat54ModularSynthSoundData>(node, "UnkItems");
|
||||
UnkItemCount = (UnkItems?.Length ?? 0);
|
||||
Variables = XmlRel.ReadItemArray<Dat54ModularSynthSoundVariable>(node, "Variables");
|
||||
VariableCount = (Variables?.Length ?? 0);
|
||||
}
|
||||
public override void WriteXml(StringBuilder sb, int indent)
|
||||
{
|
||||
base.WriteXml(sb, indent);
|
||||
RelXml.StringTag(sb, indent, "OptAmpSynthSound", RelXml.HashString(OptAmpSynthSound));
|
||||
RelXml.StringTag(sb, indent, "UnkHash", RelXml.HashString(UnkHash));
|
||||
RelXml.StringTag(sb, indent, "SynthSound", RelXml.HashString(SynthSound));
|
||||
RelXml.StringTag(sb, indent, "SynthPreset", RelXml.HashString(SynthPreset));
|
||||
RelXml.ValueTag(sb, indent, "UnkFloat", FloatUtil.ToString(UnkFloat));
|
||||
RelXml.ValueTag(sb, indent, "UnkInt", UnkInt.ToString());
|
||||
RelXml.ValueTag(sb, indent, "TrackCount", TrackCount.ToString());
|
||||
WriteAudioTracksXml(sb, indent);
|
||||
RelXml.WriteItemArray(sb, UnkItems, indent, "UnkItems");
|
||||
RelXml.WriteItemArray(sb, Variables, indent, "Variables");
|
||||
}
|
||||
public override void Write(BinaryWriter bw)
|
||||
{
|
||||
base.Write(bw);
|
||||
bw.Write(OptAmpSynthSound); //0x0-0x4
|
||||
bw.Write(UnkHash); //0x4-0x8
|
||||
bw.Write(SynthSound); //0x0-0x4
|
||||
bw.Write(SynthPreset); //0x4-0x8
|
||||
bw.Write(UnkFloat); //0x8-0xC
|
||||
bw.Write(UnkInt); //0xC-0x10
|
||||
bw.Write(TrackCount); //0x10-0x14
|
||||
@ -3356,10 +3407,10 @@ namespace CodeWalker.GameFiles
|
||||
{
|
||||
bw.Write(AudioTrackHashes[i]);
|
||||
}
|
||||
bw.Write(UnkItemCount);
|
||||
for (int i = 0; i < UnkItemCount; i++)
|
||||
bw.Write(VariableCount);
|
||||
for (int i = 0; i < VariableCount; i++)
|
||||
{
|
||||
UnkItems[i].Write(bw);
|
||||
Variables[i].Write(bw);
|
||||
}
|
||||
}
|
||||
public override uint[] GetHashTableOffsets()
|
||||
@ -3371,42 +3422,46 @@ namespace CodeWalker.GameFiles
|
||||
}
|
||||
return offsets.ToArray();
|
||||
}
|
||||
public override MetaHash[] GetSynthHashes()
|
||||
{
|
||||
return new[] { SynthSound, SynthPreset };
|
||||
}
|
||||
}
|
||||
[TC(typeof(EXP))] public class Dat54ModularSynthSoundData : IMetaXmlItem
|
||||
[TC(typeof(EXP))] public class Dat54ModularSynthSoundVariable : IMetaXmlItem
|
||||
{
|
||||
public MetaHash UnkHash { get; set; }
|
||||
public MetaHash ParameterHash { get; set; }
|
||||
public MetaHash VariableName { get; set; }
|
||||
public MetaHash ParameterName { get; set; }
|
||||
public float Value { get; set; }
|
||||
|
||||
public Dat54ModularSynthSoundData()
|
||||
public Dat54ModularSynthSoundVariable()
|
||||
{ }
|
||||
public Dat54ModularSynthSoundData(BinaryReader br)
|
||||
public Dat54ModularSynthSoundVariable(BinaryReader br)
|
||||
{
|
||||
UnkHash = br.ReadUInt32();
|
||||
ParameterHash = br.ReadUInt32();
|
||||
VariableName = br.ReadUInt32();
|
||||
ParameterName = br.ReadUInt32();
|
||||
Value = br.ReadSingle();
|
||||
}
|
||||
public void ReadXml(XmlNode node)
|
||||
{
|
||||
UnkHash = XmlRel.GetHash(Xml.GetChildInnerText(node, "UnkHash"));
|
||||
ParameterHash = XmlRel.GetHash(Xml.GetChildInnerText(node, "ParameterHash"));
|
||||
VariableName = XmlRel.GetHash(Xml.GetChildInnerText(node, "VariableName"));
|
||||
ParameterName = XmlRel.GetHash(Xml.GetChildInnerText(node, "ParameterName"));
|
||||
Value = Xml.GetChildFloatAttribute(node, "Value", "value");
|
||||
}
|
||||
public void WriteXml(StringBuilder sb, int indent)
|
||||
{
|
||||
RelXml.StringTag(sb, indent, "UnkHash", RelXml.HashString(UnkHash));
|
||||
RelXml.StringTag(sb, indent, "ParameterHash", RelXml.HashString(ParameterHash));
|
||||
RelXml.StringTag(sb, indent, "VariableName", RelXml.HashString(VariableName));
|
||||
RelXml.StringTag(sb, indent, "ParameterName", RelXml.HashString(ParameterName));
|
||||
RelXml.ValueTag(sb, indent, "Value", FloatUtil.ToString(Value));
|
||||
}
|
||||
public void Write(BinaryWriter bw)
|
||||
{
|
||||
bw.Write(UnkHash);
|
||||
bw.Write(ParameterHash);
|
||||
bw.Write(VariableName);
|
||||
bw.Write(ParameterName);
|
||||
bw.Write(Value);
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
return UnkHash.ToString() + ": " + ParameterHash.ToString() + ": " + FloatUtil.ToString(Value);
|
||||
return VariableName.ToString() + ": " + ParameterName.ToString() + ": " + FloatUtil.ToString(Value);
|
||||
}
|
||||
}
|
||||
[TC(typeof(EXP))] public class Dat54GranularSound : Dat54Sound
|
||||
@ -3860,6 +3915,10 @@ namespace CodeWalker.GameFiles
|
||||
{
|
||||
return new uint[] { 0 };
|
||||
}
|
||||
public override MetaHash[] GetCurveHashes()
|
||||
{
|
||||
return new[] { UnkCurvesHash };
|
||||
}
|
||||
}
|
||||
[TC(typeof(EXP))] public class Dat54VariablePrintValueSound : Dat54Sound
|
||||
{
|
||||
@ -4876,6 +4935,10 @@ namespace CodeWalker.GameFiles
|
||||
}
|
||||
return offsets.ToArray();
|
||||
}
|
||||
public override MetaHash[] GetSoundHashes()
|
||||
{
|
||||
return Items;
|
||||
}
|
||||
}
|
||||
[TC(typeof(EXP))] public class Dat54SoundList : Dat54Sound
|
||||
{
|
||||
@ -4920,6 +4983,10 @@ namespace CodeWalker.GameFiles
|
||||
bw.Write(Items[i]);
|
||||
}
|
||||
}
|
||||
public override MetaHash[] GetSoundHashes()
|
||||
{
|
||||
return Items;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -23796,7 +23863,6 @@ namespace CodeWalker.GameFiles
|
||||
int indent = 0;
|
||||
int cindent = 1;
|
||||
var iindent = 2;
|
||||
var icindent = 3;
|
||||
var name = "Dat" + ((uint)rel.RelType).ToString();
|
||||
|
||||
OpenTag(sb, indent, name);
|
||||
@ -23824,84 +23890,7 @@ namespace CodeWalker.GameFiles
|
||||
|
||||
foreach (var item in rel.RelDatasSorted)
|
||||
{
|
||||
var typeid = item.TypeID.ToString();
|
||||
switch (rel.RelType)
|
||||
{
|
||||
case RelDatFileType.Dat54DataEntries:
|
||||
typeid = ((Dat54SoundType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat149:
|
||||
case RelDatFileType.Dat150:
|
||||
case RelDatFileType.Dat151:
|
||||
typeid = ((Dat151RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat4:
|
||||
if (rel.IsAudioConfig) typeid = ((Dat4ConfigType)item.TypeID).ToString();
|
||||
else typeid = ((Dat4SpeechType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat10ModularSynth:
|
||||
typeid = ((Dat10RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat15DynamicMixer:
|
||||
typeid = ((Dat15RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat16Curves:
|
||||
typeid = ((Dat16RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat22Categories:
|
||||
typeid = ((Dat22RelType)item.TypeID).ToString();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
var ntoffset = "";
|
||||
var dat151item = item as Dat151RelData;
|
||||
if (dat151item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat151item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat4config = item as Dat4ConfigData;
|
||||
if (dat4config != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat4config.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat4Speech = item as Dat4SpeechData;
|
||||
if (dat4Speech != null)
|
||||
{
|
||||
if (dat4Speech.Type == Dat4SpeechType.Container)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat4Speech.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
}
|
||||
var dat10item = item as Dat10RelData;
|
||||
if (dat10item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat10item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat15item = item as Dat15RelData;
|
||||
if (dat15item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat15item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat16item = item as Dat16RelData;
|
||||
if (dat16item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat16item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat22item = item as Dat22RelData;
|
||||
if (dat22item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat22item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
|
||||
OpenTag(sb, iindent, "Item type=\"" + typeid + "\"" + ntoffset);
|
||||
|
||||
StringTag(sb, icindent, "Name", item.Name ?? RelXml.HashString(item.NameHash));
|
||||
|
||||
item.WriteXml(sb, icindent);
|
||||
|
||||
CloseTag(sb, iindent, "Item");
|
||||
GetXml(item, sb, iindent);
|
||||
}
|
||||
|
||||
CloseTag(sb, cindent, "Items");
|
||||
@ -23913,6 +23902,97 @@ namespace CodeWalker.GameFiles
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public static void GetXml(RelData item, StringBuilder sb, int iindent)
|
||||
{
|
||||
var icindent = iindent + 1;
|
||||
var rel = item.Rel;
|
||||
var typeid = item.TypeID.ToString();
|
||||
switch (rel.RelType)
|
||||
{
|
||||
case RelDatFileType.Dat54DataEntries:
|
||||
typeid = ((Dat54SoundType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat149:
|
||||
case RelDatFileType.Dat150:
|
||||
case RelDatFileType.Dat151:
|
||||
typeid = ((Dat151RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat4:
|
||||
if (rel.IsAudioConfig) typeid = ((Dat4ConfigType)item.TypeID).ToString();
|
||||
else typeid = ((Dat4SpeechType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat10ModularSynth:
|
||||
typeid = ((Dat10RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat15DynamicMixer:
|
||||
typeid = ((Dat15RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat16Curves:
|
||||
typeid = ((Dat16RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat22Categories:
|
||||
typeid = ((Dat22RelType)item.TypeID).ToString();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
var ntoffset = "";
|
||||
var dat151item = item as Dat151RelData;
|
||||
if (dat151item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat151item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat4config = item as Dat4ConfigData;
|
||||
if (dat4config != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat4config.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat4Speech = item as Dat4SpeechData;
|
||||
if (dat4Speech != null)
|
||||
{
|
||||
if (dat4Speech.Type == Dat4SpeechType.Container)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat4Speech.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
}
|
||||
var dat10item = item as Dat10RelData;
|
||||
if (dat10item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat10item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat15item = item as Dat15RelData;
|
||||
if (dat15item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat15item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat16item = item as Dat16RelData;
|
||||
if (dat16item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat16item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
var dat22item = item as Dat22RelData;
|
||||
if (dat22item != null)
|
||||
{
|
||||
ntoffset = " ntOffset=\"" + dat22item.NameTableOffset.ToString() + "\"";
|
||||
}
|
||||
|
||||
OpenTag(sb, iindent, "Item type=\"" + typeid + "\"" + ntoffset);
|
||||
|
||||
StringTag(sb, icindent, "Name", item.Name ?? RelXml.HashString(item.NameHash));
|
||||
|
||||
item.WriteXml(sb, icindent);
|
||||
|
||||
CloseTag(sb, iindent, "Item");
|
||||
|
||||
}
|
||||
public static string GetXml(RelData item, int indent = 0)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
GetXml(item, sb, indent);
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class XmlRel
|
||||
|
@ -89,6 +89,19 @@ namespace CodeWalker.GameFiles
|
||||
public Dictionary<MetaHash, Dictionary<MetaHash, RpfFileEntry>> PedTextureDicts { get; set; }
|
||||
public Dictionary<MetaHash, Dictionary<MetaHash, RpfFileEntry>> PedClothDicts { get; set; }
|
||||
|
||||
|
||||
public List<RelFile> AudioDatRelFiles = new List<RelFile>();
|
||||
public Dictionary<MetaHash, RelData> AudioConfigDict = new Dictionary<MetaHash, RelData>();
|
||||
public Dictionary<MetaHash, RelData> AudioSpeechDict = new Dictionary<MetaHash, RelData>();
|
||||
public Dictionary<MetaHash, RelData> AudioSynthsDict = new Dictionary<MetaHash, RelData>();
|
||||
public Dictionary<MetaHash, RelData> AudioMixersDict = new Dictionary<MetaHash, RelData>();
|
||||
public Dictionary<MetaHash, RelData> AudioCurvesDict = new Dictionary<MetaHash, RelData>();
|
||||
public Dictionary<MetaHash, RelData> AudioCategsDict = new Dictionary<MetaHash, RelData>();
|
||||
public Dictionary<MetaHash, RelData> AudioSoundsDict = new Dictionary<MetaHash, RelData>();
|
||||
public Dictionary<MetaHash, RelData> AudioGameDict = new Dictionary<MetaHash, RelData>();
|
||||
|
||||
|
||||
|
||||
public List<RpfFile> BaseRpfs { get; private set; }
|
||||
public List<RpfFile> AllRpfs { get; private set; }
|
||||
public List<RpfFile> DlcRpfs { get; private set; }
|
||||
@ -98,6 +111,7 @@ namespace CodeWalker.GameFiles
|
||||
public bool LoadArchetypes = true;
|
||||
public bool LoadVehicles = true;
|
||||
public bool LoadPeds = true;
|
||||
public bool LoadAudio = true;
|
||||
private bool PreloadedMode = false;
|
||||
|
||||
private string GTAFolder;
|
||||
@ -250,6 +264,9 @@ namespace CodeWalker.GameFiles
|
||||
UpdateStatus("Loading strings...");
|
||||
InitStringDicts();
|
||||
|
||||
UpdateStatus("Loading audio...");
|
||||
InitAudio();
|
||||
|
||||
IsInited = true;
|
||||
}
|
||||
|
||||
@ -296,6 +313,9 @@ namespace CodeWalker.GameFiles
|
||||
UpdateStatus("Loading peds...");
|
||||
InitPeds();
|
||||
|
||||
UpdateStatus("Loading audio...");
|
||||
InitAudio();
|
||||
|
||||
}
|
||||
|
||||
private void InitDlcList()
|
||||
@ -944,32 +964,26 @@ namespace CodeWalker.GameFiles
|
||||
RpfFileEntry fentry = entry as RpfFileEntry;
|
||||
if (entry.NameLower.EndsWith(".ydr"))
|
||||
{
|
||||
YdrDict[entry.NameHash] = fentry; //replaces any existing entries...
|
||||
YdrDict[entry.ShortNameHash] = fentry;
|
||||
}
|
||||
else if (entry.NameLower.EndsWith(".ydd"))
|
||||
{
|
||||
YddDict[entry.NameHash] = fentry; //replaces any existing entries...
|
||||
YddDict[entry.ShortNameHash] = fentry;
|
||||
}
|
||||
else if (entry.NameLower.EndsWith(".ytd"))
|
||||
{
|
||||
YtdDict[entry.NameHash] = fentry; //replaces any existing entries...
|
||||
YtdDict[entry.ShortNameHash] = fentry;
|
||||
}
|
||||
else if (entry.NameLower.EndsWith(".yft"))
|
||||
{
|
||||
YftDict[entry.NameHash] = fentry;
|
||||
YftDict[entry.ShortNameHash] = fentry;
|
||||
}
|
||||
else if (entry.NameLower.EndsWith(".ycd"))
|
||||
{
|
||||
YcdDict[entry.NameHash] = fentry;
|
||||
YcdDict[entry.ShortNameHash] = fentry;
|
||||
}
|
||||
else if (entry.NameLower.EndsWith(".yed"))
|
||||
{
|
||||
YedDict[entry.NameHash] = fentry;
|
||||
YedDict[entry.ShortNameHash] = fentry;
|
||||
}
|
||||
}
|
||||
@ -1826,6 +1840,134 @@ namespace CodeWalker.GameFiles
|
||||
|
||||
}
|
||||
|
||||
public void InitAudio()
|
||||
{
|
||||
if (!LoadAudio) return;
|
||||
|
||||
Dictionary<uint, RpfFileEntry> datrelentries = new Dictionary<uint, RpfFileEntry>();
|
||||
void addRpfDatRelEntries(RpfFile rpffile)
|
||||
{
|
||||
if (rpffile.AllEntries == null) return;
|
||||
foreach (var entry in rpffile.AllEntries)
|
||||
{
|
||||
if (entry is RpfFileEntry)
|
||||
{
|
||||
RpfFileEntry fentry = entry as RpfFileEntry;
|
||||
if (entry.NameLower.EndsWith(".rel"))
|
||||
{
|
||||
datrelentries[entry.NameHash] = fentry;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var audrpf = RpfMan.FindRpfFile("x64\\audio\\audio_rel.rpf");
|
||||
if (audrpf != null)
|
||||
{
|
||||
addRpfDatRelEntries(audrpf);
|
||||
}
|
||||
|
||||
if (EnableDlc)
|
||||
{
|
||||
var updrpf = RpfMan.FindRpfFile("update\\update.rpf");
|
||||
if (updrpf != null)
|
||||
{
|
||||
addRpfDatRelEntries(updrpf);
|
||||
}
|
||||
foreach (var dlcrpf in DlcActiveRpfs) //load from current dlc rpfs
|
||||
{
|
||||
addRpfDatRelEntries(dlcrpf);
|
||||
}
|
||||
if (DlcActiveRpfs.Count == 0) //when activated from RPF explorer... DLCs aren't initialised fully
|
||||
{
|
||||
foreach (var rpf in AllRpfs) //this is a bit of a hack - DLC orders won't be correct so likely will select wrong versions of things
|
||||
{
|
||||
if (rpf.NameLower.StartsWith("dlc"))
|
||||
{
|
||||
addRpfDatRelEntries(rpf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var audioDatRelFiles = new List<RelFile>();
|
||||
var audioConfigDict = new Dictionary<MetaHash, RelData>();
|
||||
var audioSpeechDict = new Dictionary<MetaHash, RelData>();
|
||||
var audioSynthsDict = new Dictionary<MetaHash, RelData>();
|
||||
var audioMixersDict = new Dictionary<MetaHash, RelData>();
|
||||
var audioCurvesDict = new Dictionary<MetaHash, RelData>();
|
||||
var audioCategsDict = new Dictionary<MetaHash, RelData>();
|
||||
var audioSoundsDict = new Dictionary<MetaHash, RelData>();
|
||||
var audioGameDict = new Dictionary<MetaHash, RelData>();
|
||||
|
||||
|
||||
|
||||
foreach (var datrelentry in datrelentries.Values)
|
||||
{
|
||||
var relfile = RpfMan.GetFile<RelFile>(datrelentry);
|
||||
if (relfile == null) continue;
|
||||
|
||||
audioDatRelFiles.Add(relfile);
|
||||
|
||||
var d = audioGameDict;
|
||||
var t = relfile.RelType;
|
||||
switch (t)
|
||||
{
|
||||
case RelDatFileType.Dat4:
|
||||
d = relfile.IsAudioConfig ? audioConfigDict : audioSpeechDict;
|
||||
break;
|
||||
case RelDatFileType.Dat10ModularSynth:
|
||||
d = audioSynthsDict;
|
||||
break;
|
||||
case RelDatFileType.Dat15DynamicMixer:
|
||||
d = audioMixersDict;
|
||||
break;
|
||||
case RelDatFileType.Dat16Curves:
|
||||
d = audioCurvesDict;
|
||||
break;
|
||||
case RelDatFileType.Dat22Categories:
|
||||
d = audioCategsDict;
|
||||
break;
|
||||
case RelDatFileType.Dat54DataEntries:
|
||||
d = audioSoundsDict;
|
||||
break;
|
||||
case RelDatFileType.Dat149:
|
||||
case RelDatFileType.Dat150:
|
||||
case RelDatFileType.Dat151:
|
||||
default:
|
||||
d = audioGameDict;
|
||||
break;
|
||||
}
|
||||
|
||||
foreach (var reldata in relfile.RelDatas)
|
||||
{
|
||||
if (reldata.NameHash == 0) continue;
|
||||
//if (d.TryGetValue(reldata.NameHash, out var exdata) && (exdata.TypeID != reldata.TypeID))
|
||||
//{ }//sanity check
|
||||
d[reldata.NameHash] = reldata;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
AudioDatRelFiles = audioDatRelFiles;
|
||||
AudioConfigDict = audioConfigDict;
|
||||
AudioSpeechDict = audioSpeechDict;
|
||||
AudioSynthsDict = audioSynthsDict;
|
||||
AudioMixersDict = audioMixersDict;
|
||||
AudioCurvesDict = audioCurvesDict;
|
||||
AudioCategsDict = audioCategsDict;
|
||||
AudioSoundsDict = audioSoundsDict;
|
||||
AudioGameDict = audioGameDict;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public bool SetDlcLevel(string dlc, bool enable)
|
||||
{
|
||||
|
@ -8,30 +8,15 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace CodeWalker.World
|
||||
{
|
||||
public class AudioZones // : BasePathData
|
||||
public class AudioZones
|
||||
{
|
||||
public volatile bool Inited = false;
|
||||
public GameFileCache GameFileCache;
|
||||
|
||||
//public Vector4[] GetNodePositions()
|
||||
//{
|
||||
// return null;
|
||||
//}
|
||||
//public EditorVertex[] GetPathVertices()
|
||||
//{
|
||||
// return null;
|
||||
//}
|
||||
//public EditorVertex[] GetTriangleVertices()
|
||||
//{
|
||||
// return TriangleVerts;
|
||||
//}
|
||||
//public EditorVertex[] TriangleVerts;
|
||||
|
||||
public List<AudioPlacement> Zones = new List<AudioPlacement>();
|
||||
public List<AudioPlacement> Emitters = new List<AudioPlacement>();
|
||||
public List<AudioPlacement> AllItems = new List<AudioPlacement>();
|
||||
|
||||
public List<RelFile> AllFiles = new List<RelFile>();
|
||||
public Dictionary<RelFile, AudioPlacement[]> PlacementsDict = new Dictionary<RelFile, AudioPlacement[]>();
|
||||
|
||||
|
||||
@ -41,49 +26,22 @@ namespace CodeWalker.World
|
||||
|
||||
GameFileCache = gameFileCache;
|
||||
|
||||
var rpfman = gameFileCache.RpfMan;
|
||||
|
||||
|
||||
Zones.Clear();
|
||||
Emitters.Clear();
|
||||
AllItems.Clear();
|
||||
|
||||
|
||||
Dictionary<uint, RpfFileEntry> datrelentries = new Dictionary<uint, RpfFileEntry>();
|
||||
var audrpf = rpfman.FindRpfFile("x64\\audio\\audio_rel.rpf");
|
||||
if (audrpf != null)
|
||||
{
|
||||
AddRpfDatRels(audrpf, datrelentries);
|
||||
}
|
||||
|
||||
if (gameFileCache.EnableDlc)
|
||||
{
|
||||
var updrpf = rpfman.FindRpfFile("update\\update.rpf");
|
||||
if (updrpf != null)
|
||||
{
|
||||
AddRpfDatRels(updrpf, datrelentries);
|
||||
}
|
||||
foreach (var dlcrpf in GameFileCache.DlcActiveRpfs) //load from current dlc rpfs
|
||||
{
|
||||
AddRpfDatRels(dlcrpf, datrelentries);
|
||||
}
|
||||
}
|
||||
|
||||
List<AudioPlacement> placements = new List<AudioPlacement>();
|
||||
|
||||
foreach (var dat151entry in datrelentries.Values)
|
||||
foreach (var relfile in GameFileCache.AudioDatRelFiles)
|
||||
{
|
||||
var relfile = rpfman.GetFile<RelFile>(dat151entry);
|
||||
if (relfile != null)
|
||||
{
|
||||
AllFiles.Add(relfile);
|
||||
if (relfile == null) continue;
|
||||
|
||||
placements.Clear();
|
||||
placements.Clear();
|
||||
|
||||
CreatePlacements(relfile, placements, true);
|
||||
CreatePlacements(relfile, placements, true);
|
||||
|
||||
PlacementsDict[relfile] = placements.ToArray();
|
||||
}
|
||||
PlacementsDict[relfile] = placements.ToArray();
|
||||
}
|
||||
|
||||
AllItems.AddRange(Zones);
|
||||
@ -93,31 +51,6 @@ namespace CodeWalker.World
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void AddRpfDatRels(RpfFile rpffile, Dictionary<uint, RpfFileEntry> datrelentries)
|
||||
{
|
||||
if (rpffile.AllEntries == null) return;
|
||||
foreach (var entry in rpffile.AllEntries)
|
||||
{
|
||||
if (entry is RpfFileEntry)
|
||||
{
|
||||
RpfFileEntry fentry = entry as RpfFileEntry;
|
||||
//if (entry.NameLower.EndsWith(".rel"))
|
||||
//{
|
||||
// datrelentries[entry.NameHash] = fentry;
|
||||
//}
|
||||
if (entry.NameLower.EndsWith(".dat54.rel"))
|
||||
{
|
||||
datrelentries[entry.NameHash] = fentry;
|
||||
}
|
||||
if (entry.NameLower.EndsWith(".dat151.rel"))
|
||||
{
|
||||
datrelentries[entry.NameHash] = fentry;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CreatePlacements(RelFile relfile, List<AudioPlacement> placements, bool addtoLists = false)
|
||||
{
|
||||
foreach (var reldata in relfile.RelDatas)
|
||||
|
67
CodeWalker/ExploreForm.Designer.cs
generated
67
CodeWalker/ExploreForm.Designer.cs
generated
@ -69,6 +69,7 @@
|
||||
this.ViewThemeDarkMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsBinSearchMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsAudioExplorerMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsRpfBrowserMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsJenkGenMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ToolsJenkIndMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@ -125,6 +126,8 @@
|
||||
this.ListContextNewMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ListContextNewFolderMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ListContextNewRpfArchiveMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.ListContextNewYtdFileMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ListContextImportFbxMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ListContextImportXmlMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.ListContextImportRawMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@ -155,8 +158,6 @@
|
||||
this.OpenFileDialog = new System.Windows.Forms.OpenFileDialog();
|
||||
this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.VSExtender = new WeifenLuo.WinFormsUI.Docking.VisualStudioToolStripExtender(this.components);
|
||||
this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.ListContextNewYtdFileMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.MainMenu.SuspendLayout();
|
||||
this.MainToolbar.SuspendLayout();
|
||||
this.MainStatusBar.SuspendLayout();
|
||||
@ -199,20 +200,20 @@
|
||||
// FileOpenFolderMenu
|
||||
//
|
||||
this.FileOpenFolderMenu.Name = "FileOpenFolderMenu";
|
||||
this.FileOpenFolderMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.FileOpenFolderMenu.Size = new System.Drawing.Size(148, 22);
|
||||
this.FileOpenFolderMenu.Text = "Open Folder...";
|
||||
this.FileOpenFolderMenu.Click += new System.EventHandler(this.FileOpenFolderMenu_Click);
|
||||
//
|
||||
// toolStripSeparator7
|
||||
//
|
||||
this.toolStripSeparator7.Name = "toolStripSeparator7";
|
||||
this.toolStripSeparator7.Size = new System.Drawing.Size(177, 6);
|
||||
this.toolStripSeparator7.Size = new System.Drawing.Size(145, 6);
|
||||
//
|
||||
// FileExitMenu
|
||||
//
|
||||
this.FileExitMenu.Name = "FileExitMenu";
|
||||
this.FileExitMenu.ShortcutKeyDisplayString = "Alt+F4";
|
||||
this.FileExitMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.FileExitMenu.Size = new System.Drawing.Size(148, 22);
|
||||
this.FileExitMenu.Text = "Exit";
|
||||
this.FileExitMenu.Click += new System.EventHandler(this.FileExitMenu_Click);
|
||||
//
|
||||
@ -417,21 +418,21 @@
|
||||
// ViewLargeIconsMenu
|
||||
//
|
||||
this.ViewLargeIconsMenu.Name = "ViewLargeIconsMenu";
|
||||
this.ViewLargeIconsMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.ViewLargeIconsMenu.Size = new System.Drawing.Size(134, 22);
|
||||
this.ViewLargeIconsMenu.Text = "Large Icons";
|
||||
this.ViewLargeIconsMenu.Click += new System.EventHandler(this.ViewLargeIconsMenu_Click);
|
||||
//
|
||||
// ViewSmallIconsMenu
|
||||
//
|
||||
this.ViewSmallIconsMenu.Name = "ViewSmallIconsMenu";
|
||||
this.ViewSmallIconsMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.ViewSmallIconsMenu.Size = new System.Drawing.Size(134, 22);
|
||||
this.ViewSmallIconsMenu.Text = "Small Icons";
|
||||
this.ViewSmallIconsMenu.Click += new System.EventHandler(this.ViewSmallIconsMenu_Click);
|
||||
//
|
||||
// ViewListMenu
|
||||
//
|
||||
this.ViewListMenu.Name = "ViewListMenu";
|
||||
this.ViewListMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.ViewListMenu.Size = new System.Drawing.Size(134, 22);
|
||||
this.ViewListMenu.Text = "List";
|
||||
this.ViewListMenu.Click += new System.EventHandler(this.ViewListMenu_Click);
|
||||
//
|
||||
@ -440,14 +441,14 @@
|
||||
this.ViewDetailsMenu.Checked = true;
|
||||
this.ViewDetailsMenu.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.ViewDetailsMenu.Name = "ViewDetailsMenu";
|
||||
this.ViewDetailsMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.ViewDetailsMenu.Size = new System.Drawing.Size(134, 22);
|
||||
this.ViewDetailsMenu.Text = "Details";
|
||||
this.ViewDetailsMenu.Click += new System.EventHandler(this.ViewDetailsMenu_Click);
|
||||
//
|
||||
// toolStripSeparator11
|
||||
//
|
||||
this.toolStripSeparator11.Name = "toolStripSeparator11";
|
||||
this.toolStripSeparator11.Size = new System.Drawing.Size(177, 6);
|
||||
this.toolStripSeparator11.Size = new System.Drawing.Size(131, 6);
|
||||
//
|
||||
// ViewThemeMenu
|
||||
//
|
||||
@ -457,7 +458,7 @@
|
||||
this.ViewThemeLightMenu,
|
||||
this.ViewThemeDarkMenu});
|
||||
this.ViewThemeMenu.Name = "ViewThemeMenu";
|
||||
this.ViewThemeMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.ViewThemeMenu.Size = new System.Drawing.Size(134, 22);
|
||||
this.ViewThemeMenu.Text = "Theme";
|
||||
//
|
||||
// ViewThemeWindowsMenu
|
||||
@ -494,6 +495,7 @@
|
||||
//
|
||||
this.ToolsMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.ToolsBinSearchMenu,
|
||||
this.ToolsAudioExplorerMenu,
|
||||
this.ToolsRpfBrowserMenu,
|
||||
this.ToolsJenkGenMenu,
|
||||
this.ToolsJenkIndMenu});
|
||||
@ -508,6 +510,14 @@
|
||||
this.ToolsBinSearchMenu.Text = "Binary Search...";
|
||||
this.ToolsBinSearchMenu.Click += new System.EventHandler(this.ToolsBinSearchMenu_Click);
|
||||
//
|
||||
// ToolsAudioExplorerMenu
|
||||
//
|
||||
this.ToolsAudioExplorerMenu.Enabled = false;
|
||||
this.ToolsAudioExplorerMenu.Name = "ToolsAudioExplorerMenu";
|
||||
this.ToolsAudioExplorerMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsAudioExplorerMenu.Text = "Audio Explorer";
|
||||
this.ToolsAudioExplorerMenu.Click += new System.EventHandler(this.ToolsAudioExplorerMenu_Click);
|
||||
//
|
||||
// ToolsRpfBrowserMenu
|
||||
//
|
||||
this.ToolsRpfBrowserMenu.Name = "ToolsRpfBrowserMenu";
|
||||
@ -541,7 +551,7 @@
|
||||
// OptionsStartInEditModeMenu
|
||||
//
|
||||
this.OptionsStartInEditModeMenu.Name = "OptionsStartInEditModeMenu";
|
||||
this.OptionsStartInEditModeMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.OptionsStartInEditModeMenu.Size = new System.Drawing.Size(168, 22);
|
||||
this.OptionsStartInEditModeMenu.Text = "Start in Edit mode";
|
||||
this.OptionsStartInEditModeMenu.Click += new System.EventHandler(this.OptionsStartInEditModeMenu_Click);
|
||||
//
|
||||
@ -553,7 +563,7 @@
|
||||
this.OptionsStartInFolderDefaultMenu,
|
||||
this.OptionsStartInFolderCurrentMenu});
|
||||
this.OptionsStartInFolderMenu.Name = "OptionsStartInFolderMenu";
|
||||
this.OptionsStartInFolderMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.OptionsStartInFolderMenu.Size = new System.Drawing.Size(168, 22);
|
||||
this.OptionsStartInFolderMenu.Text = "Start in Folder";
|
||||
//
|
||||
// OptionsStartInFolderValueMenu
|
||||
@ -1001,7 +1011,7 @@
|
||||
this.ListContextDefragmentSeparator,
|
||||
this.ListContextSelectAllMenu});
|
||||
this.ListContextMenu.Name = "MainContextMenu";
|
||||
this.ListContextMenu.Size = new System.Drawing.Size(209, 486);
|
||||
this.ListContextMenu.Size = new System.Drawing.Size(209, 464);
|
||||
//
|
||||
// ListContextViewMenu
|
||||
//
|
||||
@ -1078,17 +1088,29 @@
|
||||
// ListContextNewFolderMenu
|
||||
//
|
||||
this.ListContextNewFolderMenu.Name = "ListContextNewFolderMenu";
|
||||
this.ListContextNewFolderMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.ListContextNewFolderMenu.Size = new System.Drawing.Size(146, 22);
|
||||
this.ListContextNewFolderMenu.Text = "Folder...";
|
||||
this.ListContextNewFolderMenu.Click += new System.EventHandler(this.ListContextNewFolderMenu_Click);
|
||||
//
|
||||
// ListContextNewRpfArchiveMenu
|
||||
//
|
||||
this.ListContextNewRpfArchiveMenu.Name = "ListContextNewRpfArchiveMenu";
|
||||
this.ListContextNewRpfArchiveMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.ListContextNewRpfArchiveMenu.Size = new System.Drawing.Size(146, 22);
|
||||
this.ListContextNewRpfArchiveMenu.Text = "RPF Archive...";
|
||||
this.ListContextNewRpfArchiveMenu.Click += new System.EventHandler(this.ListContextNewRpfArchiveMenu_Click);
|
||||
//
|
||||
// toolStripSeparator13
|
||||
//
|
||||
this.toolStripSeparator13.Name = "toolStripSeparator13";
|
||||
this.toolStripSeparator13.Size = new System.Drawing.Size(143, 6);
|
||||
//
|
||||
// ListContextNewYtdFileMenu
|
||||
//
|
||||
this.ListContextNewYtdFileMenu.Name = "ListContextNewYtdFileMenu";
|
||||
this.ListContextNewYtdFileMenu.Size = new System.Drawing.Size(146, 22);
|
||||
this.ListContextNewYtdFileMenu.Text = "YTD File...";
|
||||
this.ListContextNewYtdFileMenu.Click += new System.EventHandler(this.ListContextNewYtdFileMenu_Click);
|
||||
//
|
||||
// ListContextImportFbxMenu
|
||||
//
|
||||
this.ListContextImportFbxMenu.Name = "ListContextImportFbxMenu";
|
||||
@ -1287,18 +1309,6 @@
|
||||
//
|
||||
this.VSExtender.DefaultRenderer = null;
|
||||
//
|
||||
// toolStripSeparator13
|
||||
//
|
||||
this.toolStripSeparator13.Name = "toolStripSeparator13";
|
||||
this.toolStripSeparator13.Size = new System.Drawing.Size(177, 6);
|
||||
//
|
||||
// ListContextNewYtdFileMenu
|
||||
//
|
||||
this.ListContextNewYtdFileMenu.Name = "ListContextNewYtdFileMenu";
|
||||
this.ListContextNewYtdFileMenu.Size = new System.Drawing.Size(180, 22);
|
||||
this.ListContextNewYtdFileMenu.Text = "YTD File...";
|
||||
this.ListContextNewYtdFileMenu.Click += new System.EventHandler(this.ListContextNewYtdFileMenu_Click);
|
||||
//
|
||||
// ExploreForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@ -1466,5 +1476,6 @@
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolsJenkIndMenu;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
|
||||
private System.Windows.Forms.ToolStripMenuItem ListContextNewYtdFileMenu;
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolsAudioExplorerMenu;
|
||||
}
|
||||
}
|
@ -241,6 +241,10 @@ namespace CodeWalker
|
||||
Scenarios.EnsureScenarioTypes(FileCache);
|
||||
|
||||
UpdateStatus("File cache loaded.");
|
||||
|
||||
Invoke(new Action(() => {
|
||||
ToolsAudioExplorerMenu.Enabled = true;
|
||||
}));
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -4334,6 +4338,12 @@ namespace CodeWalker
|
||||
f.Show(this);
|
||||
}
|
||||
|
||||
private void ToolsAudioExplorerMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
AudioExplorerForm f = new AudioExplorerForm(FileCache);
|
||||
f.Show(this);
|
||||
}
|
||||
|
||||
private void ToolsJenkGenMenu_Click(object sender, EventArgs e)
|
||||
{
|
||||
JenkGenForm f = new JenkGenForm();
|
||||
|
@ -262,16 +262,6 @@
|
||||
e2d2SZBn3BDEyPiVG5X23Ap3LtwYqxPDuBkxUEmGNWnPzTCEn1GZjBBcYawROqpiopbZ8v/CtN9mmB+9
|
||||
1vZY1yV7KT9+37JAwB1LBeyfTv8N11OX0LGtniroCF2hd2L+f3A9qqp2iWbL30hjPP3/CJi+jvVtWwLw
|
||||
A4Rmgl76+inbAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="SearchButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADVSURBVDhPpVIxDoMwDORJfQN7pI5hz1pmytSJ7/EFhrYZ
|
||||
MqSVgDXlIhslaoga9aQTsn1nOyFVDsuynNd1HTe6gCPyJDnGJrpN0+T6vnd1Xe9EjDzqJP0GJkAkhIjM
|
||||
TOSpSXoTrMmTu+7qHvene9m3/7aX1udRh44sMXBWnsZmJmKuQUeWGFiPRaGZKaXMN/hrg3meTygopbyo
|
||||
6A7IbIdh2KekmPwLR+amaaI4+Q6OzDiGMcafNWD8EnNmrbVFnaRppBr8bGaETYrNDG4CFpsZMJaZq+oD
|
||||
NQar60zqQI0AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="SearchGlobalButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
@ -291,6 +281,16 @@
|
||||
lVY67e7NJiI/2QxXrEetVVZsAY5938U5NzUbthbgknMW7735iOnYsB0AqBXXlJL5jOnYsDUBqA1uMcbh
|
||||
mYyuz6aAU/M9hKDP3GR0ffYegNrwXEpRADdZr5+aAlB7UAB3j1V/Anh1j1UD4Fub4YrN8HPL9gAVE1vf
|
||||
J6IiRgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="SearchButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADVSURBVDhPpVIxDoMwDORJfQN7pI5hz1pmytSJ7/EFhrYZ
|
||||
MqSVgDXlIhslaoga9aQTsn1nOyFVDsuynNd1HTe6gCPyJDnGJrpN0+T6vnd1Xe9EjDzqJP0GJkAkhIjM
|
||||
TOSpSXoTrMmTu+7qHvene9m3/7aX1udRh44sMXBWnsZmJmKuQUeWGFiPRaGZKaXMN/hrg3meTygopbyo
|
||||
6A7IbIdh2KekmPwLR+amaaI4+Q6OzDiGMcafNWD8EnNmrbVFnaRppBr8bGaETYrNDG4CFpsZMJaZq+oD
|
||||
NQar60zqQI0AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="MainStatusBar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
@ -304,7 +304,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADo
|
||||
HwAAAk1TRnQBSQFMAgEBGAEAAbgBAQG4AQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
HwAAAk1TRnQBSQFMAgEBGAEAAcgBAQHIAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAAXADAAEBAQABCAYAARwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
|
212
CodeWalker/Tools/AudioExplorerForm.Designer.cs
generated
Normal file
212
CodeWalker/Tools/AudioExplorerForm.Designer.cs
generated
Normal file
@ -0,0 +1,212 @@
|
||||
|
||||
namespace CodeWalker.Tools
|
||||
{
|
||||
partial class AudioExplorerForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AudioExplorerForm));
|
||||
this.MainSplitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.HierarchyTreeView = new CodeWalker.WinForms.TreeViewFix();
|
||||
this.PropertiesTabControl = new System.Windows.Forms.TabControl();
|
||||
this.DetailsTabPage = new System.Windows.Forms.TabPage();
|
||||
this.DetailsPropertyGrid = new CodeWalker.WinForms.PropertyGridFix();
|
||||
this.XmlTabPage = new System.Windows.Forms.TabPage();
|
||||
this.XmlTextBox = new FastColoredTextBoxNS.FastColoredTextBox();
|
||||
this.NameComboBox = new System.Windows.Forms.ComboBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.MainSplitContainer)).BeginInit();
|
||||
this.MainSplitContainer.Panel1.SuspendLayout();
|
||||
this.MainSplitContainer.Panel2.SuspendLayout();
|
||||
this.MainSplitContainer.SuspendLayout();
|
||||
this.PropertiesTabControl.SuspendLayout();
|
||||
this.DetailsTabPage.SuspendLayout();
|
||||
this.XmlTabPage.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.XmlTextBox)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// MainSplitContainer
|
||||
//
|
||||
this.MainSplitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.MainSplitContainer.Location = new System.Drawing.Point(0, 37);
|
||||
this.MainSplitContainer.Name = "MainSplitContainer";
|
||||
//
|
||||
// MainSplitContainer.Panel1
|
||||
//
|
||||
this.MainSplitContainer.Panel1.Controls.Add(this.HierarchyTreeView);
|
||||
//
|
||||
// MainSplitContainer.Panel2
|
||||
//
|
||||
this.MainSplitContainer.Panel2.Controls.Add(this.PropertiesTabControl);
|
||||
this.MainSplitContainer.Size = new System.Drawing.Size(823, 527);
|
||||
this.MainSplitContainer.SplitterDistance = 366;
|
||||
this.MainSplitContainer.TabIndex = 0;
|
||||
//
|
||||
// HierarchyTreeView
|
||||
//
|
||||
this.HierarchyTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.HierarchyTreeView.FullRowSelect = true;
|
||||
this.HierarchyTreeView.HideSelection = false;
|
||||
this.HierarchyTreeView.Location = new System.Drawing.Point(0, 0);
|
||||
this.HierarchyTreeView.Name = "HierarchyTreeView";
|
||||
this.HierarchyTreeView.ShowRootLines = false;
|
||||
this.HierarchyTreeView.Size = new System.Drawing.Size(366, 527);
|
||||
this.HierarchyTreeView.TabIndex = 0;
|
||||
this.HierarchyTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.HierarchyTreeView_AfterSelect);
|
||||
//
|
||||
// PropertiesTabControl
|
||||
//
|
||||
this.PropertiesTabControl.Controls.Add(this.DetailsTabPage);
|
||||
this.PropertiesTabControl.Controls.Add(this.XmlTabPage);
|
||||
this.PropertiesTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.PropertiesTabControl.Location = new System.Drawing.Point(0, 0);
|
||||
this.PropertiesTabControl.Name = "PropertiesTabControl";
|
||||
this.PropertiesTabControl.SelectedIndex = 0;
|
||||
this.PropertiesTabControl.Size = new System.Drawing.Size(453, 527);
|
||||
this.PropertiesTabControl.TabIndex = 0;
|
||||
//
|
||||
// DetailsTabPage
|
||||
//
|
||||
this.DetailsTabPage.Controls.Add(this.DetailsPropertyGrid);
|
||||
this.DetailsTabPage.Location = new System.Drawing.Point(4, 22);
|
||||
this.DetailsTabPage.Name = "DetailsTabPage";
|
||||
this.DetailsTabPage.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.DetailsTabPage.Size = new System.Drawing.Size(445, 501);
|
||||
this.DetailsTabPage.TabIndex = 0;
|
||||
this.DetailsTabPage.Text = "Details";
|
||||
this.DetailsTabPage.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// DetailsPropertyGrid
|
||||
//
|
||||
this.DetailsPropertyGrid.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.DetailsPropertyGrid.HelpVisible = false;
|
||||
this.DetailsPropertyGrid.Location = new System.Drawing.Point(3, 3);
|
||||
this.DetailsPropertyGrid.Name = "DetailsPropertyGrid";
|
||||
this.DetailsPropertyGrid.Size = new System.Drawing.Size(439, 495);
|
||||
this.DetailsPropertyGrid.TabIndex = 26;
|
||||
this.DetailsPropertyGrid.ToolbarVisible = false;
|
||||
//
|
||||
// XmlTabPage
|
||||
//
|
||||
this.XmlTabPage.Controls.Add(this.XmlTextBox);
|
||||
this.XmlTabPage.Location = new System.Drawing.Point(4, 22);
|
||||
this.XmlTabPage.Name = "XmlTabPage";
|
||||
this.XmlTabPage.Size = new System.Drawing.Size(537, 501);
|
||||
this.XmlTabPage.TabIndex = 1;
|
||||
this.XmlTabPage.Text = "XML";
|
||||
this.XmlTabPage.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// XmlTextBox
|
||||
//
|
||||
this.XmlTextBox.AutoCompleteBracketsList = new char[] {
|
||||
'(',
|
||||
')',
|
||||
'{',
|
||||
'}',
|
||||
'[',
|
||||
']',
|
||||
'\"',
|
||||
'\"',
|
||||
'\'',
|
||||
'\''};
|
||||
this.XmlTextBox.AutoIndentChars = false;
|
||||
this.XmlTextBox.AutoIndentCharsPatterns = "";
|
||||
this.XmlTextBox.AutoIndentExistingLines = false;
|
||||
this.XmlTextBox.AutoScrollMinSize = new System.Drawing.Size(2, 14);
|
||||
this.XmlTextBox.BackBrush = null;
|
||||
this.XmlTextBox.CharHeight = 14;
|
||||
this.XmlTextBox.CharWidth = 8;
|
||||
this.XmlTextBox.CommentPrefix = null;
|
||||
this.XmlTextBox.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||
this.XmlTextBox.DelayedEventsInterval = 1;
|
||||
this.XmlTextBox.DisabledColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
|
||||
this.XmlTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.XmlTextBox.Font = new System.Drawing.Font("Courier New", 9.75F);
|
||||
this.XmlTextBox.IsReplaceMode = false;
|
||||
this.XmlTextBox.Language = FastColoredTextBoxNS.Language.XML;
|
||||
this.XmlTextBox.LeftBracket = '<';
|
||||
this.XmlTextBox.LeftBracket2 = '(';
|
||||
this.XmlTextBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.XmlTextBox.Name = "XmlTextBox";
|
||||
this.XmlTextBox.Paddings = new System.Windows.Forms.Padding(0);
|
||||
this.XmlTextBox.RightBracket = '>';
|
||||
this.XmlTextBox.RightBracket2 = ')';
|
||||
this.XmlTextBox.SelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
|
||||
this.XmlTextBox.ServiceColors = ((FastColoredTextBoxNS.ServiceColors)(resources.GetObject("XmlTextBox.ServiceColors")));
|
||||
this.XmlTextBox.Size = new System.Drawing.Size(537, 501);
|
||||
this.XmlTextBox.TabIndex = 1;
|
||||
this.XmlTextBox.Zoom = 100;
|
||||
//
|
||||
// NameComboBox
|
||||
//
|
||||
this.NameComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.NameComboBox.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
|
||||
this.NameComboBox.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
|
||||
this.NameComboBox.FormattingEnabled = true;
|
||||
this.NameComboBox.Location = new System.Drawing.Point(12, 8);
|
||||
this.NameComboBox.Name = "NameComboBox";
|
||||
this.NameComboBox.Size = new System.Drawing.Size(453, 21);
|
||||
this.NameComboBox.TabIndex = 1;
|
||||
this.NameComboBox.TextChanged += new System.EventHandler(this.NameComboBox_TextChanged);
|
||||
//
|
||||
// AudioExplorerForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(823, 564);
|
||||
this.Controls.Add(this.NameComboBox);
|
||||
this.Controls.Add(this.MainSplitContainer);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "AudioExplorerForm";
|
||||
this.Text = "Audio Explorer - CodeWalker by dexyfex";
|
||||
this.MainSplitContainer.Panel1.ResumeLayout(false);
|
||||
this.MainSplitContainer.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.MainSplitContainer)).EndInit();
|
||||
this.MainSplitContainer.ResumeLayout(false);
|
||||
this.PropertiesTabControl.ResumeLayout(false);
|
||||
this.DetailsTabPage.ResumeLayout(false);
|
||||
this.XmlTabPage.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.XmlTextBox)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer MainSplitContainer;
|
||||
private System.Windows.Forms.ComboBox NameComboBox;
|
||||
private WinForms.TreeViewFix HierarchyTreeView;
|
||||
private System.Windows.Forms.TabControl PropertiesTabControl;
|
||||
private System.Windows.Forms.TabPage DetailsTabPage;
|
||||
private WinForms.PropertyGridFix DetailsPropertyGrid;
|
||||
private System.Windows.Forms.TabPage XmlTabPage;
|
||||
private FastColoredTextBoxNS.FastColoredTextBox XmlTextBox;
|
||||
}
|
||||
}
|
210
CodeWalker/Tools/AudioExplorerForm.cs
Normal file
210
CodeWalker/Tools/AudioExplorerForm.cs
Normal file
@ -0,0 +1,210 @@
|
||||
using CodeWalker.GameFiles;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace CodeWalker.Tools
|
||||
{
|
||||
public partial class AudioExplorerForm : Form
|
||||
{
|
||||
private GameFileCache GameFileCache { get; set; }
|
||||
|
||||
private Dictionary<string, RelData> NameComboLookup = new Dictionary<string, RelData>();
|
||||
|
||||
public AudioExplorerForm(GameFileCache gfc)
|
||||
{
|
||||
GameFileCache = gfc;
|
||||
InitializeComponent();
|
||||
LoadDropDowns();
|
||||
}
|
||||
|
||||
|
||||
private void LoadDropDowns()
|
||||
{
|
||||
if (!GameFileCache.IsInited) return;
|
||||
|
||||
NameComboLookup.Clear();
|
||||
NameComboBox.Items.Clear();
|
||||
NameComboBox.AutoCompleteCustomSource.Clear();
|
||||
List<string> namelist = new List<string>();
|
||||
void addItem(RelData item)
|
||||
{
|
||||
if (item == null) return;
|
||||
var str = GetRelDataTitleString(item);
|
||||
namelist.Add(str);
|
||||
NameComboLookup.Add(str, item);
|
||||
}
|
||||
if (GameFileCache.AudioSoundsDict != null)
|
||||
{
|
||||
//foreach (var kvp in GameFileCache.AudioConfigDict) addItem(kvp.Value);
|
||||
//foreach (var kvp in GameFileCache.AudioSpeechDict) addItem(kvp.Value);
|
||||
foreach (var kvp in GameFileCache.AudioSynthsDict) addItem(kvp.Value);
|
||||
foreach (var kvp in GameFileCache.AudioMixersDict) addItem(kvp.Value);
|
||||
foreach (var kvp in GameFileCache.AudioCurvesDict) addItem(kvp.Value);
|
||||
foreach (var kvp in GameFileCache.AudioCategsDict) addItem(kvp.Value);
|
||||
foreach (var kvp in GameFileCache.AudioSoundsDict) addItem(kvp.Value);
|
||||
foreach (var kvp in GameFileCache.AudioGameDict) addItem(kvp.Value);
|
||||
}
|
||||
NameComboBox.AutoCompleteCustomSource.AddRange(namelist.ToArray());
|
||||
NameComboBox.Text = "";
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private string GetRelDataTitleString(RelData item)
|
||||
{
|
||||
if (item == null) return "";
|
||||
var h = item.NameHash;
|
||||
var str = JenkIndex.TryGetString(h);
|
||||
if (string.IsNullOrEmpty(str)) str = GlobalText.TryGetString(h);//is this necessary?
|
||||
if (string.IsNullOrEmpty(str)) MetaNames.TryGetString(h, out str);
|
||||
if (string.IsNullOrEmpty(str)) str = h.Hex;
|
||||
var typeid = item.TypeID.ToString();
|
||||
var rel = item.Rel;
|
||||
if (rel != null)
|
||||
{
|
||||
switch (rel.RelType)
|
||||
{
|
||||
case RelDatFileType.Dat54DataEntries:
|
||||
typeid = ((Dat54SoundType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat149:
|
||||
case RelDatFileType.Dat150:
|
||||
case RelDatFileType.Dat151:
|
||||
typeid = ((Dat151RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat4:
|
||||
if (rel.IsAudioConfig) typeid = ((Dat4ConfigType)item.TypeID).ToString();
|
||||
else typeid = ((Dat4SpeechType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat10ModularSynth:
|
||||
typeid = ((Dat10RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat15DynamicMixer:
|
||||
typeid = ((Dat15RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat16Curves:
|
||||
typeid = ((Dat16RelType)item.TypeID).ToString();
|
||||
break;
|
||||
case RelDatFileType.Dat22Categories:
|
||||
typeid = ((Dat22RelType)item.TypeID).ToString();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return str + " : " + typeid;
|
||||
}
|
||||
|
||||
|
||||
private void LoadItemHierarchy(RelData item, TreeNode parentNode = null)
|
||||
{
|
||||
TreeNode node = null;
|
||||
if (parentNode == null)
|
||||
{
|
||||
HierarchyTreeView.Nodes.Clear();
|
||||
if (item == null) return;
|
||||
node = HierarchyTreeView.Nodes.Add(GetRelDataTitleString(item));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (item == null) return;
|
||||
node = parentNode.Nodes.Add(GetRelDataTitleString(item));
|
||||
}
|
||||
|
||||
node.Tag = item;
|
||||
|
||||
var synths = item.GetSynthHashes();
|
||||
var mixers = item.GetMixerHashes();
|
||||
var curves = item.GetCurveHashes();
|
||||
var categs = item.GetCategoryHashes();
|
||||
var sounds = item.GetSoundHashes();
|
||||
var games = item.GetGameHashes();
|
||||
|
||||
|
||||
if (synths != null)
|
||||
{
|
||||
foreach (var h in synths)
|
||||
|
||||
{
|
||||
if (GameFileCache.AudioSynthsDict.TryGetValue(h, out RelData child)) LoadItemHierarchy(child, node);
|
||||
}
|
||||
}
|
||||
if (mixers != null)
|
||||
{
|
||||
foreach (var h in mixers)
|
||||
{
|
||||
if (GameFileCache.AudioMixersDict.TryGetValue(h, out RelData child)) LoadItemHierarchy(child, node);
|
||||
}
|
||||
}
|
||||
if (curves != null)
|
||||
{
|
||||
foreach (var h in curves)
|
||||
{
|
||||
if (GameFileCache.AudioCurvesDict.TryGetValue(h, out RelData child)) LoadItemHierarchy(child, node);
|
||||
}
|
||||
}
|
||||
if (categs != null)
|
||||
{
|
||||
foreach (var h in categs)
|
||||
{
|
||||
if (GameFileCache.AudioCategsDict.TryGetValue(h, out RelData child)) LoadItemHierarchy(child, node);
|
||||
}
|
||||
}
|
||||
if (sounds != null)
|
||||
{
|
||||
foreach (var h in sounds)
|
||||
{
|
||||
if (GameFileCache.AudioSoundsDict.TryGetValue(h, out RelData child)) LoadItemHierarchy(child, node);
|
||||
}
|
||||
}
|
||||
if (games != null)
|
||||
{
|
||||
foreach (var h in games)
|
||||
{
|
||||
if (GameFileCache.AudioGameDict.TryGetValue(h, out RelData child)) LoadItemHierarchy(child, node);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (parentNode == null)
|
||||
{
|
||||
node.ExpandAll();
|
||||
HierarchyTreeView.SelectedNode = node;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void SelectItem(RelData item)
|
||||
{
|
||||
|
||||
DetailsPropertyGrid.SelectedObject = item;
|
||||
|
||||
XmlTextBox.Text = RelXml.GetXml(item);
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void NameComboBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (NameComboLookup.TryGetValue(NameComboBox.Text, out RelData item))
|
||||
{
|
||||
LoadItemHierarchy(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void HierarchyTreeView_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
var item = HierarchyTreeView.SelectedNode?.Tag as RelData;
|
||||
SelectItem(item);
|
||||
}
|
||||
}
|
||||
}
|
427
CodeWalker/Tools/AudioExplorerForm.resx
Normal file
427
CodeWalker/Tools/AudioExplorerForm.resx
Normal file
@ -0,0 +1,427 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="XmlTextBox.ServiceColors" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdGYXN0Q29sb3JlZFRleHRCb3gsIFZlcnNpb249Mi4xNi4yNC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWZiOGFhMTJiOTk0ZWY2MWIMAwAAAFFTeXN0
|
||||
ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2Vu
|
||||
PWIwM2Y1ZjdmMTFkNTBhM2EFAQAAACJGYXN0Q29sb3JlZFRleHRCb3hOUy5TZXJ2aWNlQ29sb3JzBgAA
|
||||
ACg8Q29sbGFwc2VNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxDb2xsYXBzZU1hcmtlckJh
|
||||
Y2tDb2xvcj5rX19CYWNraW5nRmllbGQqPENvbGxhcHNlTWFya2VyQm9yZGVyQ29sb3I+a19fQmFja2lu
|
||||
Z0ZpZWxkJjxFeHBhbmRNYXJrZXJGb3JlQ29sb3I+a19fQmFja2luZ0ZpZWxkJjxFeHBhbmRNYXJrZXJC
|
||||
YWNrQ29sb3I+a19fQmFja2luZ0ZpZWxkKDxFeHBhbmRNYXJrZXJCb3JkZXJDb2xvcj5rX19CYWNraW5n
|
||||
RmllbGQEBAQEBAQUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAA
|
||||
ABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5E
|
||||
cmF3aW5nLkNvbG9yAwAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAACAAAABfz///8UU3lzdGVtLkRy
|
||||
YXdpbmcuQ29sb3IEAAAABG5hbWUFdmFsdWUKa25vd25Db2xvcgVzdGF0ZQEAAAAJBwcDAAAACgAAAAAA
|
||||
AAAAlgABAAH7/////P///woAAAAAAAAAAKQAAQAB+v////z///8KAAAAAAAAAACWAAEAAfn////8////
|
||||
CgAAAAAAAAAATgABAAH4/////P///woAAAAAAAAAAKQAAQAB9/////z///8KAAAAAAAAAACWAAEACw==
|
||||
</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAMAICAAAAAAGACoDAAANgAAABAQAAAAABgAaAMAAN4MAABAQAAAAAAYACgyAABGEAAAKAAAACAA
|
||||
AABAAAAAAQAYAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////v8/u3v+Pn6//7+////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//7+/vX3/rzA3OHl9fz9////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////7//+zv+3Z6qcLI5Pr7////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////7+/+br+15in6+33vf5//////////////////7+//7+////////////////////
|
||||
//////////////////////////////3+//v8//v8//3+//////////////////////7+/+Ho+1dana20
|
||||
4/b4//////////z9//P2/+Tp/ezw/vz9//////////////////////////////////////////7///X4
|
||||
/9Pa+tPa+/H1//z9//////////////////7+/93k+SsscaSr3PX3//////7+//L1/7W98AcWgrvC8Pj6
|
||||
//////////////////////////////////////////7+/+bs/xohiAEJdrvF9+7y//z9////////////
|
||||
//7+/9rh+CEkapmh0/T3//////j6/9HZ/AEHcgEEb9LZ+/r7////////////////////////////////
|
||||
//////////7//+/z/3F+zAAAXwQLcZai3fb4//////////////3+/97l/E9Tmaau4fT3/////+/0/1dd
|
||||
sAAAV7a/8/H1//7+//////////////////////////////////////////////r8/+jv/46Y3QUUf6Ot
|
||||
5PX4//////////////3+/9zj+3Z6wLe/7fX4//////D0/212xnaAzerw//z9////////////////////
|
||||
//////////////////////////////////v8/+/z/+Dm+/D0//z9//////////7+//j6/9Pd+UhLjb/H
|
||||
9/D0//3+//n7/+nt/+jt//n7////////////////////////////////////////////////////////
|
||||
//7///7+//7+//7+//////////r8/+7z/83W+ImU2A0UdFNarr/K9env//X4//z9//3+//7/////////
|
||||
//////////////////////////////////////////////////////////////////7///j6/+Pq/255
|
||||
xhckjE5XsVVftUlTqwAKeTA9nr3H8+7z//v8////////////////////////////////////////////
|
||||
//////////////////////////////7+//b4/9Tc+Sc0mRonj8rV/crX/ZSb48rX/brG8wwWgQAEdJei
|
||||
4efu//n7//7+//z9//z9//z9//z9//3+//////////////////////////////3+//f5/+3y/+nv/+ft
|
||||
/8vV+io2mImU2M7c/7vG9yIvlQAOfCg4mM3Y/s/c/4aR1AQRfGtzwtni/ebt/9vi/tri/tXd+9Tc+O3x
|
||||
/vz9//////////////////////////n6/87V+FVftkRPrFlnvSEqjQoUfmJvwWFvvg0TfQQIcxEchwAD
|
||||
cy89n19rvVVitQwZgwAAaiMrkT9NqTVBoiw3mhQihig1mNLX+fv8//////////////////////////b5
|
||||
/52l4EFLqoCK03yF0VBctGhyw52o5GVrvQAAaneBzsHM+jA3mhYgiTtIpJOf3ouW2AAAbmh0wbbA8bS+
|
||||
7qiz5pCb16+56e/z//3+//////////////////////////v8//H1/+vw/+zx/+nv/7/J9YqP3MbP/8LM
|
||||
+hwqkFZftaCp5EhRrcTQ+9jj/8rW/UJMqn6J0ebt//X3//f5//b4//X3//f5//z9////////////////
|
||||
//////////7+//z9//3+//////////3+/+7z/6at64iP3aWs7XN8zRIfhyUykp2o5MHM+oKM0xonjY6X
|
||||
2+jv//v8//////7+//n7//b5//r7//7///////////////////7+//f5/+rw/9Pa9fL0/v7/////////
|
||||
//v8//H1/+Tr/7i/91liu0NPq0VQrS06m0NNqDdCoYqU1+nv//v8//////////n7/9zi/qSt59ri/fL1
|
||||
//v8//7///////z9//D0/8rT+h0sjkVQrPD0//////////////////////z9/+7z/8LL9Jqk4aGq6LW/
|
||||
8c3W9+Xs/vH1//v8//////////////f5/6at5gAAbxIfh6u16+Po/fr7//////b5/6ev5gAIeAAPernC
|
||||
8fX4//////////3+//v8//z9//////3+//j6//P3//P2//b4//r8//7+//7+//v8//r8//3+//////v8
|
||||
/+Xr/nuIzwAAbBseg5Sb2fb5//////f5/8DF8pWe3d/n/vT3//39//////v8/+zx/87V9+3x/v3+////
|
||||
//3+//j6//X4//v8//////////n7/+Dm/snR9fD0//39//z8/fv8/+3y/8LK9aGq4dfd9/n7//////z9
|
||||
//b5//X4//v8//////////7+/+7z/4aP1gEPet7k/f39//////f5/83U+ZCZ2u3x/v7+//////P3/215
|
||||
wgAJd7fB8/L1//7+//////3+//j6//f5//r8//7+//////////////////////////////j6/87W/AAA
|
||||
X2duue3y//7+//////D0/05asBQfidzj/P39//////X4/6Su6AAAXBccgtff/vv8////////////////
|
||||
//////////////////////////////////////P3/3F8xhYli9Xe/fn6/////////+3y/1pltQAJd9be
|
||||
/fv8//////z9/+rw/36I0Bknjs/W+vv8////////////////////////////////////////////////
|
||||
//////f5/8HI7tnf+/X4//7+/////////+/0/3R7xgAAb9ng/Pz9//////////n7/+Ln/dLY+fP2//3+
|
||||
//////////////////////////////////////////////////////3+//r7//v8//7+////////////
|
||||
//b4/7/F84eP0e/0//7+//////////7+//z9//v8//3+////////////////////////////////////
|
||||
//////////////////////////////////////////////////z9//b5//X4//v8////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////w////4
|
||||
P///+D////g8//D4MH/geCB/4Dggf+A4IH/wOCD/+DAB//hgAf//gAP//wAAB/AAAAPwAAAD8AAAA/AA
|
||||
AAfjAAEHgYADAQPgBwEDEAEBAghgAQwIIEH8CCB//Bggf/wYMH/8ODD///h/////////////KAAAABAA
|
||||
AAAgAAAAAQAYAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+vv/fL1/v///wAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///4+Vx7/F5v///wAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAP///4CHtrS62////////////////////wAAAAAAAAAAAP////H0/vf6/v//
|
||||
/////////4yTwrrB4f///+zw+7rA6P39/////wAAAAAAAAAAAP///56l2BkcguXr/P///////42Uw8jO
|
||||
6P///ysvjWVqtP///////wAAAAAAAAAAAP////D0/0hPpsDG6////////6y02d7k8////3qAx+/z/f//
|
||||
/wAAAAAAAAAAAAAAAAAAAP///////////////8zT8V5ns1Rcrdzh9f///////////wAAAAAAAAAAAAAA
|
||||
AAAAAP////////7+/6ix3nmBxFthtmdwu09WqbC54/v9//r8//j6//39/wAAAAAAAAAAAOjt/H6I0FJc
|
||||
skpSqHF+wRMahFZhs4iT1AsNc1pgrm52v2RsuO/z/gAAAP////////L2/cLJ7rrD64+V4DY+ozU+mYmU
|
||||
0X2Hy1hfss7V8urv/PP2/v///wAAAP///+Pp+d/k9////////+Pp/4uR3ysymW14xYOM0fD0/P///+Xq
|
||||
+ri/6Pj6/wAAAOrv/j5DnbS75P////////////X4/+/0/ubr+/r7/////////9rh+hgZhKGo2QAAAPDz
|
||||
/eLn+f////j6/2Nqttrg9////+Hn+P3+//3+/1hescLJ6/////L2/eru/AAAAAAAAAAAAP///8rR70tR
|
||||
p/3+//v8/zY6jNPY7////09WqWpwu////wAAAAAAAAAAAAAAAAAAAAAAAPb4/vr7//////v8/5Wd1eHm
|
||||
+P////v8//T3/wAAAAAAAAAAAAAAAP//AAD8PwAA/D8AAPwDAACAAwAAgAMAAIAHAADABwAAwAEAAMAB
|
||||
AAAAAQAAAAEAAAABAAAAAQAAwAcAAOAPAAAoAAAAQAAAAIAAAAABABgAAAAAAAAwAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////v7//f7//P3//P3//P3/
|
||||
/f7//v7/////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////v7//P3/
|
||||
+fv/+fv/+Pr/+fv/+vv//P3//v//////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////f7/+fr/8/b/7PL/5+3/6e/+9Pf/+vv//v7/////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////P3/9/r/6O7/cXe1UVaet7z17fL/+Pr//f3/////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////+/z/9Pj/4Oj/NzyCUlOd2dz/6O//9Pf//P3/////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////+vv/8vb/2+P9X2OmREGLnqPd
|
||||
4+v/8vb/+/z/////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////+vv/8fb/
|
||||
1N35bXK1JSRtbHGz5O7/8fX/+/z/////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////+vv/8PX/3Ob/U1eaDwtXjZLT4+z/8fX/+/z/////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////+vv/8fb/2eP+MjR6AAA+c3i34Or/8fX/+/z/////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////+vv/8vb/1d/7MS91AAA1UFSS4On/8vb/+/z/////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////+vv/8fb/2OL+NjZ7AAArX2Ok
|
||||
4uz/8fX/+/z/////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////+vv/8fb/
|
||||
2eP/LjJ1DAxKfYTE4Or/8fX/+/z//////////////////////////////v7//v7//f7//f7//v7//v//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////+vv/8PX/3OX/gILIR0eVeoHC3eb/8fX/+/z//////////////////////v7//P3/+fv/+Pr/
|
||||
+Pr/+Pr/+vv//P3//v7/////////////////////////////////////////////////////////////
|
||||
/////////////////////////////v7//f7//P3/+vv/+vv/+/z//f3//v7/////////////////////
|
||||
////////////////////////+vv/8PX/2eP9ZWeqHx1obnOz4Or/8fX/+/z//////////////////v7/
|
||||
+/z/9fj/8vb/8PX/7vT/8fb/9fj/+fr//f7/////////////////////////////////////////////
|
||||
/////////////////////////////////////////v///P3/+Pr/9fj/9fj/9Pj/9Pf/9vn/+/z//v7/
|
||||
////////////////////////////////////////+vv/8fb/2eP9ODp9AAA5jZDQ5O7/8PX/+/z/////
|
||||
/////////v7/+/z/9Pf/7fP/5u//wsz6j5XfuMDx7fL/9vn//P3/////////////////////////////
|
||||
/////////////////////////////////////////////////////////f7/+Pr/8/b/5+3/2eH/2uP/
|
||||
5u3/7fP/8/b/+vv//f7/////////////////////////////////////+vv/8PX/3ef/U1ebBgVKio/O
|
||||
4uz/8fX/+/z//////////v///P3/9fj/7fP/4uv/hIzZHSWPAABmU1i14ub/9/r/+/z/////////////
|
||||
/////////////////////////////////////////////////////////////////////////P3/9Pf/
|
||||
7/X/09z/TlSzNzWYj5bh5O7/6/L/8vb/+fv//f7/////////////////////////////////+vv/8fX/
|
||||
2eP/QUWIEhBZbnSz3uj/8fb/+/z//////////f7/+Pr/7/T/6PH/iI7cAABvAABqAABncXjK6O//9fj/
|
||||
+/z/////////////////////////////////////////////////////////////////////////////
|
||||
////////+/z/8/f/2uD/Z27EAABnAABiBgl4jJTd5vD/6O//8vX/+fv//f7/////////////////////
|
||||
////////+vv/8fb/2OP/Mjd6AQE6ZGup4er/8fX/+/z/////////+vz/8fX/6/T/xM/8ExyJAABwAABu
|
||||
GySRxc387fT/9ff//P3/////////////////////////////////////////////////////////////
|
||||
////////////////////////+vz/8/f/1Nr/MzqhAABhAxOBAARyBgp5jpLg5Oz/7PP/9Pf/+vz//v7/
|
||||
////////////////////////+vv/8fb/2eP/KCtvBwZOjJHS4Or/8fX/+/z//////f7/9/n/7fP/3+j/
|
||||
UFq3AABtAAZ3BAh6mZ/n5vD/7vP/+Pr//v7/////////////////////////////////////////////
|
||||
////////////////////////////////////////+/z/9Pj/6e//sbb1KzWcAABwBhaBAAFyAgp6fITR
|
||||
1d777/T/+Pr//f7/////////////////////////+vv/8PX/3+j/WF2hBglTnaTj5O3/8PX/+/z/////
|
||||
/P3/9Pf/6vL/k5riAAByAAR0AABrY2vE4ur/6vH/9ff//P3/////////////////////////////////
|
||||
/////////////////////////////////////////////////////////f3/9/n/7fL/5O3/ytX/RU6w
|
||||
AABpAA5+AABuAABnhord6e7/+fv//f7/////////////////////////+vv/7/T/3+j/k5jbT1KdgYjJ
|
||||
3uf+8fX/+/z/////+/z/9fn/4ef/NDqhAABnAABrJjCU0Nn/5/D/8fX/+vv//v7/////////////////
|
||||
/////////////////////////////////////////////////////////////////////////v7/+/z/
|
||||
9vn/7vP/6vP/ztb/O0CmAABpAABrQkuoxMn57PH/+Pr//f7/////////////////////////+vv/8PX/
|
||||
2+X/en/CUFGak5nY3+j/8fX//P3//////P3/9fj/4en/i5DbNT2hIyuTpqzv4uz/7vP/9/n//f7/////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////v7//P3/9vn/7/P/6vL/ytH/X2i9XWi7wsf/6e//8/f/+Pr//v7/////////////////
|
||||
////////+vv/8PX/3OX/WF2hW1ylvMD+3uf/8PX/+/z//////f7/9vn/7fP/4uj/j5Pgf4LV3+X/6fD/
|
||||
9Pf//P3/////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////v///P3/+Pr/8vX/7fP/5+//5u7/6vD/8PT/9vn//P3//v7/
|
||||
/////////////////////f7/9/n/7fP/0tz9LDJzNjh/nqTk2uT/7fL/9/n//f7//f7/+fv/8/b/7PL/
|
||||
3eX/zM//5ev/9fj/+fv//v7/////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////v///f3/+vv/9/n/9vn/9fj/9vn/
|
||||
+fr//P3//v7//////////////v///f7/+vv/9vn/7/T/5vD/2Ob/VFubERNdoajk4u//5O7/7vP/9vj/
|
||||
+fr/+vv/+Pr/9fj/9Pj/9fj/9fj/+Pr//P3/////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////v///v7/
|
||||
/f7//P3//P3//f3//v7//v///////////////f7/+vz/9vn/8fX/7vT/5O3/3eb/z9n/cHjICxN5d37L
|
||||
z9n/2eP/5O3/6/L/8PT/9Pf/9/n/+vv/+vv/+/z//P3//f3//v7/////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////P3/+Pr/8/b/7vT/6vL/z9r+jZjeQUeq
|
||||
IiuQCBN3AAFrBRB8Nj2iUViym6XlydH/4+z/6/L/8PT/9/n/+/z//f7//v//////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////f3/9/n/8fX/6/L/3uf/
|
||||
mKTkLzibAABoAAB0Fx+HDBh7FSGDAg16AABYAABlCBB/Ji2UhYza1+D/6PL/7fL/9Pf/+vv//f7/////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////v7//P3/9/n/
|
||||
8PT/7PT/z9j/XmO+AABtAABcMDSXoajsu8X7VV+5hYzblZ/fTVSxFSKMAABkAABnAAN2Qkmpsbrz5e3/
|
||||
6vH/8fX/+Pr//P3//v//////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////P3/9/n/8PX/7PT/vcn3LTOZAABaAgR1ZWzD0Nf/5vL/1OP/l53lzs3/6fP/4+7/sLzwZ23CBxSD
|
||||
AABnAABlHiaSmqHo3+j/5+//7/T/9vn//P3//v7/////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////v7/
|
||||
/v7//v7//v7//f7/+/z/9vj/7vP/7PX/tcLzEBeGAABkPEWlqLPt2eX/4e7/3On/uMX1gofVe3vPhYzY
|
||||
z93+5/X/4e3/lJ3gHiOPAABtAABqChiEbHLIytD/5/D/7PL/8/f/+Pr/+fr/+Pr/+Pr/+Pr/+Pr/+Pr/
|
||||
+Pr/+fv/+vv/+/z//f7//v7/////////////////////////////////////////////////////////
|
||||
/v7//f7/+/z/+fv/9/n/9vj/9fj/9Pf/8fX/7PL/4uv/l6HgDhF7AAN4iZDe0d7/3uz/4vD/w83/VVm3
|
||||
ICiSAAFyAABlAABwaHTD1N//2un/3er/w838ZW3BEyOJJzKVAQ16NDmfwsn75fD/5u7/7PL/7vP/7fP/
|
||||
7fP/7fL/7fP/7vP/7/T/8fb/9Pj/9vn/+fr//f3//v//////////////////////////////////////
|
||||
/////////////v7//P3/+Pr/9Pf/8fX/7vT/7PL/6/L/6fH/5u7/6vX/tsD0CQx4AAFwkZvi7ff/4vD/
|
||||
4fD/z9j/OkGlAABiAABwBxWAAAt7BBN+P0uofYLUztb/4O7/6fb/6fP/qa7xQkyoBg56AABqMjugx8/+
|
||||
5fH/4Ov/4On/3uj/3eb/3+j/3uj/1+L/0d3/1d7/3+f/7fL/9vj/+vz//v7/////////////////////
|
||||
/////////////////////////////f7/+fr/8/f/6/L/2d//v8j6vcf5ucP1wMv8wM3+vMj6PkqoAABo
|
||||
UF25usP7tsPyvsr6sLrwQ0utAABqAAV1OUameIDRKDWZAAd2GyeOLDecmaHntsL0pbLom6riq7LzUlu0
|
||||
AANzBhR/AAZ0NT+ja3bBY2i/XGG6UViyWl65XGG7XGC6TVWvQU6pPkalODygqK7p8vb/+vz//v7/////
|
||||
/////////////////////////////////////////////P3/9/n/7/T/wcj2R0ysExeFERmGDxuIFB6K
|
||||
FBqICxSEAABsAAByDBiDCRSBBRCADhaFCRODAAh4AxF/AAl4CxeDHSaPAAp6AAN0AA19AAd3CBOBEBqH
|
||||
BhGBAAh5AABwAAByAAh5BhSCAxWCAABsAABvAABlAABnAABxAABjAABmAABhAABdAABYAABhCAt/q7Lr
|
||||
8/f/+vv//v7//////////////////////////////////////////////////P3/+fv/3uT/SE2vAABn
|
||||
CBB/GiCMLzmfLTWcGByJFRyKGCOOMj2gHymRDxiGGyOPLDCXBRF/AAh3BhaCEyKMICqTKC2WNDqfIzCV
|
||||
Awx6Eh+JHiaPAAR3AAZ5CxSDICWQX2q7Q1CqAA1+AAFxDxuHiZTbVGC4dHnQnabrTVqzY23EUV62Slau
|
||||
LjaZXWm9sLjz5ez/9vn/+fv//v7//////////////////////////////////////////////////P3/
|
||||
+Pv/4+n+e4LPfoPVpqv2vsf/zNX/zdb/xtH/v8v8pK7spKfysLb3vcr4ws784ej/hI/YAAZ1AAJzVF25
|
||||
yM//3Of/5+//i5LcAABpMzyfp6vxoKznlqHhqbbtx9H/8fz/kpvfAABiAABph4zc5PD/2OP/193/3un/
|
||||
1+D/2OH/1+D/0Nr/zNL/3+j/6/L/7/T/9vn//P3//v//////////////////////////////////////
|
||||
/////////////f7/+Pr/9Pf/6vD/5u3/3+b/4uv/6PD/5+//5O3/5/P/sL3sXmS7mZzoz9f/3+z/4e//
|
||||
mKLiEiKKCBF/KTWZr7T06/f/3ev/VF2zChSBipPcz9v+4u7/3ur/3ev/5/X/qrPrISmSDRJ2Xmq/3ur/
|
||||
4uv/6vH/7fP/7fL/7/T/7vP/7fP/7fP/8PX/8fX/9Pf/+Pr/+/z//v7/////////////////////////
|
||||
/////////////////////////////v7//P3/+Pr/9vn/9Pf/8vb/8vb/8/b/9Pf/7/T/6/L/tL/ubXLH
|
||||
en/Ti43gqavy0t3/nafjMj6fJzaaAAV1GyeOYmW7Nz6fAABgNj6i1N//3uz/2uX/3Oj/5PH/wcj7FR2J
|
||||
AAN0gong0tr/6fH/7/P/9vj/+Pr/+fv/+fv/+Pr/+Pr/+Pr/+fv/+vv//P3//f7//v//////////////
|
||||
/////////////////////////////////////////////////v7//f7//P3/+/z/+/z/+/z//f3//f7/
|
||||
+fv/8fX/5Oz/jpbfc3jObnXLcXfOk5rks7b4iY3dR1KvDhuEAABoAABlEBV9U12ytcD13Or/3en/3ej/
|
||||
1eL/q7fvGR+MKDKZbnnNxc/76PD/8fX/+fr//f7//v///////v7//f7//f3//P3//f3//f7//v//////
|
||||
/////////////////////////////////////////////////////v7//f7//P3//P3//f7//v7/////
|
||||
/////////////////f7/9vn/7/T/yNH5lJrleoDVmZ3pmpzpc3nPfoTWf4bYVFy3HSaLZ3PGsrb8v8r8
|
||||
y9n9q7jre4LRf4fUgIvXAwZ1AABrhYjb0NX/6PH/8PX/+Pr//f7//////////v///f3/+vv/+Pr/9/r/
|
||||
9/n/+Pr/+/z//f7//v7//////////////////////////////////////v///f7/+/z/+fr/9vj/9/n/
|
||||
+vz/+vv/+/z//v7//////////////////v7/+vz/8/f/7PL/2uT/t8H1srP6vcH+nKTnSlOxV2C7TVaz
|
||||
WGS8QUqmSlSuSFOtR1GtbXTKVl23ARB5AAh2AABnd33P3eP/4ur/7/T/9/n//P3//////////////P3/
|
||||
9/n/8vb/7PH/6fD/7PL/7vP/8vb/9vn/+/z//f7//////////////////////////////v7/+/z/+Pr/
|
||||
8/b/7/T/8Pb/6vH/3eP97vL++fr//P3//////////////////////f7/+vv/9fj/7/T/5+//z9f+t7v4
|
||||
uLn9Z2zFLzucFCGIMz6gGCCMAAd4AAl2Dx2EER+GXWK8c3XLKzKXd4LP4er/6/L/8PX/9/n//P3//v//
|
||||
/////////v7/+fv/8/b/7PP/y9H/i4/erLbt4er/5e3/7fP/8/b/+fv//f3//v7/////////////////
|
||||
/v7/+/z/9vj/8PT/6/L/3+n/x9H9aHTAZGvG3+b9+Pr/+/z//////////////////////////v7/+/z/
|
||||
+Pr/8vb/6/H/3OX+wMn4maDmdHrPWGG6T1a1eoHWcHfOTlayUlq1SlKubHjAxMj/0dn/4+v/7PL/8vb/
|
||||
+Pr//P3//v7//////////////f7/+fr/7vP/xsv5YGXAHymRKjKYYWS9rbLz4u3/6/P/8vb/+fr//f7/
|
||||
/////////////v//+/z/9vj/7fL/5e3/xs7/Y23BIiiSAABeLTab3+b/9/r/+/z/////////////////
|
||||
/////////////////f7/+vz/9vj/8PX/6vH/3eb/ydL8xM/6uMPyt733w8j/zNb/1Nz/3OT/4uz/5u7/
|
||||
7fP/8vb/9vj/+vz//f7//////////////////////f7/+fv/7vP/jpHiAAJ1CxaBER6GAABoFRmGbXbH
|
||||
0Nf/7PL/9fj//P3//////////////v7/+fv/8/f/4Of/hYvbKDGZAABuAABdAAZyi5La5+7/9vn/+/z/
|
||||
/////////////////////////////////////v7//P3/+fv/9ff/8vb/7/X/7fP/6/L/5u3/5ez/6fD/
|
||||
7PP/7/T/8fX/9Pf/9/n/+vv//P3//v7//v///////////////////////v7/+fv/8fb/2eH9fIbQExqH
|
||||
AABrAAp6AAFyAABwS0+uztX39vn/+vz//////////////f7/+Pr/8ff/qbLpAABrAABhAABwDBWAfobX
|
||||
5e3/8PX/9vn//f3//////////v///f7/+/z/+vv/+vv/+vz//P3//v7//v///v7//P3/+vz/+Pr/9/n/
|
||||
9vj/9vj/9vj/9vj/9/n/+fr/+/z//P3//f7//v7//f7//P3/+/z/+vz/+/z//P3//v7//////v7/+/z/
|
||||
9fj/7/T/5/H/uML1U1e1AAh5AABuAABvMjmdv8bz9vr/+vv//////////////f7/+fv/7/T/iY7aDxSA
|
||||
GiONa3XHsr7w4Oj/6/H/9Pf/+vz//v7//////v///P3/+Pr/9Pf/8/f/9fj/9fj/9vn/+/z//v7/////
|
||||
/////////v7//f7//P3/+/z/+/z//P3//f7//v///////////////v7/+/z/9/n/9vn/9vn/9Pj/9vn/
|
||||
+/z//v7//////f7/+vz/9fj/7/T/6vL/3ef/i5PbGRqJBQl5jJbZ6vH/9Pj/+/z//////////////f7/
|
||||
+fv/8fT/1Nn9t7/0wcr54er/7fT/8fX/9fj/+vv//f7//////////f3/+Pr/8PT/6/L/3uX/ztb/5Or/
|
||||
8/f/+Pr//f7//////////////f7/+vz/+Pr/+fv/+fv/+vv//f3//v///////////////P3/9/n/7vL/
|
||||
193/ztf/5u3/7vP/9Pf/+/z//v7//////v7//P3/+Pr/8fX/7PP/5/D/sLfxoKnk4+r/8vf/9/n//f3/
|
||||
/////////////v7/+/z/9vn/9Pf/8vb/8fb/8fX/9Pf/+Pr//P3//v7//////////v7/+vv/8vb/5+7/
|
||||
y9H/WWO9KSmSkZXj6vD/+Pv//P3//////////f7/+Pr/9fj/8vb/6O7/7vP/9fj/+Pr//f7/////////
|
||||
/v//+vv/8vb/7PP/hYraKiqKlp7i6PD/7fP/9ff/+/z//v7//////////f7/+vv/9ff/8fX/8PX/8vb/
|
||||
8/f/9vn/+/z//v7//////////////////f7/+/z/+vv/+fr/+fr/+vv//P3//v7/////////////////
|
||||
/P3/9fj/7PL/1d7/RUysAABhAABlg4ja6/D/+Pr//P3/////////+/z/9fj/6e7/2eD/h4/bnaXg7PH/
|
||||
9fj/+/z//////////v7/+Pr/8PX/y9X1JDGVAABaERWDoKnp6PH/7vP/9/n//P3//////////////v7/
|
||||
/P3/+vv/+fv/+fv/+vv//P3//v7//////////////////////////v7//v7//v7//v7//v//////////
|
||||
/////////////v7/+fv/8PX/7PX/ipPdAABsAABlQ1Cp3Ob/7vP/9/n//f7/////////+fv/9Pj/yNH5
|
||||
Ule2DBJ8Ljie0df+8fb/+fv//v7//////v7/+Pr/7/X/hY3YAABxAAl7AABuEBaEs7nz6fH/8fX/+vv/
|
||||
/v7//////////////////v///v7//v7//v7/////////////////////////////////////////////
|
||||
/////////////////////////////f3/9vn/7PL/0tn/LzidAQFsAAB0iZHb6vP/8PT/+fv//v//////
|
||||
/v7/+Pr/8vf/r7rqAAV4AABdPUen1N//7PL/9vn//f7//////v7/+fr/7/T/yc75S1G0AABrARKAAABp
|
||||
Qker0df/7fP/9/n//f7/////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////P3/9/n/5+7/cXXNAAd2AABuMDebzdT97PL/
|
||||
9vj//P3//////////v7/9/n/7/X/tL/uFCCLAABqHSqRvcf46fD/9Pf//f3/////////+vv/8vX/6vH/
|
||||
yM3+JC2XAABtAAV2Agx9q7Ly7vT/9vn//f7/////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////P3/9/r/4uj/WWO1AAVx
|
||||
KTaYu8T07fT/8vb/+vv//v7//////////v7/9/n/7vX/vsn1Iy2SAABrAQ99mp/o6PD/9Pf//P3/////
|
||||
/////P3/9/n/7vP/6fL/s7z2DBB/AABeQ0uttrr56e7/+Pr//f7/////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////P3/
|
||||
+fv/4ef6g4zNbXfFw8v27fT/8vb/+Pr//f3//////////////v7/9/n/7vT/yNL7MjucAABtBxF/nKLo
|
||||
6fH/9Pf//P3//////////v7/+/z/9fj/7fL/6/T/jZXbLzScrrP14en/7fL/+fv//v7/////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////f7/+vz/8PP91dr34+f/8vb/8/f/9/r//P3//v///////////////v7/+Pr/8PX/1N3/
|
||||
QUqmAQRxBQ98m6Dm7PL/9fj//P3//////////////v7/+/z/9ff/8PX/5ez/ytH94ej/8vb/9vj/+/z/
|
||||
/v7/////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////v7//P3/+vz/+fv/+Pr/+Pr/+vv//f3//v//////////////////
|
||||
/v//+fv/9Pf/2+L/SVGtAABsLTaZytL58fX/9/n//f7//////////////////v7/+/z/9/n/9fj/9vn/
|
||||
9fj/9vj/+vz//f7/////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////v7//f7//f3//f3//f3//v7//v//////
|
||||
////////////////////+/z/9vn/6e//mZ7gTVarr7bp6/H/9fj/+vv//v7/////////////////////
|
||||
/v7//f7/+/z/+/z/+/z//P3//v7/////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////f3/+Pr/9fj/6e7/4+n/8fb/9Pf/+Pr//f3/////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////v7//P3/+fv/+fv/+vv/+Pr/+vv/
|
||||
/P3//v7/////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////v7//f7/
|
||||
/f3//P3//f7//v7//v//////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
///////4D/////////AH////////8Af////////wB/////////AH////////8Af////////wB///////
|
||||
//AH////////8Af////////wB/////////AH////////8AfwP//////wB8Af//+Af/AHgB///wA/8AcA
|
||||
H///AB/wBgAf//8AD/AGAB///wAH8AYAH///AAPwBAAf//8AA/AEAD///wAD8AQAP///AAPwBAB///+A
|
||||
A/AEAP///8AD4AAA////4AcAAAH////wDgAAAf/////8AAAH//////gAAAf/////4AAAAf/////gAAAA
|
||||
////+AAAAAAAD//AAAAAAAAH/4AAAAAAAAf/gAAAAAAAB/+AAAAAAAAH/4AAAAAAAAf/gAAAAAAAB/+A
|
||||
AAAAAAAP/4AAAAAAAB//wAAAAABAf/4HwAAAAYAf8APAAAADgA/gA+AAAAMAA8AD8AAABwADgAP8AAAf
|
||||
AAOAA/4AAB8AA4ADAAAAAQADgAIAcA4AgAOABgBwDgBAA4AMAGAMADADwDwAYAwAOAfg+ABgBAAeH//4
|
||||
AEAEAB////gAwAYAH///+ADABgAf///4AcAGAB////gBwAcAH///+APAB4A////8B+AHwH//////4A//
|
||||
///////gD/////////Af//////////////8=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
61
CodeWalker/WorldForm.Designer.cs
generated
61
CodeWalker/WorldForm.Designer.cs
generated
@ -310,6 +310,7 @@ namespace CodeWalker
|
||||
this.ToolbarPanel = new System.Windows.Forms.Panel();
|
||||
this.SubtitleLabel = new System.Windows.Forms.Label();
|
||||
this.SubtitleTimer = new System.Windows.Forms.Timer(this.components);
|
||||
this.ToolsMenuAudioExplorer = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.StatusStrip.SuspendLayout();
|
||||
this.ToolsPanel.SuspendLayout();
|
||||
this.ToolsTabControl.SuspendLayout();
|
||||
@ -2750,6 +2751,7 @@ namespace CodeWalker
|
||||
this.ToolsMenuSelectionInfo,
|
||||
this.ToolsMenuProjectWindow,
|
||||
this.ToolsMenuCutsceneViewer,
|
||||
this.ToolsMenuAudioExplorer,
|
||||
this.ToolsMenuWorldSearch,
|
||||
this.ToolsMenuBinarySearch,
|
||||
this.ToolsMenuJenkGen,
|
||||
@ -2760,12 +2762,12 @@ namespace CodeWalker
|
||||
this.ToolsMenuExtractShaders,
|
||||
this.ToolsMenuOptions});
|
||||
this.ToolsMenu.Name = "ToolsMenu";
|
||||
this.ToolsMenu.Size = new System.Drawing.Size(170, 312);
|
||||
this.ToolsMenu.Size = new System.Drawing.Size(181, 356);
|
||||
//
|
||||
// ToolsMenuRPFBrowser
|
||||
//
|
||||
this.ToolsMenuRPFBrowser.Name = "ToolsMenuRPFBrowser";
|
||||
this.ToolsMenuRPFBrowser.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuRPFBrowser.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuRPFBrowser.Text = "RPF Browser...";
|
||||
this.ToolsMenuRPFBrowser.Visible = false;
|
||||
this.ToolsMenuRPFBrowser.Click += new System.EventHandler(this.ToolsMenuRPFBrowser_Click);
|
||||
@ -2773,14 +2775,14 @@ namespace CodeWalker
|
||||
// ToolsMenuRPFExplorer
|
||||
//
|
||||
this.ToolsMenuRPFExplorer.Name = "ToolsMenuRPFExplorer";
|
||||
this.ToolsMenuRPFExplorer.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuRPFExplorer.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuRPFExplorer.Text = "RPF Explorer...";
|
||||
this.ToolsMenuRPFExplorer.Click += new System.EventHandler(this.ToolsMenuRPFExplorer_Click);
|
||||
//
|
||||
// ToolsMenuSelectionInfo
|
||||
//
|
||||
this.ToolsMenuSelectionInfo.Name = "ToolsMenuSelectionInfo";
|
||||
this.ToolsMenuSelectionInfo.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuSelectionInfo.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuSelectionInfo.Text = "Selection info...";
|
||||
this.ToolsMenuSelectionInfo.Click += new System.EventHandler(this.ToolsMenuSelectionInfo_Click);
|
||||
//
|
||||
@ -2788,7 +2790,7 @@ namespace CodeWalker
|
||||
//
|
||||
this.ToolsMenuProjectWindow.Enabled = false;
|
||||
this.ToolsMenuProjectWindow.Name = "ToolsMenuProjectWindow";
|
||||
this.ToolsMenuProjectWindow.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuProjectWindow.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuProjectWindow.Text = "Project window...";
|
||||
this.ToolsMenuProjectWindow.Click += new System.EventHandler(this.ToolsMenuProjectWindow_Click);
|
||||
//
|
||||
@ -2796,14 +2798,14 @@ namespace CodeWalker
|
||||
//
|
||||
this.ToolsMenuCutsceneViewer.Enabled = false;
|
||||
this.ToolsMenuCutsceneViewer.Name = "ToolsMenuCutsceneViewer";
|
||||
this.ToolsMenuCutsceneViewer.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuCutsceneViewer.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuCutsceneViewer.Text = "Cutscene viewer...";
|
||||
this.ToolsMenuCutsceneViewer.Click += new System.EventHandler(this.ToolsMenuCutsceneViewer_Click);
|
||||
//
|
||||
// ToolsMenuWorldSearch
|
||||
//
|
||||
this.ToolsMenuWorldSearch.Name = "ToolsMenuWorldSearch";
|
||||
this.ToolsMenuWorldSearch.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuWorldSearch.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuWorldSearch.Text = "World search...";
|
||||
this.ToolsMenuWorldSearch.Click += new System.EventHandler(this.ToolsMenuWorldSearch_Click);
|
||||
//
|
||||
@ -2811,14 +2813,14 @@ namespace CodeWalker
|
||||
//
|
||||
this.ToolsMenuBinarySearch.Enabled = false;
|
||||
this.ToolsMenuBinarySearch.Name = "ToolsMenuBinarySearch";
|
||||
this.ToolsMenuBinarySearch.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuBinarySearch.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuBinarySearch.Text = "Binary search...";
|
||||
this.ToolsMenuBinarySearch.Click += new System.EventHandler(this.ToolsMenuBinarySearch_Click);
|
||||
//
|
||||
// ToolsMenuJenkGen
|
||||
//
|
||||
this.ToolsMenuJenkGen.Name = "ToolsMenuJenkGen";
|
||||
this.ToolsMenuJenkGen.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuJenkGen.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuJenkGen.Text = "JenkGen...";
|
||||
this.ToolsMenuJenkGen.Click += new System.EventHandler(this.ToolsMenuJenkGen_Click);
|
||||
//
|
||||
@ -2826,42 +2828,42 @@ namespace CodeWalker
|
||||
//
|
||||
this.ToolsMenuJenkInd.Enabled = false;
|
||||
this.ToolsMenuJenkInd.Name = "ToolsMenuJenkInd";
|
||||
this.ToolsMenuJenkInd.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuJenkInd.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuJenkInd.Text = "JenkInd...";
|
||||
this.ToolsMenuJenkInd.Click += new System.EventHandler(this.ToolsMenuJenkInd_Click);
|
||||
//
|
||||
// ToolsMenuExtractScripts
|
||||
//
|
||||
this.ToolsMenuExtractScripts.Name = "ToolsMenuExtractScripts";
|
||||
this.ToolsMenuExtractScripts.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuExtractScripts.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuExtractScripts.Text = "Extract scripts...";
|
||||
this.ToolsMenuExtractScripts.Click += new System.EventHandler(this.ToolsMenuExtractScripts_Click);
|
||||
//
|
||||
// ToolsMenuExtractTextures
|
||||
//
|
||||
this.ToolsMenuExtractTextures.Name = "ToolsMenuExtractTextures";
|
||||
this.ToolsMenuExtractTextures.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuExtractTextures.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuExtractTextures.Text = "Extract textures...";
|
||||
this.ToolsMenuExtractTextures.Click += new System.EventHandler(this.ToolsMenuExtractTextures_Click);
|
||||
//
|
||||
// ToolsMenuExtractRawFiles
|
||||
//
|
||||
this.ToolsMenuExtractRawFiles.Name = "ToolsMenuExtractRawFiles";
|
||||
this.ToolsMenuExtractRawFiles.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuExtractRawFiles.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuExtractRawFiles.Text = "Extract raw files...";
|
||||
this.ToolsMenuExtractRawFiles.Click += new System.EventHandler(this.ToolsMenuExtractRawFiles_Click);
|
||||
//
|
||||
// ToolsMenuExtractShaders
|
||||
//
|
||||
this.ToolsMenuExtractShaders.Name = "ToolsMenuExtractShaders";
|
||||
this.ToolsMenuExtractShaders.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuExtractShaders.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuExtractShaders.Text = "Extract shaders...";
|
||||
this.ToolsMenuExtractShaders.Click += new System.EventHandler(this.ToolsMenuExtractShaders_Click);
|
||||
//
|
||||
// ToolsMenuOptions
|
||||
//
|
||||
this.ToolsMenuOptions.Name = "ToolsMenuOptions";
|
||||
this.ToolsMenuOptions.Size = new System.Drawing.Size(169, 22);
|
||||
this.ToolsMenuOptions.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuOptions.Text = "Options...";
|
||||
this.ToolsMenuOptions.Click += new System.EventHandler(this.ToolsMenuOptions_Click);
|
||||
//
|
||||
@ -2925,49 +2927,49 @@ namespace CodeWalker
|
||||
// ToolbarNewProjectButton
|
||||
//
|
||||
this.ToolbarNewProjectButton.Name = "ToolbarNewProjectButton";
|
||||
this.ToolbarNewProjectButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarNewProjectButton.Size = new System.Drawing.Size(167, 22);
|
||||
this.ToolbarNewProjectButton.Text = "New Project";
|
||||
this.ToolbarNewProjectButton.Click += new System.EventHandler(this.ToolbarNewProjectButton_Click);
|
||||
//
|
||||
// ToolbarNewYmapButton
|
||||
//
|
||||
this.ToolbarNewYmapButton.Name = "ToolbarNewYmapButton";
|
||||
this.ToolbarNewYmapButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarNewYmapButton.Size = new System.Drawing.Size(167, 22);
|
||||
this.ToolbarNewYmapButton.Text = "New Ymap File";
|
||||
this.ToolbarNewYmapButton.Click += new System.EventHandler(this.ToolbarNewYmapButton_Click);
|
||||
//
|
||||
// ToolbarNewYtypButton
|
||||
//
|
||||
this.ToolbarNewYtypButton.Name = "ToolbarNewYtypButton";
|
||||
this.ToolbarNewYtypButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarNewYtypButton.Size = new System.Drawing.Size(167, 22);
|
||||
this.ToolbarNewYtypButton.Text = "New Ytyp File";
|
||||
this.ToolbarNewYtypButton.Click += new System.EventHandler(this.ToolbarNewYtypButton_Click);
|
||||
//
|
||||
// ToolbarNewYbnButton
|
||||
//
|
||||
this.ToolbarNewYbnButton.Name = "ToolbarNewYbnButton";
|
||||
this.ToolbarNewYbnButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarNewYbnButton.Size = new System.Drawing.Size(167, 22);
|
||||
this.ToolbarNewYbnButton.Text = "New Ybn File";
|
||||
this.ToolbarNewYbnButton.Click += new System.EventHandler(this.ToolbarNewYbnButton_Click);
|
||||
//
|
||||
// ToolbarNewYndButton
|
||||
//
|
||||
this.ToolbarNewYndButton.Name = "ToolbarNewYndButton";
|
||||
this.ToolbarNewYndButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarNewYndButton.Size = new System.Drawing.Size(167, 22);
|
||||
this.ToolbarNewYndButton.Text = "New Ynd File";
|
||||
this.ToolbarNewYndButton.Click += new System.EventHandler(this.ToolbarNewYndButton_Click);
|
||||
//
|
||||
// ToolbarNewTrainsButton
|
||||
//
|
||||
this.ToolbarNewTrainsButton.Name = "ToolbarNewTrainsButton";
|
||||
this.ToolbarNewTrainsButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarNewTrainsButton.Size = new System.Drawing.Size(167, 22);
|
||||
this.ToolbarNewTrainsButton.Text = "New Trains File";
|
||||
this.ToolbarNewTrainsButton.Click += new System.EventHandler(this.ToolbarNewTrainsButton_Click);
|
||||
//
|
||||
// ToolbarNewScenarioButton
|
||||
//
|
||||
this.ToolbarNewScenarioButton.Name = "ToolbarNewScenarioButton";
|
||||
this.ToolbarNewScenarioButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarNewScenarioButton.Size = new System.Drawing.Size(167, 22);
|
||||
this.ToolbarNewScenarioButton.Text = "New Scenario File";
|
||||
this.ToolbarNewScenarioButton.Click += new System.EventHandler(this.ToolbarNewScenarioButton_Click);
|
||||
//
|
||||
@ -2990,21 +2992,21 @@ namespace CodeWalker
|
||||
// ToolbarOpenProjectButton
|
||||
//
|
||||
this.ToolbarOpenProjectButton.Name = "ToolbarOpenProjectButton";
|
||||
this.ToolbarOpenProjectButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarOpenProjectButton.Size = new System.Drawing.Size(152, 22);
|
||||
this.ToolbarOpenProjectButton.Text = "Open Project...";
|
||||
this.ToolbarOpenProjectButton.Click += new System.EventHandler(this.ToolbarOpenProjectButton_Click);
|
||||
//
|
||||
// ToolbarOpenFilesButton
|
||||
//
|
||||
this.ToolbarOpenFilesButton.Name = "ToolbarOpenFilesButton";
|
||||
this.ToolbarOpenFilesButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarOpenFilesButton.Size = new System.Drawing.Size(152, 22);
|
||||
this.ToolbarOpenFilesButton.Text = "Open Files...";
|
||||
this.ToolbarOpenFilesButton.Click += new System.EventHandler(this.ToolbarOpenFilesButton_Click);
|
||||
//
|
||||
// ToolbarOpenFolderButton
|
||||
//
|
||||
this.ToolbarOpenFolderButton.Name = "ToolbarOpenFolderButton";
|
||||
this.ToolbarOpenFolderButton.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolbarOpenFolderButton.Size = new System.Drawing.Size(152, 22);
|
||||
this.ToolbarOpenFolderButton.Text = "Open Folder...";
|
||||
this.ToolbarOpenFolderButton.Click += new System.EventHandler(this.ToolbarOpenFolderButton_Click);
|
||||
//
|
||||
@ -3588,6 +3590,14 @@ namespace CodeWalker
|
||||
//
|
||||
this.SubtitleTimer.Tick += new System.EventHandler(this.SubtitleTimer_Tick);
|
||||
//
|
||||
// ToolsMenuAudioExplorer
|
||||
//
|
||||
this.ToolsMenuAudioExplorer.Enabled = false;
|
||||
this.ToolsMenuAudioExplorer.Name = "ToolsMenuAudioExplorer";
|
||||
this.ToolsMenuAudioExplorer.Size = new System.Drawing.Size(180, 22);
|
||||
this.ToolsMenuAudioExplorer.Text = "Audio explorer...";
|
||||
this.ToolsMenuAudioExplorer.Click += new System.EventHandler(this.ToolsMenuAudioExplorer_Click);
|
||||
//
|
||||
// WorldForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@ -3957,5 +3967,6 @@ namespace CodeWalker
|
||||
private System.Windows.Forms.CheckBox HDLightsCheckBox;
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolbarSelectCalmingQuadButton;
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolbarSelectWaveQuadButton;
|
||||
private System.Windows.Forms.ToolStripMenuItem ToolsMenuAudioExplorer;
|
||||
}
|
||||
}
|
@ -948,7 +948,7 @@ namespace CodeWalker
|
||||
if (!audiozones.Inited) return;
|
||||
|
||||
renderaudfilelist.Clear();
|
||||
renderaudfilelist.AddRange(audiozones.AllFiles);
|
||||
renderaudfilelist.AddRange(GameFileCache.AudioDatRelFiles);
|
||||
|
||||
if (ProjectForm != null)
|
||||
{
|
||||
@ -959,12 +959,6 @@ namespace CodeWalker
|
||||
audiozones.GetPlacements(renderaudfilelist, renderaudplacementslist);
|
||||
|
||||
|
||||
//RenderablePathBatch rnd = renderableCache.GetRenderablePathBatch(audiozones);
|
||||
//if ((rnd != null) && (rnd.IsLoaded))
|
||||
//{
|
||||
// shaders.Enqueue(rnd);
|
||||
//}
|
||||
|
||||
|
||||
BoundingBox bbox = new BoundingBox();
|
||||
BoundingSphere bsph = new BoundingSphere();
|
||||
@ -4847,6 +4841,7 @@ namespace CodeWalker
|
||||
ToolbarProjectWindowButton.Enabled = true;
|
||||
ToolsMenuProjectWindow.Enabled = true;
|
||||
ToolsMenuCutsceneViewer.Enabled = true;
|
||||
ToolsMenuAudioExplorer.Enabled = true;
|
||||
ToolsMenuBinarySearch.Enabled = true;
|
||||
ToolsMenuJenkInd.Enabled = true;
|
||||
}
|
||||
@ -6740,6 +6735,12 @@ namespace CodeWalker
|
||||
ShowCutsceneForm();
|
||||
}
|
||||
|
||||
private void ToolsMenuAudioExplorer_Click(object sender, EventArgs e)
|
||||
{
|
||||
AudioExplorerForm f = new AudioExplorerForm(gameFileCache);
|
||||
f.Show(this);
|
||||
}
|
||||
|
||||
private void ToolsMenuWorldSearch_Click(object sender, EventArgs e)
|
||||
{
|
||||
ShowSearchForm();
|
||||
|
Loading…
Reference in New Issue
Block a user