Browse Source

Add decompiled source

habeebweeb 3 years ago
parent
commit
12652ef3f8

+ 1 - 0
.gitignore

@@ -1,3 +1,4 @@
+lib/
 # ---> C Sharp
 # Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
 [Bb]in/

+ 20 - 0
COM3D2.PropMyItem.Plugin.sln

@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "COM3D2.PropMyItem.Plugin", "COM3D2.PropMyItem.Plugin\COM3D2.PropMyItem.Plugin.csproj", "{8B644BAD-C562-46C6-A00A-8881DFB08F13}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{8B644BAD-C562-46C6-A00A-8881DFB08F13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{8B644BAD-C562-46C6-A00A-8881DFB08F13}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{8B644BAD-C562-46C6-A00A-8881DFB08F13}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{8B644BAD-C562-46C6-A00A-8881DFB08F13}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

+ 28 - 0
COM3D2.PropMyItem.Plugin/.vscode/tasks.json

@@ -0,0 +1,28 @@
+{
+    // See https://go.microsoft.com/fwlink/?LinkId=733558
+    // for the documentation about the tasks.json format
+    "version": "2.0.0",
+    "tasks": [
+        {
+            "label": "build",
+            "command": "dotnet",
+            "type": "shell",
+            "args": [
+                "build",
+                // Ask dotnet build to generate full paths for file names.
+                "/property:GenerateFullPaths=true",
+                // Do not generate summary otherwise it leads to duplicate errors in Problems panel
+                "/consoleloggerparameters:NoSummary",
+                "/property:Configuration=Release"
+            ],
+            "group": {
+                "kind": "build",
+                "isDefault": true
+            },
+            "presentation": {
+                "reveal": "silent"
+            },
+            "problemMatcher": "$msCompile"
+        }
+    ]
+}

+ 124 - 0
COM3D2.PropMyItem.Plugin/AutoShoesHide.cs

@@ -0,0 +1,124 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x02000002 RID: 2
+	public class AutoShoesHide
+	{
+		// Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250
+		public AutoShoesHide()
+		{
+			this.checkMPNs = new MPN[]
+			{
+				MPN.acchat,
+				MPN.headset,
+				MPN.wear,
+				MPN.skirt,
+				MPN.onepiece,
+				MPN.mizugi,
+				MPN.bra,
+				MPN.panz,
+				MPN.stkg
+			};
+		}
+
+		// Token: 0x06000002 RID: 2 RVA: 0x000020A8 File Offset: 0x000002A8
+		public void Update()
+		{
+			try
+			{
+				if (UserConfig.Instance.IsAutoShoesHide)
+				{
+					List<Maid> visibleMaidList = CommonUtil.GetVisibleMaidList();
+					if (visibleMaidList.Count != 0)
+					{
+						string bgname = GameMain.Instance.BgMgr.GetBGName();
+						if (!(this._lastBGName == bgname) || this._lastMaidCount != visibleMaidList.Count)
+						{
+							if (Config.Instance.TargetBGList.Contains(bgname, StringComparer.OrdinalIgnoreCase))
+							{
+								using (List<Maid>.Enumerator enumerator = visibleMaidList.GetEnumerator())
+								{
+									while (enumerator.MoveNext())
+									{
+										Maid maid = enumerator.Current;
+										if (maid.IsAllProcPropBusy)
+										{
+											return;
+										}
+										if (maid.GetProp(MPN.shoes).strTempFileName != "_i_shoes_del.menu")
+										{
+											Menu.SetMaidItemTemp(maid, "_i_shoes_del.menu", true);
+											maid.AllProcProp();
+										}
+									}
+									goto IL_184;
+								}
+							}
+							foreach (Maid maid2 in visibleMaidList)
+							{
+								if (maid2.IsAllProcPropBusy)
+								{
+									return;
+								}
+								bool flag = true;
+								foreach (MPN mpn in this.checkMPNs)
+								{
+									MaidProp prop = maid2.GetProp(mpn);
+									if (prop.strFileName == prop.strTempFileName)
+									{
+										flag = false;
+										break;
+									}
+								}
+								if (flag && maid2.GetProp(MPN.shoes).strTempFileName == "_i_shoes_del.menu")
+								{
+									maid2.ResetProp(MPN.shoes, false);
+									maid2.AllProcProp();
+								}
+							}
+							IL_184:
+							this._lastBGName = bgname;
+							this._lastMaidCount = visibleMaidList.Count;
+						}
+					}
+				}
+			}
+			catch (Exception)
+			{
+			}
+		}
+
+		// Token: 0x04000001 RID: 1
+		private string _lastBGName = string.Empty;
+
+		// Token: 0x04000002 RID: 2
+		private int _lastMaidCount;
+
+		// Token: 0x04000003 RID: 3
+		private MPN[] checkMPNs;
+
+		// Token: 0x0200000F RID: 15
+		public class PropFileName
+		{
+			// Token: 0x0600006A RID: 106 RVA: 0x000085DC File Offset: 0x000067DC
+			public PropFileName(int rid, string filename, string tmpFileName)
+			{
+				this.FileNameRID = rid;
+				this.FileName = filename;
+				this.TempFileName = tmpFileName;
+			}
+
+			// Token: 0x0400006D RID: 109
+			public int FileNameRID;
+
+			// Token: 0x0400006E RID: 110
+			public string FileName;
+
+			// Token: 0x0400006F RID: 111
+			public string TempFileName;
+		}
+	}
+}

+ 25 - 0
COM3D2.PropMyItem.Plugin/COM3D2.PropMyItem.Plugin.csproj

