private void SelectItem(RelData item) { DetailsPropertyGrid.SelectedObject = item; XmlTextBox.Text = RelXml.GetXml(item); }
private IEnumerable <MetaHash> GetUniqueHashes(MetaHash[] hashes, RelData item) { return(hashes?.Distinct()?.Where(h => h != item.NameHash)); //try avoid infinite loops... }
private void LoadItemHierarchy(RelData item, TreeNode parentNode = null) { TreeNode node; 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; if ((item is Dat22Category) && (parentNode != null) && (!(parentNode.Tag is Dat22Category))) //don't bother expanding out categories, too spammy! { return; } var speech = GetUniqueHashes(item.GetSpeechHashes(), item); var synths = GetUniqueHashes(item.GetSynthHashes(), item); var mixers = GetUniqueHashes(item.GetMixerHashes(), item); var curves = GetUniqueHashes(item.GetCurveHashes(), item); var categs = GetUniqueHashes(item.GetCategoryHashes(), item); var sounds = GetUniqueHashes(item.GetSoundHashes(), item); var games = GetUniqueHashes(item.GetGameHashes(), item); if (speech != null) { foreach (var h in speech) { if (GameFileCache.AudioSpeechDict.TryGetValue(h, out RelData child)) { LoadItemHierarchy(child, node); } } } 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) { var totnodes = node.GetNodeCount(true); if (totnodes > 100) { node.Expand(); foreach (TreeNode cnode in node.Nodes) { foreach (TreeNode ccnode in cnode.Nodes) { ccnode.ExpandAll(); } } } else { node.ExpandAll(); } HierarchyTreeView.SelectedNode = node; } }
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); }