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)); }
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); } }
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); } }