@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk">
+    <PropertyGroup>
+        <TargetFramework>net35</TargetFramework>
+        <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+        <FrameworkPathOverride Condition="'$(TargetFramework)' == 'net35'">$(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client</FrameworkPathOverride>
+        <AssemblyName>COM3D2.PropMyItem.Plugin</AssemblyName>
+    </PropertyGroup>
+    <ItemGroup>
+        <Reference Include="Assembly-CSharp">
+            <HintPath>..\lib\Assembly-CSharp.dll</HintPath>
+        </Reference>
+        <Reference Include="Assembly-CSharp-firstpass">
+            <HintPath>..\lib\Assembly-CSharp-firstpass.dll</HintPath>
+        </Reference>
+        <Reference Include="System" />
+        <Reference Include="System.Core" />
+        <Reference Include="System.Xml" />
+        <Reference Include="UnityEngine">
+            <HintPath>..\lib\UnityEngine.dll</HintPath>
+        </Reference>
+        <Reference Include="UnityInjector">
+            <HintPath>..\lib\UnityInjector.dll</HintPath>
+        </Reference>
+    </ItemGroup>
+</Project>

+ 108 - 0
COM3D2.PropMyItem.Plugin/CommonUtil.cs

@@ -0,0 +1,108 @@
+using System;
+using System.Collections.Generic;
+using System.Text.RegularExpressions;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x02000003 RID: 3
+	public class CommonUtil
+	{
+		// Token: 0x06000003 RID: 3 RVA: 0x000022A0 File Offset: 0x000004A0
+		public static void Log(string text)
+		{
+			try
+			{
+				Console.WriteLine(string.Format("{0}({1}) : {2}", "PropMyItem", "2.3.0.0", text));
+			}
+			catch
+			{
+			}
+		}
+
+		// Token: 0x06000004 RID: 4 RVA: 0x000022DC File Offset: 0x000004DC
+		public static string WildCardMatchEvaluator(Match match)
+		{
+			string value = match.Value;
+			if (value.Equals("?"))
+			{
+				return ".";
+			}
+			if (value.Equals("*"))
+			{
+				return ".*";
+			}
+			return Regex.Escape(value);
+		}
+
+		// Token: 0x06000005 RID: 5 RVA: 0x0000231C File Offset: 0x0000051C
+		public static Maid GetVisibleMaid(int index)
+		{
+			Maid result = null;
+			try
+			{
+				List<Maid> visibleMaidList = CommonUtil.GetVisibleMaidList();
+				if (visibleMaidList.Count > index)
+				{
+					result = visibleMaidList[index];
+				}
+			}
+			catch (Exception ex)
+			{
+				CommonUtil.Log(ex.ToString());
+			}
+			return result;
+		}
+
+		// Token: 0x06000006 RID: 6 RVA: 0x00002364 File Offset: 0x00000564
+		public static List<Maid> GetVisibleMaidList()
+		{
+			List<Maid> list = new List<Maid>();
+			CharacterMgr characterMgr = GameMain.Instance.CharacterMgr;
+			int maidCount = characterMgr.GetMaidCount();
+			for (int i = 0; i < maidCount; i++)
+			{
+				Maid maid = characterMgr.GetMaid(i);
+				if (maid != null && maid.isActiveAndEnabled && maid.Visible)
+				{
+					list.Add(maid);
+				}
+			}
+			int stockMaidCount = characterMgr.GetStockMaidCount();
+			for (int j = 0; j < stockMaidCount; j++)
+			{
+				Maid stockMaid = characterMgr.GetStockMaid(j);
+				if (stockMaid != null && stockMaid.isActiveAndEnabled && stockMaid.Visible && !list.Contains(stockMaid))
+				{
+					list.Add(stockMaid);
+				}
+			}
+			return list;
+		}
+
+		// Token: 0x06000007 RID: 7 RVA: 0x00002418 File Offset: 0x00000618
+		public static string GetSelectedMenuFileName(MPN? mpn, Maid maid)
+		{
+			string result = string.Empty;
+			if (mpn != null)
+			{
+				MPN? mpn2 = mpn;
+				MPN mpn3 = MPN.set_maidwear;
+				if (!(mpn2.GetValueOrDefault() == mpn3 & mpn2 != null))
+				{
+					mpn2 = mpn;
+					mpn3 = MPN.set_mywear;
+					if (!(mpn2.GetValueOrDefault() == mpn3 & mpn2 != null))
+					{
+						mpn2 = mpn;
+						mpn3 = MPN.set_underwear;
+						if (!(mpn2.GetValueOrDefault() == mpn3 & mpn2 != null))
+						{
+							result = maid.GetProp(mpn.Value).strFileName;
+						}
+					}
+				}
+			}
+			return result;
+		}
+	}
+}

+ 151 - 0
COM3D2.PropMyItem.Plugin/Config.cs

@@ -0,0 +1,151 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x02000004 RID: 4
+	public class Config
+	{
+		// Token: 0x17000001 RID: 1
+		// (get) Token: 0x06000009 RID: 9 RVA: 0x0000249B File Offset: 0x0000069B
+		// (set) Token: 0x0600000A RID: 10 RVA: 0x000024A3 File Offset: 0x000006A3
+		public List<string> TargetBGList
+		{
+			get
+			{
+				return this._targetBGList;
+			}
+			set
+			{
+				this._targetBGList = value;
+			}
+		}
+
+		// Token: 0x17000002 RID: 2
+		// (get) Token: 0x0600000B RID: 11 RVA: 0x000024AC File Offset: 0x000006AC
+		// (set) Token: 0x0600000C RID: 12 RVA: 0x000024B4 File Offset: 0x000006B4
+		public List<SMenuInfo> MenuItems
+		{
+			get
+			{
+				return this._menuItems;
+			}
+			set
+			{
+				this._menuItems = value;
+			}
+		}
+
+		// Token: 0x17000003 RID: 3
+		// (get) Token: 0x0600000D RID: 13 RVA: 0x000024C0 File Offset: 0x000006C0
+		public static Config Instance
+		{
+			get
+			{
+				if (Config._config == null)
+				{
+					string text = Directory.GetCurrentDirectory() + "\\Sybaris\\UnityInjector\\Config\\PropMyItem.xml";
+					Config._config = new Config();
+					Config._config.SetDefault();
+					if (File.Exists(text))
+					{
+						Config._config.Load(text);
+					}
+					else
+					{
+						Config._config.Save();
+					}
+				}
+				return Config._config;
+			}
+		}
+
+		// Token: 0x0600000E RID: 14 RVA: 0x0000251C File Offset: 0x0000071C
+		public void Load(string filePath)
+		{
+			try
+			{
+				XmlSerializer xmlSerializer = new XmlSerializer(typeof(Config));
+				using (StreamReader streamReader = new StreamReader(filePath, new UTF8Encoding(false)))
+				{
+					Config config = (Config)xmlSerializer.Deserialize(streamReader);
+					this.TargetBGList.Clear();
+					this.TargetBGList.AddRange(config.TargetBGList.ToArray());
+					this.MenuItems = config.MenuItems;
+				}
+			}
+			catch (Exception)
+			{
+				this.SetDefault();
+			}
+		}
+
+		// Token: 0x0600000F RID: 15 RVA: 0x000025B4 File Offset: 0x000007B4
+		public void SetDefault()
+		{
+			try
+			{
+				string[] collection = new string[]
+				{
+					"MyRoom",
+					"MyRoom_Night",
+					"Shukuhakubeya_BedRoom",
+					"Shukuhakubeya_BedRoom_Night",
+					"Soap",
+					"SMClub",
+					"HeroineRoom_A1",
+					"HeroineRoom_A1_night",
+					"HeroineRoom_B1",
+					"HeroineRoom_B1_night",
+					"HeroineRoom_C1",
+					"HeroineRoom_C1_night",
+					"HeroineRoom_A",
+					"HeroineRoom_A_night",
+					"HeroineRoom_B",
+					"HeroineRoom_B_night",
+					"HeroineRoom_C",
+					"HeroineRoom_C_night"
+				};
+				this.TargetBGList.AddRange(collection);
+			}
+			catch (Exception)
+			{
+			}
+		}
+
+		// Token: 0x06000010 RID: 16 RVA: 0x00002684 File Offset: 0x00000884
+		public void Save()
+		{
+			string filePath = Directory.GetCurrentDirectory() + "\\Sybaris\\UnityInjector\\Config\\PropMyItem.xml";
+			this.Save(filePath);
+		}
+
+		// Token: 0x06000011 RID: 17 RVA: 0x000026A8 File Offset: 0x000008A8
+		public void Save(string filePath)
+		{
+			try
+			{
+				XmlSerializer xmlSerializer = new XmlSerializer(typeof(Config));
+				StreamWriter streamWriter = new StreamWriter(filePath, false, new UTF8Encoding(false));
+				xmlSerializer.Serialize(streamWriter, this);
+				streamWriter.Close();
+			}
+			catch (Exception value)
+			{
+				Console.WriteLine(value);
+			}
+		}
+
+		// Token: 0x04000004 RID: 4
+		private List<string> _targetBGList = new List<string>();
+
+		// Token: 0x04000005 RID: 5
+		private List<SMenuInfo> _menuItems = new List<SMenuInfo>();
+
+		// Token: 0x04000006 RID: 6
+		private static Config _config;
+	}
+}

