Ejemplo n.º 1
0
        private void SelectItem(RelData item)
        {
            DetailsPropertyGrid.SelectedObject = item;

            XmlTextBox.Text = RelXml.GetXml(item);
        }
Ejemplo n.º 2
0
 private IEnumerable <MetaHash> GetUniqueHashes(MetaHash[] hashes, RelData item)
 {
     return(hashes?.Distinct()?.Where(h => h != item.NameHash)); //try avoid infinite loops...
 }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        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);
        }