Ejemplo n.º 1
0
        public static ArrayType getArrayType(string className, string propName, bool inStruct = false, IExportEntry export = null)
        {
            PropertyInfo p = getPropertyInfo(className, propName, inStruct);

            if (p == null)
            {
                p = getPropertyInfo(className, propName, !inStruct);
            }
            if (p == null && export != null && export.ClassName != "Class")
            {
                export = export.FileRef.Exports[export.idxClass - 1]; //make sure you get actual class
                ClassInfo currentInfo;
                switch (export.FileRef.Game)
                {
                case MEGame.ME1:
                    currentInfo = ME1Explorer.Unreal.ME1UnrealObjectInfo.generateClassInfo(export);
                    break;

                case MEGame.ME2:
                    currentInfo = ME2Explorer.Unreal.ME2UnrealObjectInfo.generateClassInfo(export);
                    break;

                case MEGame.ME3:
                default:
                    currentInfo = ME3UnrealObjectInfo.generateClassInfo(export);
                    break;
                }
                currentInfo.baseClass = export.ClassParent;
                p = getPropertyInfo(className, propName, inStruct, currentInfo);
                if (p == null)
                {
                    p = getPropertyInfo(className, propName, !inStruct, currentInfo);
                }
            }
            return(getArrayType(p));
        }
Ejemplo n.º 2
0
        public static string GetProperty(IExportEntry export, List <string> _extantProps, MEGame game)
        {
            string        origname = export.ClassName;
            string        temp     = export.ClassName;
            List <string> classes  = new List <string>();
            Dictionary <string, ClassInfo> classList;

            switch (game)
            {
            case MEGame.ME1:
                classList = ME1Explorer.Unreal.ME1UnrealObjectInfo.Classes;
                break;

            case MEGame.ME2:
                classList = ME2Explorer.Unreal.ME2UnrealObjectInfo.Classes;
                break;

            case MEGame.ME3:
            default:
                classList = ME3UnrealObjectInfo.Classes;
                break;
            }
            //For debugging ME1 Objectinfo when we get around to it
            //foreach (KeyValuePair<string, ClassInfo> entry in classList)
            //{
            //    // do something with entry.Value or entry.Key
            //    if (entry.Key.StartsWith("LightMap"))
            //    {
            //        Debug.WriteLine(entry.Key);
            //    }
            //}
            if (!classList.ContainsKey(temp) && export.idxClass < 0)
            {
                //lookup import parent info
                temp = export.ClassParent;
            }
            else if (!classList.ContainsKey(temp) && export.idxClass > 0)
            {
                export = export.FileRef.Exports[export.idxClass - 1];
                //current object is not in classes db, temporarily add it to the list
                ClassInfo currentInfo;
                switch (game)
                {
                case MEGame.ME1:
                    currentInfo = ME1Explorer.Unreal.ME1UnrealObjectInfo.generateClassInfo(export);
                    break;

                case MEGame.ME2:
                    currentInfo = ME2Explorer.Unreal.ME2UnrealObjectInfo.generateClassInfo(export);
                    break;

                case MEGame.ME3:
                default:
                    currentInfo = ME3UnrealObjectInfo.generateClassInfo(export);
                    break;
                }
                currentInfo.baseClass = export.ClassParent;
                classList             = classList.ToDictionary(entry => entry.Key, entry => entry.Value);
                classList[temp]       = currentInfo;
            }
            while (classList.ContainsKey(temp) && temp != "Object")
            {
                classes.Add(temp);
                temp = classList[temp].baseClass;
            }
            classes.Reverse();
            AddPropertyDialogWPF prompt = new AddPropertyDialogWPF();

            prompt.classList   = classList;
            prompt.extantProps = _extantProps;
            prompt.ClassesListView.ItemsSource  = classes;
            prompt.ClassesListView.SelectedItem = origname;
            prompt.ShowDialog();
            if (prompt.DialogResult.HasValue && prompt.DialogResult.Value && prompt.PropertiesListView.SelectedIndex != -1)
            {
                return(prompt.PropertiesListView.SelectedItem as string);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 3
0
        public static string GetProperty(IExportEntry export, List <string> _extantProps, MEGame game)
        {
            string        origname = export.ClassName;
            string        temp     = export.ClassName;
            List <string> classes  = new List <string>();
            Dictionary <string, ClassInfo> classList;

            switch (game)
            {
            case MEGame.ME1:
                classList = ME1Explorer.Unreal.ME1UnrealObjectInfo.Classes;
                break;

            case MEGame.ME2:
                classList = ME2Explorer.Unreal.ME2UnrealObjectInfo.Classes;
                break;

            case MEGame.ME3:
            default:
                classList = ME3UnrealObjectInfo.Classes;
                break;
            }
            if (!classList.ContainsKey(temp))
            {
                export = export.FileRef.Exports[export.idxClass - 1];
                //current object is not in classes db, temporarily add it to the list
                ClassInfo currentInfo;
                switch (game)
                {
                case MEGame.ME1:
                    currentInfo = ME1Explorer.Unreal.ME1UnrealObjectInfo.generateClassInfo(export);
                    break;

                case MEGame.ME2:
                    currentInfo = ME2Explorer.Unreal.ME2UnrealObjectInfo.generateClassInfo(export);
                    break;

                case MEGame.ME3:
                default:
                    currentInfo = ME3UnrealObjectInfo.generateClassInfo(export);
                    break;
                }
                currentInfo.baseClass = export.ClassParent;
                classList             = classList.ToDictionary(entry => entry.Key, entry => entry.Value);
                classList[temp]       = currentInfo;
            }
            while (classList.ContainsKey(temp) && temp != "Object")
            {
                classes.Add(temp);
                temp = classList[temp].baseClass;
            }
            classes.Reverse();
            AddPropertyDialog prompt = new AddPropertyDialog();

            prompt.classList                 = classList;
            prompt.extantProps               = _extantProps;
            prompt.classListBox.DataSource   = classes;
            prompt.classListBox.SelectedItem = origname;
            if (prompt.ShowDialog() == DialogResult.OK && prompt.propListBox.SelectedIndex != -1)
            {
                return(prompt.propListBox.SelectedItem as string);
            }
            else
            {
                return(null);
            }
        }