+ 43 - 0
COM3D2.PropMyItem.Plugin/EnumUtil.cs

@@ -0,0 +1,43 @@
+using System;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x02000005 RID: 5
+	public static class EnumUtil
+	{
+		// Token: 0x06000013 RID: 19 RVA: 0x00002716 File Offset: 0x00000916
+		public static T Parse<T>(string value)
+		{
+			return EnumUtil.Parse<T>(value, true);
+		}
+
+		// Token: 0x06000014 RID: 20 RVA: 0x0000271F File Offset: 0x0000091F
+		public static T Parse<T>(string value, bool ignoreCase)
+		{
+			return (T)((object)Enum.Parse(typeof(T), value, ignoreCase));
+		}
+
+		// Token: 0x06000015 RID: 21 RVA: 0x00002737 File Offset: 0x00000937
+		public static bool TryParse<T>(string value, out T result)
+		{
+			return EnumUtil.TryParse<T>(value, true, out result);
+		}
+
+		// Token: 0x06000016 RID: 22 RVA: 0x00002744 File Offset: 0x00000944
+		public static bool TryParse<T>(string value, bool ignoreCase, out T result)
+		{
+			bool result2;
+			try
+			{
+				result = (T)((object)Enum.Parse(typeof(T), value, ignoreCase));
+				result2 = true;
+			}
+			catch
+			{
+				result = default(T);
+				result2 = false;
+			}
+			return result2;
+		}
+	}
+}

+ 208 - 0
COM3D2.PropMyItem.Plugin/GuiStyles.cs

@@ -0,0 +1,208 @@
+using System;
+using UnityEngine;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x02000006 RID: 6
+	public class GuiStyles
+	{
+		// Token: 0x17000004 RID: 4
+		// (get) Token: 0x06000017 RID: 23 RVA: 0x00002790 File Offset: 0x00000990
+		public static int FontSize
+		{
+			get
+			{
+				return GuiStyles._fontSize;
+			}
+		}
+
+		// Token: 0x17000005 RID: 5
+		// (get) Token: 0x06000018 RID: 24 RVA: 0x00002797 File Offset: 0x00000997
+		public static float WindowHeight
+		{
+			get
+			{
+				return GuiStyles._windowHeight;
+			}
+		}
+
+		// Token: 0x17000006 RID: 6
+		// (get) Token: 0x06000019 RID: 25 RVA: 0x0000279E File Offset: 0x0000099E
+		public static float ScrollWidth
+		{
+			get
+			{
+				return GuiStyles._scrollWidth;
+			}
+		}
+
+		// Token: 0x17000007 RID: 7
+		// (get) Token: 0x0600001A RID: 26 RVA: 0x000027A5 File Offset: 0x000009A5
+		public static float ControlHeight
+		{
+			get
+			{
+				return (float)(GuiStyles.FontSize * 2);
+			}
+		}
+
+		// Token: 0x17000008 RID: 8
+		// (get) Token: 0x0600001B RID: 27 RVA: 0x000027AF File Offset: 0x000009AF
+		public static float Margin
+		{
+			get
+			{
+				return (float)GuiStyles.FontSize * 0.5f;
+			}
+		}
+
+		// Token: 0x17000009 RID: 9
+		// (get) Token: 0x0600001C RID: 28 RVA: 0x000027C0 File Offset: 0x000009C0
+		public static GUIStyle WindowStyle
+		{
+			get
+			{
+				if (GuiStyles._windowStyle == null)
+				{
+					GuiStyles._windowStyle = new GUIStyle("box");
+					GuiStyles._windowStyle.fontSize = GuiStyles.FontSize;
+					GuiStyles._windowStyle.alignment = TextAnchor.UpperRight;
+					GuiStyles._windowStyle.normal.textColor = Color.white;
+				}
+				return GuiStyles._windowStyle;
+			}
+		}
+
+		// Token: 0x1700000A RID: 10
+		// (get) Token: 0x0600001D RID: 29 RVA: 0x0000281C File Offset: 0x00000A1C
+		public static GUIStyle LabelStyle
+		{
+			get
+			{
+				if (GuiStyles._labelStyle == null)
+				{
+					GuiStyles._labelStyle = new GUIStyle("label");
+					GuiStyles._labelStyle.fontSize = GuiStyles.FontSize;
+					GuiStyles._labelStyle.alignment = TextAnchor.MiddleLeft;
+					GuiStyles._labelStyle.normal.textColor = Color.white;
+				}
+				return GuiStyles._labelStyle;
+			}
+		}
+
+		// Token: 0x1700000B RID: 11
+		// (get) Token: 0x0600001E RID: 30 RVA: 0x00002878 File Offset: 0x00000A78
+		public static GUIStyle TextFieldStyle
+		{
+			get
+			{
+				if (GuiStyles._textfieldStyle == null)
+				{
+					GuiStyles._textfieldStyle = new GUIStyle("textfield");
+					GuiStyles._textfieldStyle.fontSize = GuiStyles.FontSize;
+					GuiStyles._textfieldStyle.alignment = TextAnchor.MiddleLeft;
+					GuiStyles._textfieldStyle.normal.textColor = Color.white;
+				}
+				return GuiStyles._textfieldStyle;
+			}
+		}
+
+		// Token: 0x1700000C RID: 12
+		// (get) Token: 0x0600001F RID: 31 RVA: 0x000028D4 File Offset: 0x00000AD4
+		public static GUIStyle ButtonStyle
+		{
+			get
+			{
+				if (GuiStyles._buttonStyle == null)
+				{
+					GuiStyles._buttonStyle = new GUIStyle("button");
+					GuiStyles._buttonStyle.fontSize = GuiStyles.FontSize;
+					GuiStyles._buttonStyle.alignment = TextAnchor.MiddleCenter;
+					GuiStyles._buttonStyle.normal.textColor = Color.white;
+				}
+				return GuiStyles._buttonStyle;
+			}
+		}
+
+		// Token: 0x1700000D RID: 13
+		// (get) Token: 0x06000020 RID: 32 RVA: 0x0000292F File Offset: 0x00000B2F
+		public static GUIStyle ToggleStyle
+		{
+			get
+			{
+				if (GuiStyles._buttonStyle == null)
+				{
+					GuiStyles._toggleStyle = new GUIStyle("toggle");
+					GuiStyles._toggleStyle.fontSize = GuiStyles.FontSize;
+				}
+				return GuiStyles._toggleStyle;
+			}
+		}
+
+		// Token: 0x1700000E RID: 14
+		// (get) Token: 0x06000021 RID: 33 RVA: 0x00002960 File Offset: 0x00000B60
+		public static GUIStyle ListStyle
+		{
+			get
+			{
+				if (GuiStyles._listStyle == null)
+				{
+					GuiStyles._listStyle = new GUIStyle();
+					GuiStyles._listStyle.onHover.background = (GuiStyles._listStyle.hover.background = new Texture2D(2, 2));
+					GuiStyles._listStyle.padding.left = (GuiStyles._listStyle.padding.right = 4);
+					GuiStyles._listStyle.padding.top = (GuiStyles._listStyle.padding.bottom = 1);
+					GuiStyles._listStyle.normal.textColor = (GuiStyles._listStyle.onNormal.textColor = Color.white);
+					GuiStyles._listStyle.hover.textColor = (GuiStyles._listStyle.onHover.textColor = Color.white);
+					GuiStyles._listStyle.active.textColor = (GuiStyles._listStyle.onActive.textColor = Color.white);
+					GuiStyles._listStyle.focused.textColor = (GuiStyles._listStyle.onFocused.textColor = Color.blue);
+					GuiStyles._listStyle.fontSize = GuiStyles.FontSize;
+				}
+				return GuiStyles._listStyle;
+			}
+		}
+
+		// Token: 0x1700000F RID: 15
+		// (get) Token: 0x06000022 RID: 34 RVA: 0x00002A99 File Offset: 0x00000C99
+		public static GUIStyle BoxStyle
+		{
+			get
+			{
+				if (GuiStyles._listStyle == null)
+				{
+					GuiStyles._boxStyle = new GUIStyle("box");
+				}
+				return GuiStyles._boxStyle;
+			}
+		}
+
+		// Token: 0x04000007 RID: 7
+		private static int _fontSize = 12;
+
+		// Token: 0x04000008 RID: 8
+		private static float _windowHeight = 12f;
+
+		// Token: 0x04000009 RID: 9
+		private static float _scrollWidth = 20f;
+
+		// Token: 0x0400000A RID: 10
+		private static GUIStyle _windowStyle = null;
+
+		// Token: 0x0400000B RID: 11
+		private static GUIStyle _labelStyle = null;
+
+		// Token: 0x0400000C RID: 12
+		private static GUIStyle _textfieldStyle = null;
+
+		// Token: 0x0400000D RID: 13
+		private static GUIStyle _buttonStyle = null;
+
+		// Token: 0x0400000E RID: 14
+		private static GUIStyle _toggleStyle = null;
+
+		// Token: 0x0400000F RID: 15
+		private static GUIStyle _listStyle = null;
+
+		// Token: 0x04000010 RID: 16
+		private static GUIStyle _boxStyle = null;
+	}
+}

+ 87 - 0
COM3D2.PropMyItem.Plugin/MenuInfo.cs

@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x02000007 RID: 7
+	public class MenuInfo
+	{
+		// Token: 0x06000025 RID: 37 RVA: 0x00002B10 File Offset: 0x00000D10
+		public MenuInfo()
+		{
+		}
+
+		// Token: 0x06000026 RID: 38 RVA: 0x00002B94 File Offset: 0x00000D94
+		public MenuInfo(SMenuInfo menuInfo)
+		{
+			this.ItemName = menuInfo.ItemName;
+			this.FileName = menuInfo.FileName;
+			this.IconName = menuInfo.IconName;
+			this.Priority = menuInfo.Priority;
+			this.ColorSetMPN = menuInfo.ColorSetMPN;
+			this.ColorSetMenuName = menuInfo.ColorSetMenuName;
+			this.MPN = menuInfo.MPN;
+		}
+
+		// Token: 0x04000011 RID: 17
+		public string ItemName = string.Empty;
+
+		// Token: 0x04000012 RID: 18
+		public string FileName = string.Empty;
+
+		// Token: 0x04000013 RID: 19
+		public string IconName = string.Empty;
+
+		// Token: 0x04000014 RID: 20
+		public float Priority;
+
+		// Token: 0x04000015 RID: 21
+		public Texture2D Icon;
+
+		// Token: 0x04000016 RID: 22
+		public MPN ColorSetMPN = MPN.head;
+
+		// Token: 0x04000017 RID: 23
+		public string ColorSetMenuName = string.Empty;
+
+		// Token: 0x04000018 RID: 24
+		public List<MenuInfo> VariationMenuList = new List<MenuInfo>();
+
+		// Token: 0x04000019 RID: 25
+		public List<MenuInfo> ColorSetMenuList = new List<MenuInfo>();
+
+		// Token: 0x0400001A RID: 26
+		public int ColorNumber;
+
+		// Token: 0x0400001B RID: 27
+		public MPN MPN = MPN.head;
+
+		// Token: 0x0400001C RID: 28
+		public bool IsMod;
+
+		// Token: 0x0400001D RID: 29
+		public bool IsOfficialMOD;
+
+		// Token: 0x0400001E RID: 30
+		public bool IsShopTarget;
+
+		// Token: 0x0400001F RID: 31
+		public bool IsHave = true;
+
+		// Token: 0x04000020 RID: 32
+		public string FilePath = string.Empty;
+
+		// Token: 0x04000021 RID: 33
+		public string CategoryName = string.Empty;
+
+		// Token: 0x04000022 RID: 34
+		public bool IsFavorite;
+
+		// Token: 0x04000023 RID: 35
+		public bool IsColorLock;
+
+		// Token: 0x04000024 RID: 36
+		public bool IsError;
+	}
+}

+ 195 - 0
COM3D2.PropMyItem.Plugin/MenuModParser.cs

@@ -0,0 +1,195 @@
+using System;
+using System.IO;
+using System.Text;
+using UnityEngine;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x02000008 RID: 8
+	public class MenuModParser
+	{
+		// Token: 0x06000027 RID: 39 RVA: 0x00002C6C File Offset: 0x00000E6C
+		public static byte[] LoadMenuInternal(string filename)
+		{
+			byte[] result;
+			try
+			{
+				using (AFileBase afileBase = GameUty.FileOpen(filename, null))
+				{
+					if (!afileBase.IsValid())
+					{
+						throw new Exception();
+					}
+					result = afileBase.ReadAll();
+				}
+			}
+			catch (Exception ex)
+			{
+				throw ex;
+			}
+			return result;
+		}
+
+		// Token: 0x06000028 RID: 40 RVA: 0x00002CC4 File Offset: 0x00000EC4
+		public static MenuInfo parseMod(string filePath)
+		{
+			MenuInfo menuInfo = new MenuInfo();
+			menuInfo.Priority = 1000f;
+			byte[] array = null;
+			try
+			{
+				using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
+				{
+					if (fileStream == null)
+					{
+						return null;
+					}
+					array = new byte[fileStream.Length];
+					fileStream.Read(array, 0, (int)fileStream.Length);
+				}
+			}
+			catch (Exception)
+			{
+			}
+			if (array == null)
+			{
+				return null;
+			}
+			using (BinaryReader binaryReader = new BinaryReader(new MemoryStream(array), Encoding.UTF8))
+			{
+				if (binaryReader.ReadString() != "CM3D2_MOD")
+				{
+					return null;
+				}
+				binaryReader.ReadInt32();
+				menuInfo.IconName = binaryReader.ReadString();
+				binaryReader.ReadString();
+				menuInfo.ItemName = binaryReader.ReadString();
+				string value = binaryReader.ReadString();
+				MPN mpn = MPN.null_mpn;
+				if (!EnumUtil.TryParse<MPN>(value, true, out mpn))
+				{
+					return null;
+				}
+				menuInfo.MPN = mpn;
+				binaryReader.ReadString();
+				if (!EnumUtil.TryParse<MPN>(binaryReader.ReadString(), true, out mpn))
+				{
+					return null;
+				}
+				if (mpn != MPN.null_mpn)
+				{
+					binaryReader.ReadString();
+				}
+				string text = binaryReader.ReadString();
+				if (text.Contains("色セット"))
+				{
+					string[] array2 = text.Replace("\r\n", "\n").Split(new char[]
+					{
+						'\n'
+					});
+					for (int i = 0; i < array2.Length; i++)
+					{
+						string[] array3 = array2[i].Split(new char[]
+						{
+							'\t'
+						}, StringSplitOptions.RemoveEmptyEntries);
+						if (array3.Length > 2 && array3[0] == "色セット" && EnumUtil.TryParse<MPN>(array3[1], true, out menuInfo.ColorSetMPN))
+						{
+							menuInfo.ColorSetMenuName = array3[2];
+							break;
+						}
+					}
+				}
+				int num = binaryReader.ReadInt32();
+				for (int j = 0; j < num; j++)
+				{
+					string strA = binaryReader.ReadString();
+					int count = binaryReader.ReadInt32();
+					byte[] data = binaryReader.ReadBytes(count);
+					if (string.Compare(strA, menuInfo.IconName, true) == 0)
+					{
+						menuInfo.Icon = new Texture2D(1, 1, TextureFormat.RGBA32, false);
+						menuInfo.Icon.LoadImage(data);
+					}
+				}
+			}
+			return menuInfo;
+		}
+
+		// Token: 0x06000029 RID: 41 RVA: 0x00002F28 File Offset: 0x00001128
+		public static MenuInfo ParseMenu(string filePath)
+		{
+			MenuInfo menuInfo = new MenuInfo();
+			MenuInfo result;
+			using (MemoryStream memoryStream = new MemoryStream(MenuModParser.LoadMenuInternal(Path.GetFileName(filePath)), false))
+			{
+				using (BinaryReader binaryReader = new BinaryReader(memoryStream, Encoding.UTF8))
+				{
+					if (binaryReader.ReadString() != "CM3D2_MENU")
+					{
+						result = null;
+					}
+					else
+					{
+						binaryReader.ReadInt32();
+						binaryReader.ReadString();
+						menuInfo.ItemName = binaryReader.ReadString();
+						binaryReader.ReadString();
+						binaryReader.ReadString().Replace("《改行》", "\n");
+						binaryReader.ReadInt32();
+						for (;;)
+						{
+							int num = (int)binaryReader.ReadByte();
+							if (num == 0)
+							{
+								goto IL_15F;
+							}
+							string a = binaryReader.ReadString();
+							string[] array = new string[num - 1];
+							for (int i = 0; i < num - 1; i++)
+							{
+								array[i] = binaryReader.ReadString();
+							}
+							if (!(a == "category"))
+							{
+								if (!(a == "priority"))
+								{
+									if (!(a == "icon") && !(a == "icons"))
+									{
+										if (a == "color_set")
+										{
+											if (!EnumUtil.TryParse<MPN>(array[0], true, out menuInfo.ColorSetMPN))
+											{
+												goto IL_167;
+											}
+											menuInfo.ColorSetMenuName = array[1];
+										}
+									}
+									else
+									{
+										menuInfo.IconName = array[0];
+									}
+								}
+								else
+								{
+									menuInfo.Priority = float.Parse(array[0]);
+								}
+							}
+							else if (!EnumUtil.TryParse<MPN>(array[0], true, out menuInfo.MPN))
+							{
+								break;
+							}
+						}
+						return null;
+						IL_15F:
+						return menuInfo;
+						IL_167:
+						result = null;
+					}
+				}
+			}
+			return result;
+		}
+	}
+}

+ 17 - 0
COM3D2.PropMyItem.Plugin/PluginInfo.cs

@@ -0,0 +1,17 @@
+using System;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x02000009 RID: 9
+	public struct PluginInfo
+	{
+		// Token: 0x04000025 RID: 37
+		public const string PluginName = "PropMyItem";
+
+		// Token: 0x04000026 RID: 38
+		public const string PluginVersion = "2.3.0.0";
+
+		// Token: 0x04000027 RID: 39
+		public const int WindowID = 4511;
+	}
+}

File diff suppressed because it is too large
+ 2137 - 0
COM3D2.PropMyItem.Plugin/PropMyItem.cs


+ 17 - 0
COM3D2.PropMyItem.Plugin/Properties/AssemblyInfo.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Diagnostics;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyVersion("2.3.0.0")]
+[assembly: AssemblyTitle("COM3D2.PropMyItem.Plugin")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("COM3D2.PropMyItem.Plugin")]
+[assembly: AssemblyCopyright("Copyright ©  2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: ComVisible(false)]
+[assembly: Guid("b7bb2f1c-a526-46ff-a6d6-06a1894e8316")]
+[assembly: AssemblyFileVersion("2.3.0.0")]

+ 46 - 0
COM3D2.PropMyItem.Plugin/SMenuInfo.cs

@@ -0,0 +1,46 @@
+using System;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x0200000C RID: 12
+	public class SMenuInfo
+	{
+		// Token: 0x06000051 RID: 81 RVA: 0x00008214 File Offset: 0x00006414
+		public SMenuInfo()
+		{
+		}
+
+		// Token: 0x06000052 RID: 82 RVA: 0x00008264 File Offset: 0x00006464
+		public SMenuInfo(MenuInfo menuInfo)
+		{
+			this.ItemName = menuInfo.ItemName;
+			this.FileName = menuInfo.FileName;
+			this.IconName = menuInfo.IconName;
+			this.Priority = menuInfo.Priority;
+			this.ColorSetMPN = menuInfo.ColorSetMPN;
+			this.ColorSetMenuName = menuInfo.ColorSetMenuName;
+			this.MPN = menuInfo.MPN;
+		}
+
+		// Token: 0x0400005A RID: 90
+		public string ItemName = string.Empty;
+
+		// Token: 0x0400005B RID: 91
+		public string FileName = string.Empty;
+
+		// Token: 0x0400005C RID: 92
+		public string IconName = string.Empty;
+
+		// Token: 0x0400005D RID: 93
+		public float Priority;
+
+		// Token: 0x0400005E RID: 94
+		public MPN ColorSetMPN = MPN.head;
+
+		// Token: 0x0400005F RID: 95
+		public string ColorSetMenuName = string.Empty;
+
+		// Token: 0x04000060 RID: 96
+		public MPN MPN = MPN.head;
+	}
+}

+ 252 - 0
COM3D2.PropMyItem.Plugin/SavePreset.cs

@@ -0,0 +1,252 @@
+using System;
+using System.IO;
+using System.Text;
+using UnityEngine;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x0200000B RID: 11
+	public class SavePreset
+	{
+		// Token: 0x06000048 RID: 72 RVA: 0x00007AEC File Offset: 0x00005CEC
+		public Texture2D ThumShot(Camera camera, Maid f_maid)
+		{
+			int width = 138;
+			int height = 200;
+			Transform transform = CMT.SearchObjName(f_maid.body0.m_Bones.transform, "Bip01 HeadNub", true);
+			camera.transform.position = transform.TransformPoint(transform.localPosition + new Vector3(0.38f, 1.07f, 0f));
+			camera.transform.rotation = transform.rotation * Quaternion.Euler(90f, 0f, 90f);
+			camera.fieldOfView = 30f;
+			RenderTexture renderTexture = new RenderTexture(width, height, 24, RenderTextureFormat.ARGB32);
+			renderTexture.filterMode = FilterMode.Bilinear;
+			renderTexture.antiAliasing = 8;
+			RenderTexture f_rtSub = new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32);
+			Texture2D result = this.RenderThum(camera, renderTexture, f_rtSub, width, height);
+			this.Restore();
+			return result;
+		}
+
+		// Token: 0x06000049 RID: 73 RVA: 0x00007BBC File Offset: 0x00005DBC
+		public void SaveRestore()
+		{
+			this._savedPos = GameMain.Instance.MainCamera.GetTargetPos();
+			this._savedAngle = GameMain.Instance.MainCamera.GetAroundAngle();
+			this._savedDistance = GameMain.Instance.MainCamera.GetDistance();
+			this.px = GameMain.Instance.MainCamera.transform.position.x;
+			this.py = GameMain.Instance.MainCamera.transform.position.y;
+			this.pz = GameMain.Instance.MainCamera.transform.position.z;
+			this.rx = GameMain.Instance.MainCamera.transform.rotation.x;
+			this.ry = GameMain.Instance.MainCamera.transform.rotation.y;
+			this.rz = GameMain.Instance.MainCamera.transform.rotation.z;
+			this.rw = GameMain.Instance.MainCamera.transform.rotation.w;
+			this.fov = GameMain.Instance.MainCamera.camera.fieldOfView;
+			this.bg = GameMain.Instance.BgMgr.GetBGName();
+			GameMain.Instance.BgMgr.DeleteBg();
+			this.isStock = true;
+		}
+
+		// Token: 0x0600004A RID: 74 RVA: 0x00007D28 File Offset: 0x00005F28
+		public void Restore()
+		{
+			if (this.isStock)
+			{
+				this.isStock = false;
+				GameMain.Instance.BgMgr.ChangeBg(this.bg);
+				GameMain.Instance.MainCamera.transform.position.Set(this.px, this.py, this.pz);
+				GameMain.Instance.MainCamera.transform.rotation.Set(this.rx, this.ry, this.rz, this.rw);
+				GameMain.Instance.MainCamera.camera.fieldOfView = this.fov;
+				GameMain.Instance.MainCamera.SetTargetPos(this._savedPos, true);
+				GameMain.Instance.MainCamera.SetAroundAngle(this._savedAngle, true);
+				GameMain.Instance.MainCamera.SetDistance(this._savedDistance, true);
+			}
+		}
+
+		// Token: 0x0600004B RID: 75 RVA: 0x00007E1C File Offset: 0x0000601C
+		public Texture2D RenderThum(Camera f_cam, RenderTexture f_rtMain, RenderTexture f_rtSub, int width, int height)
+		{
+			RenderTexture targetTexture = f_cam.targetTexture;
+			bool enabled = f_cam.enabled;
+			f_cam.targetTexture = f_rtMain;
+			f_cam.enabled = true;
+			f_cam.Render();
+			f_cam.enabled = false;
+			Texture2D texture2D = new Texture2D(width, height, TextureFormat.ARGB32, false);
+			RenderTexture active = RenderTexture.active;
+			RenderTexture.active = f_rtSub;
+			GL.Clear(true, true, new Color(0f, 0f, 0f, 0f));
+			GL.PushMatrix();
+			GL.LoadPixelMatrix(0f, (float)width, (float)height, 0f);
+			Graphics.DrawTexture(new Rect(0f, 0f, (float)width, (float)height), f_rtMain);
+			GL.PopMatrix();
+			texture2D.ReadPixels(new Rect(0f, 0f, (float)width, (float)height), 0, 0);
+			texture2D.Apply();
+			RenderTexture.active = active;
+			f_cam.targetTexture = targetTexture;
+			f_cam.enabled = enabled;
+			return texture2D;
+		}
+
+		// Token: 0x0600004C RID: 76 RVA: 0x00007EFC File Offset: 0x000060FC
+		public CharacterMgr.Preset PresetSave(Maid f_maid, CharacterMgr.PresetType f_type)
+		{
+			CharacterMgr.Preset preset = new CharacterMgr.Preset();
+			Texture2D texture2D = this.ThumShot(GameMain.Instance.MainCamera.camera, f_maid);
+			MemoryStream memoryStream = new MemoryStream();
+			BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
+			binaryWriter.Write("CM3D2_PRESET");
+			binaryWriter.Write(1160);
+			binaryWriter.Write((int)f_type);
+			if (texture2D != null)
+			{
+				byte[] array = texture2D.EncodeToPNG();
+				binaryWriter.Write(array.Length);
+				binaryWriter.Write(array);
+			}
+			else
+			{
+				binaryWriter.Write(0);
+			}
+			f_maid.SerializeProp(binaryWriter);
+			f_maid.SerializeMultiColor(binaryWriter);
+			f_maid.SerializeBody(binaryWriter);
+			string text = string.Concat(new string[]
+			{
+				"pre_",
+				f_maid.status.lastName,
+				f_maid.status.firstName,
+				"_",
+				DateTime.Now.ToString("yyyyMMddHHmmss")
+			});
+			text = UTY.FileNameEscape(text);
+			text += ".preset";
+			string text2 = Path.GetFullPath(".\\") + "Preset";
+			if (!Directory.Exists(text2))
+			{
+				Directory.CreateDirectory(text2);
+			}
+			File.WriteAllBytes(text2 + "\\" + text, memoryStream.ToArray());
+			memoryStream.Dispose();
+			preset.texThum = texture2D;
+			preset.strFileName = text;
+			preset.ePreType = f_type;
+			return preset;
+		}
+
+		// Token: 0x0600004D RID: 77 RVA: 0x00008058 File Offset: 0x00006258
+		public string GetNewestFileName(string folderName)
+		{
+			string[] files = Directory.GetFiles(folderName, "*.preset", SearchOption.TopDirectoryOnly);
+			string path = string.Empty;
+			DateTime t = DateTime.MinValue;
+			foreach (string text in files)
+			{
+				FileInfo fileInfo = new FileInfo(text);
+				if (fileInfo.LastWriteTime > t)
+				{
+					t = fileInfo.LastWriteTime;
+					path = text;
+				}
+			}
+			return Path.GetFileName(path);
+		}
+
+		// Token: 0x0600004E RID: 78 RVA: 0x000080BC File Offset: 0x000062BC
+		public byte[] LoadMenuInternal(string filename)
+		{
+			byte[] result;
+			try
+			{
+				using (AFileBase afileBase = GameUty.FileOpen(filename, null))
+				{
+					if (!afileBase.IsValid())
+					{
+						throw new Exception();
+					}
+					result = afileBase.ReadAll();
+				}
+			}
+			catch (Exception ex)
+			{
+				throw ex;
+			}
+			return result;
+		}
+
+		// Token: 0x0600004F RID: 79 RVA: 0x00008114 File Offset: 0x00006314
+		public int GetPriority(string fileName)
+		{
+			int result = 0;
+			using (MemoryStream memoryStream = new MemoryStream(this.LoadMenuInternal(fileName), false))
+			{
+				using (BinaryReader binaryReader = new BinaryReader(memoryStream, Encoding.UTF8))
+				{
+					binaryReader.ReadString();
+					binaryReader.ReadInt32();
+					binaryReader.ReadString();
+					binaryReader.ReadString();
+					binaryReader.ReadString();
+					binaryReader.ReadString();
+					binaryReader.ReadInt32();
+					for (;;)
+					{
+						int num = (int)binaryReader.ReadByte();
+						if (num == 0)
+						{
+							break;
+						}
+						string a = binaryReader.ReadString();
+						string[] array = new string[num - 1];
+						for (int i = 0; i < num - 1; i++)
+						{
+							array[i] = binaryReader.ReadString();
+						}
+						if (a == "priority")
+						{
+							result = int.Parse(array[0]);
+						}
+					}
+				}
+			}
+			return result;
+		}
+
+		// Token: 0x0400004D RID: 77
+		private float px;
+
+		// Token: 0x0400004E RID: 78
+		private float py;
+
+		// Token: 0x0400004F RID: 79
+		private float pz;
+
+		// Token: 0x04000050 RID: 80
+		private float rx;
+
+		// Token: 0x04000051 RID: 81
+		private float ry;
+
+		// Token: 0x04000052 RID: 82
+		private float rz;
+
+		// Token: 0x04000053 RID: 83
+		private float rw;
+
+		// Token: 0x04000054 RID: 84
+		private float fov;
+
+		// Token: 0x04000055 RID: 85
+		private string bg = string.Empty;
+
+		// Token: 0x04000056 RID: 86
+		private bool isStock;
+
+		// Token: 0x04000057 RID: 87
+		private Vector3 _savedPos;
+
+		// Token: 0x04000058 RID: 88
+		private Vector2 _savedAngle;
+
+		// Token: 0x04000059 RID: 89
+		private float _savedDistance = 1f;
+	}
+}

+ 269 - 0
COM3D2.PropMyItem.Plugin/UserConfig.cs

@@ -0,0 +1,269 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace COM3D2.PropMyItem.Plugin
+{
+	// Token: 0x0200000D RID: 13
+	public class UserConfig
+	{
+		// Token: 0x17000010 RID: 16
+		// (get) Token: 0x06000053 RID: 83 RVA: 0x00008307 File Offset: 0x00006507
+		// (set) Token: 0x06000054 RID: 84 RVA: 0x0000830F File Offset: 0x0000650F
+		public string GuiVisibleKey
+		{
+			get
+			{
+				return this._guiVisible;
+			}
+			set
+			{
+				this._guiVisible = value;
+			}
+		}
+
+		// Token: 0x17000011 RID: 17
+		// (get) Token: 0x06000055 RID: 85 RVA: 0x00008318 File Offset: 0x00006518
+		// (set) Token: 0x06000056 RID: 86 RVA: 0x00008320 File Offset: 0x00006520
+		public bool IsControlKey
+		{
+			get
+			{
+				return this._isControlKey;
+			}
+			set
+			{
+				this._isControlKey = value;
+			}
+		}
+
+		// Token: 0x17000012 RID: 18
+		// (get) Token: 0x06000057 RID: 87 RVA: 0x00008329 File Offset: 0x00006529
+		// (set) Token: 0x06000058 RID: 88 RVA: 0x00008331 File Offset: 0x00006531
+		public bool IsAltKey
+		{
+			get
+			{
+				return this._isAltKey;
+			}
+			set
+			{
+				this._isAltKey = value;
+			}
+		}
+
+		// Token: 0x17000013 RID: 19
+		// (get) Token: 0x06000059 RID: 89 RVA: 0x0000833A File Offset: 0x0000653A
+		// (set) Token: 0x0600005A RID: 90 RVA: 0x00008342 File Offset: 0x00006542
+		public bool IsShiftKey
+		{
+			get
+			{
+				return this._isShift;
+			}
+			set
+			{
+				this._isShift = value;
+			}
+		}
+
+		// Token: 0x17000014 RID: 20
+		// (get) Token: 0x0600005B RID: 91 RVA: 0x0000834B File Offset: 0x0000654B
+		// (set) Token: 0x0600005C RID: 92 RVA: 0x00008353 File Offset: 0x00006553
+		public bool IsAutoShoesHide
+		{
+			get
+			{
+				return this._isAutoShoesHide;
+			}
+			set
+			{
+				this._isAutoShoesHide = value;
+			}
+		}
+
+		// Token: 0x17000015 RID: 21
+		// (get) Token: 0x0600005D RID: 93 RVA: 0x0000835C File Offset: 0x0000655C
+		// (set) Token: 0x0600005E RID: 94 RVA: 0x00008364 File Offset: 0x00006564
+		public bool IsOutputInfoLog
+		{
+			get
+			{
+				return this._isOutputInfoLog;
+			}
+			set
+			{
+				this._isOutputInfoLog = value;
+			}
+		}
+
+		// Token: 0x17000016 RID: 22
+		// (get) Token: 0x0600005F RID: 95 RVA: 0x0000836D File Offset: 0x0000656D
+		// (set) Token: 0x06000060 RID: 96 RVA: 0x00008375 File Offset: 0x00006575
+		public List<string> FavList
+		{
+			get
+			{
+				return this._favList;
+			}
+			set
+			{
+				this._favList = value;
+			}
+		}
+
+		// Token: 0x17000017 RID: 23
+		// (get) Token: 0x06000061 RID: 97 RVA: 0x0000837E File Offset: 0x0000657E
+		// (set) Token: 0x06000062 RID: 98 RVA: 0x00008386 File Offset: 0x00006586
+		public List<string> ColorLockList
+		{
+			get
+			{
+				return this._colorDisableList;
+			}
+			set
+			{
+				this._colorDisableList = value;
+			}
+		}
+
+		// Token: 0x17000018 RID: 24
+		// (get) Token: 0x06000063 RID: 99 RVA: 0x0000838F File Offset: 0x0000658F
+		// (set) Token: 0x06000064 RID: 100 RVA: 0x00008397 File Offset: 0x00006597
+		public List<string> FilterTextList
+		{
+			get
+			{
+				return this._filterTextList;
+			}
+			set
+			{
+				this._filterTextList = value;
+			}
+		}
+
+		// Token: 0x17000019 RID: 25
+		// (get) Token: 0x06000065 RID: 101 RVA: 0x000083A0 File Offset: 0x000065A0
+		public static UserConfig Instance
+		{
+			get
+			{
+				if (UserConfig._config == null)
+				{
+					string text = Directory.GetCurrentDirectory() + "\\Sybaris\\UnityInjector\\Config\\PropMyItemUser.xml";
+					UserConfig._config = new UserConfig();
+					if (File.Exists(text))
+					{
+						UserConfig._config.Load(text);
+					}
+					else
+					{
+						UserConfig._config.IsShiftKey = true;
+						UserConfig._config.GuiVisibleKey = "i";
+						UserConfig._config.Save();
+					}
+				}
+				return UserConfig._config;
+			}
+		}
+
+		// Token: 0x06000066 RID: 102 RVA: 0x0000840C File Offset: 0x0000660C
+		public void Load(string filePath)
+		{
+			try
+			{
+				XmlSerializer xmlSerializer = new XmlSerializer(typeof(UserConfig));
+				using (StreamReader streamReader = new StreamReader(filePath, new UTF8Encoding(false)))
+				{
+					UserConfig userConfig = (UserConfig)xmlSerializer.Deserialize(streamReader);
+					this.GuiVisibleKey = userConfig.GuiVisibleKey.ToLower();
+					this.IsAutoShoesHide = userConfig.IsAutoShoesHide;
+					this.IsOutputInfoLog = userConfig.IsOutputInfoLog;
+					this.FavList = userConfig.FavList;
+					this.ColorLockList = userConfig.ColorLockList;
+					this.FilterTextList = userConfig.FilterTextList;
+					this.IsControlKey = userConfig.IsControlKey;
+					this.IsAltKey = userConfig.IsAltKey;
+					this.IsShiftKey = userConfig.IsShiftKey;
+				}
+			}
+			catch (Exception)
+			{
+			}
+			if (string.IsNullOrEmpty(this.GuiVisibleKey))
+			{
+				this.GuiVisibleKey = "i";
+			}
+			if (this.FavList == null)
+			{
+				this.FavList = new List<string>();
+			}
+			if (this.FilterTextList == null)
+			{
+				this.FilterTextList = new List<string>();
+			}
+			if (this.ColorLockList == null)
+			{
+				this.ColorLockList = new List<string>();
+			}
+		}
+
+		// Token: 0x06000067 RID: 103 RVA: 0x00008534 File Offset: 0x00006734
+		public void Save()
+		{
+			string filePath = Directory.GetCurrentDirectory() + "\\Sybaris\\UnityInjector\\Config\\PropMyItemUser.xml";
+			this.Save(filePath);
+		}
+
+		// Token: 0x06000068 RID: 104 RVA: 0x00008558 File Offset: 0x00006758
+		public void Save(string filePath)
+		{
+			try
+			{
+				XmlSerializer xmlSerializer = new XmlSerializer(typeof(UserConfig));
+				StreamWriter streamWriter = new StreamWriter(filePath, false, new UTF8Encoding(false));
+				xmlSerializer.Serialize(streamWriter, this);
+				streamWriter.Close();
+			}
+			catch (Exception value)
+			{
+				Console.WriteLine(value);
+			}
+		}
+
+		// Token: 0x04000061 RID: 97
+		private const string DefaultGUIKey = "i";
+
+		// Token: 0x04000062 RID: 98
+		private string _guiVisible = "i";
+
+		// Token: 0x04000063 RID: 99
+		private bool _isControlKey;
+
+		// Token: 0x04000064 RID: 100
+		private bool _isAltKey;
+
+		// Token: 0x04000065 RID: 101
+		private bool _isShift;
+
+		// Token: 0x04000066 RID: 102
+		private bool _isAutoShoesHide;
+
+		// Token: 0x04000067 RID: 103
+		private bool _isOutputInfoLog;
+
+		// Token: 0x04000068 RID: 104
+		private List<string> _favList = new List<string>();
+
+		// Token: 0x04000069 RID: 105
+		private List<string> _colorDisableList = new List<string>();
+
+		// Token: 0x0400006A RID: 106
+		private List<string> _filterTextList = new List<string>();
+
+		// Token: 0x0400006B RID: 107
+		private static UserConfig _config;
+	}
+}