denikson 5 anni fa
parent
commit
89678988f0
40 ha cambiato i file con 4258 aggiunte e 372 eliminazioni
  1. 5 5
      Assembly-CSharp.sln
  2. 2 0
      Assembly-CSharp/ADVKagManager.cs
  3. 16 16
      Assembly-CSharp/Assembly-CSharp.csproj
  4. 0 3
      Assembly-CSharp/AttributeViewer.cs
  5. 4 12
      Assembly-CSharp/BacklogCtrl.cs
  6. 0 34
      Assembly-CSharp/BaseKagManager.cs
  7. 1 1
      Assembly-CSharp/CMSystem.cs
  8. 1 2
      Assembly-CSharp/ConfigCtrl.cs
  9. 0 32
      Assembly-CSharp/ConfigMgr.cs
  10. 268 12
      Assembly-CSharp/ControllerShortcutSettingData.cs
  11. 354 1
      Assembly-CSharp/ControllerShortcutWindow.cs
  12. 26 9
      Assembly-CSharp/DanceSelect.cs
  13. 0 1
      Assembly-CSharp/DanceSetting.cs
  14. 1 20
      Assembly-CSharp/GameMain.cs
  15. 257 54
      Assembly-CSharp/GameUty.cs
  16. 991 2
      Assembly-CSharp/HandSignShortcut.cs
  17. 111 0
      Assembly-CSharp/KeyboardShortcutManager.cs
  18. 5 14
      Assembly-CSharp/MessageClass.cs
  19. 4 4
      Assembly-CSharp/MessageWindowCtrl.cs
  20. 207 2
      Assembly-CSharp/OtherCommandShortcut.cs
  21. 456 0
      Assembly-CSharp/PhotoFaceDataShortcut.cs
  22. 175 2
      Assembly-CSharp/PhotoFaceDataShortcutParent.cs
  23. 419 0
      Assembly-CSharp/PhotoFaceDataShortcutSetter.cs
  24. 167 0
      Assembly-CSharp/PhotoMotionDataShortcut.cs
  25. 224 0
      Assembly-CSharp/PhotoMotionDataShortcutSetter.cs
  26. 4 14
      Assembly-CSharp/ProfileCtrl.cs
  27. 2 14
      Assembly-CSharp/SceneEdit.cs
  28. 1 1
      Assembly-CSharp/SceneWarning.cs
  29. 38 13
      Assembly-CSharp/SystemShortcut.cs
  30. 2 10
      Assembly-CSharp/TatooAlphaWindow.cs
  31. 27 38
      Assembly-CSharp/TitleCtrl.cs
  32. 451 0
      Assembly-CSharp/VRFaceShortcutConfig.cs
  33. 12 5
      Assembly-CSharp/YotogiCommandFactory.cs
  34. 0 2
      Assembly-CSharp/YotogiCommandMenuOVR.cs
  35. 0 32
      Assembly-CSharp/YotogiPlayManager.cs
  36. 4 5
      Assembly-CSharp/YotogiResultManager.cs
  37. 0 7
      Assembly-CSharp/YotogiSkillContainerViewer.cs
  38. 1 0
      Assembly-CSharp/YotogiSkillUnit.cs
  39. 0 2
      Assembly-CSharp/YotogiStageUnit.cs
  40. 22 3
      Assembly-CSharp/uGUITutorialPanel.cs

+ 5 - 5
Assembly-CSharp.sln

@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 15
 VisualStudioVersion = 15.0.26228.4
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp\Assembly-CSharp.csproj", "{BA85C690-52D0-4F76-A9B2-93EAA08C06CC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp\Assembly-CSharp.csproj", "{109F799E-F000-41C8-B991-6BFE1D5BB501}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -11,10 +11,10 @@ Global
 		Release|Any CPU = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{BA85C690-52D0-4F76-A9B2-93EAA08C06CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{BA85C690-52D0-4F76-A9B2-93EAA08C06CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{BA85C690-52D0-4F76-A9B2-93EAA08C06CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{BA85C690-52D0-4F76-A9B2-93EAA08C06CC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{109F799E-F000-41C8-B991-6BFE1D5BB501}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{109F799E-F000-41C8-B991-6BFE1D5BB501}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{109F799E-F000-41C8-B991-6BFE1D5BB501}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{109F799E-F000-41C8-B991-6BFE1D5BB501}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 2 - 0
Assembly-CSharp/ADVKagManager.cs

@@ -341,6 +341,8 @@ public class ADVKagManager : BaseKagManager
 	{
 		Action<string, string> onClickCallBack = delegate(string choices_title, string label_name)
 		{
+			string text = "=> " + choices_title;
+			this.message_mgr_.AddBackLog(string.Empty, text, string.Empty, 0);
 			this.kag_.GoToLabel(label_name);
 			this.kag_.Exec();
 		};

+ 16 - 16
Assembly-CSharp/Assembly-CSharp.csproj

@@ -4,7 +4,7 @@
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{BA85C690-52D0-4F76-A9B2-93EAA08C06CC}</ProjectGuid>
+    <ProjectGuid>{109F799E-F000-41C8-B991-6BFE1D5BB501}</ProjectGuid>
     <OutputType>Library</OutputType>
     <RootNamespace>Assembly-CSharp</RootNamespace>
     <AssemblyName>Assembly-CSharp</AssemblyName>
@@ -34,49 +34,49 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="Assembly-CSharp-firstpass">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
     </Reference>
     <Reference Include="Assembly-UnityScript-firstpass">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\Assembly-UnityScript-firstpass.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\Assembly-UnityScript-firstpass.dll</HintPath>
     </Reference>
     <Reference Include="FoveUnityPlugin">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\FoveUnityPlugin.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\FoveUnityPlugin.dll</HintPath>
     </Reference>
     <Reference Include="Ionic.Zlib">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\Ionic.Zlib.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\Ionic.Zlib.dll</HintPath>
     </Reference>
     <Reference Include="JsonFx.Json">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\JsonFx.Json.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\JsonFx.Json.dll</HintPath>
     </Reference>
     <Reference Include="LeapCSharp.NET3.5">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\LeapCSharp.NET3.5.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\LeapCSharp.NET3.5.dll</HintPath>
     </Reference>
     <Reference Include="System">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\System.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\System.dll</HintPath>
     </Reference>
     <Reference Include="System.Core">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\System.Core.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\System.Core.dll</HintPath>
     </Reference>
     <Reference Include="System.Drawing">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\System.Drawing.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\System.Drawing.dll</HintPath>
     </Reference>
     <Reference Include="System.Windows.Forms">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\System.Windows.Forms.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\System.Windows.Forms.dll</HintPath>
     </Reference>
     <Reference Include="System.Xml">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\System.Xml.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\System.Xml.dll</HintPath>
     </Reference>
     <Reference Include="System.Xml.Linq">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\System.Xml.Linq.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\System.Xml.Linq.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\UnityEngine.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\UnityEngine.dll</HintPath>
     </Reference>
     <Reference Include="UnityEngine.UI">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\UnityEngine.UI.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\UnityEngine.UI.dll</HintPath>
     </Reference>
     <Reference Include="zxing.unity">
-      <HintPath>..\..\..\Programs\Gams\com3d2_en_try\COM3D2_en_tryx64_Data\Managed\zxing.unity.dll</HintPath>
+      <HintPath>..\..\..\Programs\Gams\COM3D2\COM3D2\COM3D2x64_Data\Managed\zxing.unity.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>

+ 0 - 3
Assembly-CSharp/AttributeViewer.cs

@@ -1,6 +1,5 @@
 using System;
 using System.Collections.Generic;
-using I2.Loc;
 using MaidStatus;
 using UnityEngine;
 
@@ -53,8 +52,6 @@ public class AttributeViewer : MonoBehaviour
 			if (!(componentInChildren == null))
 			{
 				componentInChildren.text = data.drawName;
-				Localize component = componentInChildren.GetComponent<Localize>();
-				component.SetTerm(data.termName);
 				num++;
 			}
 		}

+ 4 - 12
Assembly-CSharp/BacklogCtrl.cs

@@ -34,20 +34,12 @@ public class BacklogCtrl : MonoBehaviour
 				gameObject.transform.localScale = Vector3.one;
 				gameObject.transform.localPosition = Vector3.zero;
 				gameObject.transform.rotation = Quaternion.identity;
-				SubtitleDisplayManager component2 = gameObject.GetComponent<SubtitleDisplayManager>();
-				component2.charaNameText = backlogUnit.m_speakerName;
-				component2.originalText = backlogUnit.m_msg;
-				component2.subtitlesText = backlogUnit.m_subtitlemsg;
+				UILabel component2 = UTY.GetChildObject(gameObject, "SpeakerName", false).GetComponent<UILabel>();
+				component2.text = backlogUnit.m_speakerName;
+				UILabel component3 = UTY.GetChildObject(gameObject, "Message", false).GetComponent<UILabel>();
+				component3.text = backlogUnit.m_msg;
 			}
 		}
-		if (SubtitleDisplayManager.configDisplayType == SubtitleDisplayManager.DisplayType.OriginalAndSubtitle)
-		{
-			base.GetComponent<UIGrid>().cellHeight = 240f;
-		}
-		else
-		{
-			base.GetComponent<UIGrid>().cellHeight = 182f;
-		}
 		base.GetComponent<UIGrid>().Reposition();
 	}
 

+ 0 - 34
Assembly-CSharp/BaseKagManager.cs

@@ -4458,15 +4458,6 @@ public class BaseKagManager : IDisposable
 
 	public bool TagLoadSubtitleFile(KagTagSupport tag_data)
 	{
-		this.CheckAbsolutelyNecessaryTag(tag_data, "loadsubtitlefile", new string[]
-		{
-			"file"
-		});
-		string fileName = Path.ChangeExtension(tag_data.GetTagProperty("file").AsString(), ".ks");
-		SubtitleMovieManager globalInstance = SubtitleMovieManager.GetGlobalInstance(false);
-		globalInstance.autoDestroy = true;
-		globalInstance.LoadSubtitleScriptFile(fileName);
-		globalInstance.Play();
 		return false;
 	}
 
@@ -4478,36 +4469,11 @@ public class BaseKagManager : IDisposable
 
 	public bool TagSubtitleDisplayForPlayVoice(KagTagSupport tag_data)
 	{
-		this.CheckAbsolutelyNecessaryTag(tag_data, "subtitledisplayforplayvoice", new string[]
-		{
-			"text"
-		});
-		this.subtitle_data.text = tag_data.GetTagProperty("text").AsString();
-		this.subtitle_data.displayTime = -1;
-		if (tag_data.IsValid("addtime"))
-		{
-			this.subtitle_data.addDisplayTime = tag_data.GetTagProperty("addtime").AsInteger();
-		}
-		else if (tag_data.IsValid("wait"))
-		{
-			this.subtitle_data.displayTime = tag_data.GetTagProperty("wait").AsInteger();
-		}
-		this.subtitle_data.casinoType = tag_data.IsValid("mode_c");
 		return false;
 	}
 
 	public bool TagSubtitleDisplay(KagTagSupport tag_data)
 	{
-		this.CheckAbsolutelyNecessaryTag(tag_data, "subtitledisplay", new string[]
-		{
-			"text",
-			"time"
-		});
-		string text = tag_data.GetTagProperty("text").AsString();
-		int displayTime = int.Parse(tag_data.GetTagProperty("time").AsString());
-		SubtitleMovieManager globalInstance = SubtitleMovieManager.GetGlobalInstance(false);
-		globalInstance.autoDestroy = true;
-		globalInstance.Play(text, displayTime);
 		return false;
 	}
 

+ 1 - 1
Assembly-CSharp/CMSystem.cs

@@ -184,7 +184,7 @@ public class CMSystem
 		}
 		set
 		{
-			this.m_SubtitleType = value;
+			this.m_SubtitleType = SubtitleDisplayManager.DisplayType.None;
 		}
 	}
 

+ 1 - 2
Assembly-CSharp/ConfigCtrl.cs

@@ -139,8 +139,7 @@ public class ConfigCtrl : MonoBehaviour
 			}
 		}
 		EventDelegate.Add(this.m_plSubtitleType.onChange, new EventDelegate.Callback(BaseMgr<ConfigMgr>.Instance.OnSubtitleDisplayTypeChange));
-		childObject2.GetComponent<UISprite>().enabled = false;
-		UTY.GetChildObject(childObject2, "Frame2", false).SetActive(true);
+		this.m_plSubtitleType.transform.parent.gameObject.SetActive(false);
 		GameObject childObject3 = UTY.GetChildObject(configPanel, "Sound", false);
 		this.m_slMasterVolume = UTY.GetChildObject(childObject3, "MasterVolume/Slider", false).GetComponent<UISlider>();
 		EventDelegate.Add(this.m_slMasterVolume.onChange, new EventDelegate.Callback(BaseMgr<ConfigMgr>.Instance.OnMasterVolumeChange));

+ 0 - 32
Assembly-CSharp/ConfigMgr.cs

@@ -355,38 +355,6 @@ public class ConfigMgr : BaseMgr<ConfigMgr>
 		this.cblConfig.visible = true;
 	}
 
-	public void Update()
-	{
-		int num = int.MinValue;
-		if (Input.GetKeyDown(KeyCode.F1))
-		{
-			num = 0;
-		}
-		else if (Input.GetKeyDown(KeyCode.F2))
-		{
-			num = 1;
-		}
-		else if (Input.GetKeyDown(KeyCode.F3))
-		{
-			num = 2;
-		}
-		else if (Input.GetKeyDown(KeyCode.F4))
-		{
-			num = 3;
-		}
-		if (num != -2147483648)
-		{
-			if (this.m_configCtrl == null)
-			{
-				GameMain.Instance.CMSystem.SubtitleType = (SubtitleDisplayManager.DisplayType)num;
-			}
-			else
-			{
-				this.m_configCtrl.m_plSubtitleType.value = SubtitleDisplayManager.EnumConvert.GetTerm((SubtitleDisplayManager.DisplayType)num);
-			}
-		}
-	}
-
 	[SerializeField]
 	public ConfigCblManager cblConfig;
 

+ 268 - 12
Assembly-CSharp/ControllerShortcutSettingData.cs

@@ -1,4 +1,6 @@
 using System;
+using System.Collections.Generic;
+using System.IO;
 using UnityEngine;
 
 public static class ControllerShortcutSettingData
@@ -7,40 +9,294 @@ public static class ControllerShortcutSettingData
 	{
 		get
 		{
+			ControllerShortcutSettingData.LoadDefault();
 			return ControllerShortcutSettingData.m_Config;
 		}
 	}
 
+	public static void LoadDefault()
+	{
+		if (ControllerShortcutSettingData.m_IsLoadedDefault)
+		{
+			return;
+		}
+		ControllerShortcutSettingData.m_IsLoadedDefault = true;
+		ControllerShortcutSettingData.m_Config = ControllerShortcutSettingData.m_Config.ReadAndSet();
+	}
+
 	private static ControllerShortcutSettingData.OvrControllerShortcutConfig m_Config = new ControllerShortcutSettingData.OvrControllerShortcutConfig();
 
+	private static bool m_IsLoadedDefault = false;
+
+	[Serializable]
 	public class OvrControllerShortcutConfig : ISerializationCallbackReceiver
 	{
-		public bool isDirectMode { get; set; }
+		public void OnBeforeSerialize()
+		{
+			this.m_nVersion = 1170;
+		}
 
-		public bool isEveryShowMode { get; set; }
+		public void OnAfterDeserialize()
+		{
+		}
 
-		public float maintainPelvisPosition { get; set; }
+		public bool Write()
+		{
+			string contents = JsonUtility.ToJson(this, true);
+			string path = Path.GetFullPath(".\\") + "OvrControllerShortcutConfig.json";
+			try
+			{
+				File.WriteAllText(path, contents);
+			}
+			catch
+			{
+				Debug.LogError("OvrControllerShortcutConfig.json の書き込みに失敗。");
+				return false;
+			}
+			return true;
+		}
 
-		public float bodyPosStiffness { get; set; }
+		public ControllerShortcutSettingData.OvrControllerShortcutConfig ReadAndSet()
+		{
+			string path = Path.GetFullPath(".\\") + "OvrControllerShortcutConfig.json";
+			if (!File.Exists(path))
+			{
+				this.CreateDefaultData();
+				this.Write();
+			}
+			string json;
+			try
+			{
+				json = File.ReadAllText(path);
+			}
+			catch
+			{
+				Debug.LogError("OvrControllerShortcutConfig.json の読込に失敗。");
+				return this;
+			}
+			return JsonUtility.FromJson<ControllerShortcutSettingData.OvrControllerShortcutConfig>(json);
+		}
 
-		public float bodyRotStiffness { get; set; }
+		private void CreateDefaultData()
+		{
+			this.FaceListRight = new List<PhotoFaceDataShortcut.FaceData>();
+			List<PhotoFaceData> list = new List<PhotoFaceData>();
+			list.Add(PhotoFaceData.Get((long)PhotoFaceDataShortcut.ItemData.photoFaceDataNameDic["通常"]));
+			list.Add(PhotoFaceData.Get((long)PhotoFaceDataShortcut.ItemData.photoFaceDataNameDic["微笑み"]));
+			list.Add(PhotoFaceData.Get((long)PhotoFaceDataShortcut.ItemData.photoFaceDataNameDic["にっこり"]));
+			list.Add(PhotoFaceData.Get((long)PhotoFaceDataShortcut.ItemData.photoFaceDataNameDic["優しさ"]));
+			list.Add(PhotoFaceData.Get((long)PhotoFaceDataShortcut.ItemData.photoFaceDataNameDic["ぷんすか"]));
+			list.Add(PhotoFaceData.Get((long)PhotoFaceDataShortcut.ItemData.photoFaceDataNameDic["むー"]));
+			list.Add(PhotoFaceData.Get((long)PhotoFaceDataShortcut.ItemData.photoFaceDataNameDic["泣き"]));
+			list.Add(PhotoFaceData.Get((long)PhotoFaceDataShortcut.ItemData.photoFaceDataNameDic["ダンスジト目"]));
+			for (int i = 0; i < list.Count; i++)
+			{
+				PhotoFaceDataShortcut.FaceData faceData = new PhotoFaceDataShortcut.FaceData();
+				faceData.data = list[i];
+				this.FaceListRight.Add(faceData);
+			}
+			this.FaceListLeft = new List<PhotoFaceDataShortcut.FaceData>();
+			for (int j = 0; j < list.Count; j++)
+			{
+				PhotoFaceDataShortcut.FaceData faceData2 = new PhotoFaceDataShortcut.FaceData();
+				faceData2.data = list[j];
+				this.FaceListLeft.Add(faceData2);
+			}
+			this.isDirectMode = true;
+			this.isEveryShowMode = true;
+			this.maintainPelvisPosition = 0.3f;
+			this.bodyPosStiffness = 0.55f;
+			this.bodyRotStiffness = 0.1f;
+			this.chestRotationWeight = 0.3f;
+			this.selfCameraFOV = 0.5f;
+			this.use1TrackerForHead = false;
+			this.use23TrackerForFoot = false;
+			this.use12TrackerForFoot = false;
+		}
 
-		public float chestRotationWeight { get; set; }
+		public bool isDirectMode
+		{
+			get
+			{
+				return this.IsDirectShortcutMode;
+			}
+			set
+			{
+				this.IsDirectShortcutMode = value;
+			}
+		}
 
-		public float selfCameraFOV { get; set; }
+		public bool isEveryShowMode
+		{
+			get
+			{
+				return this.IsEveryShowMode;
+			}
+			set
+			{
+				this.IsEveryShowMode = value;
+			}
+		}
 
-		public bool use1TrackerForHead { get; set; }
+		public List<PhotoFaceDataShortcut.FaceData> faceListRight
+		{
+			get
+			{
+				return this.FaceListRight;
+			}
+			set
+			{
+				this.FaceListRight = value;
+			}
+		}
 
-		public bool use23TrackerForFoot { get; set; }
+		public List<PhotoFaceDataShortcut.FaceData> faceListLeft
+		{
+			get
+			{
+				return this.FaceListLeft;
+			}
+			set
+			{
+				this.FaceListLeft = value;
+			}
+		}
 
-		public bool use12TrackerForFoot { get; set; }
+		public float maintainPelvisPosition
+		{
+			get
+			{
+				return this.MaintainPelvisPosition;
+			}
+			set
+			{
+				this.MaintainPelvisPosition = Mathf.Clamp(value, 0f, 1f);
+			}
+		}
 
-		public void OnAfterDeserialize()
+		public float bodyPosStiffness
 		{
+			get
+			{
+				return this.BodyPosStiffness;
+			}
+			set
+			{
+				this.BodyPosStiffness = Mathf.Clamp(value, 0f, 1f);
+			}
 		}
 
-		public void OnBeforeSerialize()
+		public float bodyRotStiffness
 		{
+			get
+			{
+				return this.BodyRotStiffness;
+			}
+			set
+			{
+				this.BodyRotStiffness = Mathf.Clamp(value, 0f, 1f);
+			}
 		}
+
+		public float chestRotationWeight
+		{
+			get
+			{
+				return this.ChestRotationWeight;
+			}
+			set
+			{
+				this.ChestRotationWeight = Mathf.Clamp(value, 0f, 1f);
+			}
+		}
+
+		public float selfCameraFOV
+		{
+			get
+			{
+				return this.SelfCameraFOV;
+			}
+			set
+			{
+				this.SelfCameraFOV = Mathf.Clamp(value, 0f, 1f);
+			}
+		}
+
+		public bool use1TrackerForHead
+		{
+			get
+			{
+				return this.Use1TrackerForHead;
+			}
+			set
+			{
+				this.Use1TrackerForHead = value;
+			}
+		}
+
+		public bool use23TrackerForFoot
+		{
+			get
+			{
+				return this.Use23TrackerForFoot;
+			}
+			set
+			{
+				this.Use23TrackerForFoot = value;
+			}
+		}
+
+		public bool use12TrackerForFoot
+		{
+			get
+			{
+				return this.Use12TrackerForFoot;
+			}
+			set
+			{
+				this.Use12TrackerForFoot = value;
+			}
+		}
+
+		private const string CONF_NAME = "OvrControllerShortcutConfig.json";
+
+		[SerializeField]
+		private int m_nVersion = 1170;
+
+		[SerializeField]
+		private bool IsDirectShortcutMode = true;
+
+		[SerializeField]
+		private bool IsEveryShowMode = true;
+
+		[SerializeField]
+		private List<PhotoFaceDataShortcut.FaceData> FaceListRight = new List<PhotoFaceDataShortcut.FaceData>();
+
+		[SerializeField]
+		private List<PhotoFaceDataShortcut.FaceData> FaceListLeft = new List<PhotoFaceDataShortcut.FaceData>();
+
+		[SerializeField]
+		private float MaintainPelvisPosition = 0.3f;
+
+		[SerializeField]
+		private float BodyPosStiffness = 0.55f;
+
+		[SerializeField]
+		private float BodyRotStiffness = 0.1f;
+
+		[SerializeField]
+		private float ChestRotationWeight = 0.3f;
+
+		[SerializeField]
+		private float SelfCameraFOV = 0.5f;
+
+		[SerializeField]
+		private bool Use1TrackerForHead;
+
+		[SerializeField]
+		private bool Use23TrackerForFoot;
+
+		[SerializeField]
+		private bool Use12TrackerForFoot;
 	}
 }

+ 354 - 1
Assembly-CSharp/ControllerShortcutWindow.cs

@@ -1,22 +1,359 @@
 using System;
+using System.Collections;
 using Kasizuki;
 using UnityEngine;
+using UnityEngine.SceneManagement;
 
 public class ControllerShortcutWindow : MonoBehaviour
 {
+	public float fadeSpeed
+	{
+		get
+		{
+			return this.m_FadeSpeed;
+		}
+		set
+		{
+			this.m_FadeSpeed = Mathf.Clamp(value, 0.001f, 1f);
+		}
+	}
+
+	private bool IsEnableTypeVR()
+	{
+		GameMain instance = GameMain.Instance;
+		if (!instance.VRMode)
+		{
+			return false;
+		}
+		GameMain.VRFamilyType vrfamily = instance.VRFamily;
+		return vrfamily != GameMain.VRFamilyType.FOVE;
+	}
+
+	private void Awake()
+	{
+		if (!this.IsEnableTypeVR())
+		{
+			Debug.Log("[ControllerShortcutWindow] ハンドコントローラが存在しない操作系だったので、UIを無効化します。");
+			base.gameObject.SetActive(false);
+		}
+		this.m_ButtonDic = new ObjectCacheDic();
+	}
+
 	public void Init(PhotoFaceDataShortcutParent rightHandUI, PhotoFaceDataShortcutParent leftHandUI)
 	{
+		PhotoFaceDataShortcutSetter component = this.m_FadeWindowFaceShortcut.GetComponent<PhotoFaceDataShortcutSetter>();
+		component.Init(rightHandUI.handUI, leftHandUI.handUI);
+	}
+
+	private void Start()
+	{
+		UIWFTabButton uiwftabButton = this.m_ButtonDic.CacheChildObject<UIWFTabButton>(this.m_ParentButtonMainMenu.gameObject, "button config", "コンフィグ");
+		UIWFTabButton uiwftabButton2 = this.m_ButtonDic.CacheChildObject<UIWFTabButton>(this.m_ParentButtonMainMenu.gameObject, "button calibration", "キャリブレーション");
+		UIWFTabButton uiwftabButton3 = this.m_ButtonDic.CacheChildObject<UIWFTabButton>(this.m_ParentButtonMainMenu.gameObject, "button face", "表情");
+		UIWFTabButton uiwftabButton4 = this.m_ButtonDic.CacheChildObject<UIWFTabButton>(this.m_ParentButtonMainMenu.gameObject, "button hand", "ハンドサイン");
+		UIWFTabButton uiwftabButton5 = this.m_ButtonDic.CacheChildObject<UIWFTabButton>(this.m_ParentButtonMainMenu.gameObject, "button motion", "モーション");
+		UIWFTabButton uiwftabButton6 = this.m_ButtonDic.CacheChildObject<UIWFTabButton>(this.m_ParentButtonMainMenu.gameObject, "button general object", "一般オブジェクト");
+		uiwftabButton5.gameObject.SetActive(false);
+		uiwftabButton4.gameObject.SetActive(false);
+		Debug.Log("メインメニューのうち、モーション登録ボタンを隠します。");
+		this.m_ParentButtonMainMenu.GetComponent<UIGrid>().Reposition();
+		EventDelegate.Add(uiwftabButton.onClick, new EventDelegate.Callback(this.OpenWindowConfig));
+		EventDelegate.Add(uiwftabButton2.onClick, new EventDelegate.Callback(this.OpenWindowCalibration));
+		EventDelegate.Add(uiwftabButton3.onClick, new EventDelegate.Callback(this.OpenWindowFaceShortcut));
+		EventDelegate.Add(uiwftabButton4.onClick, new EventDelegate.Callback(this.OpenWindowHandShortcut));
+		EventDelegate.Add(uiwftabButton5.onClick, new EventDelegate.Callback(this.OpenWindowMotionShortcut));
+		EventDelegate.Add(uiwftabButton6.onClick, new EventDelegate.Callback(this.OpenWindowGeneralObject));
+		this.m_FadeWindowHideButton = UTY.GetChildObject(this.m_FadeWindowParent.gameObject, "parent button/Button Hide", false).GetComponent<UIButton>();
+		EventDelegate.Add(this.m_FadeWindowHideButton.onClick, delegate()
+		{
+			this.m_FadeWindowParent.Close(0.25f, null);
+		});
+		this.SetupCaribWindow();
+		this.m_ParentButtonMainMenu.Select(uiwftabButton2);
+		uiwftabButton2.SetSelect(true);
+		NGUIWindow fadeWindowParent = this.m_FadeWindowParent;
+		fadeWindowParent.OnOpen = (Action)Delegate.Combine(fadeWindowParent.OnOpen, new Action(this.OnOpenFadeWindowParent));
+		this.ChangeLayout();
+		SceneManager.activeSceneChanged += this.OnActiveSceneChanged;
+	}
+
+	private void SetupCaribWindow()
+	{
+		this.m_FadeWindowCalibration.CacheChildObject<NGUIWindow>("Window Start", "FadeWindow Start");
+		this.m_FadeWindowCalibration.CacheChildObject<NGUIWindow>("Window Countdown", "FadeWindow Countdown");
+		this.m_FadeWindowCalibration.CacheChildObject<UILabel>("Window Countdown/label countdown", "countdown");
+		this.m_FadeWindowCalibration.CacheChildObject<UILabel>("Window Countdown/label description", "label count desc");
+		this.m_FadeWindowCalibration.CacheChildObject<UILabel>("Window Start/label", "label start desc");
+		UIButton uibutton = this.m_FadeWindowCalibration.CacheChildObject<UIButton>("Window Start/button start", "startButton");
+		UIButton uibutton2 = this.m_FadeWindowCalibration.CacheChildObject<UIButton>("Window Start/button end", "endButton");
+		NGUIWindow fadeWindowCalibration = this.m_FadeWindowCalibration;
+		fadeWindowCalibration.OnOpen = (Action)Delegate.Combine(fadeWindowCalibration.OnOpen, new Action(delegate()
+		{
+			NGUIWindow cache = this.m_FadeWindowCalibration.GetCache<NGUIWindow>("FadeWindow Start");
+			NGUIWindow cache2 = this.m_FadeWindowCalibration.GetCache<NGUIWindow>("FadeWindow Countdown");
+			cache.Open(0.001f, null);
+			cache2.Close(0.001f, null);
+			cache.gameObject.SetActive(true);
+			cache2.gameObject.SetActive(false);
+			this.ChangeLayout();
+		}));
+		EventDelegate.Add(uibutton.onClick, new EventDelegate.Callback(this.OnClickCalibrationStart));
+		EventDelegate.Add(uibutton2.onClick, new EventDelegate.Callback(this.OnClickCalibrationEnd));
+		this.m_FadeWindowCalibration.GetCache<UILabel>("label count desc").text = ControllerShortcutWindow.STR_LABEL_DESC_COUNT_DOWN;
+		this.m_FadeWindowCalibration.GetCache<UILabel>("label start desc").supportEncoding = true;
+	}
+
+	private void OnOpenFadeWindowParent()
+	{
+		this.ChangeLayout();
+	}
+
+	private void ChangeLayout()
+	{
+		UILabel cache = this.m_FadeWindowCalibration.GetCache<UILabel>("label start desc");
+		UIButton cache2 = this.m_FadeWindowCalibration.GetCache<UIButton>("startButton");
+		UIButton cache3 = this.m_FadeWindowCalibration.GetCache<UIButton>("endButton");
+		UIWFTabButton cache4 = this.m_ButtonDic.GetCache<UIWFTabButton>("表情");
+		UIWFTabButton cache5 = this.m_ButtonDic.GetCache<UIWFTabButton>("モーション");
+		UIWFTabButton cache6 = this.m_ButtonDic.GetCache<UIWFTabButton>("ハンドサイン");
+		UIWFTabButton cache7 = this.m_ButtonDic.GetCache<UIWFTabButton>("一般オブジェクト");
+		if (!OvrIK.IsVRIKMode)
+		{
+			Maid maid = GameMain.Instance.CharacterMgr.GetMaid(0);
+			if (maid == null || !maid.Visible || maid.IsBusy || !maid.body0.isLoadedBody)
+			{
+				cache.text = ControllerShortcutWindow.STR_LABEL_DESC_MISSING_MAID;
+				cache2.gameObject.SetActive(false);
+				cache3.gameObject.SetActive(false);
+				Debug.Log("OvrIK\u3000メイドの準備がまだ行われていません。");
+			}
+			else
+			{
+				bool flag = false;
+				try
+				{
+					string nowSceneName = GameMain.Instance.GetNowSceneName();
+					if (!string.IsNullOrEmpty(nowSceneName) && nowSceneName.IndexOf("SceneDance_") == 0)
+					{
+						DanceMain danceMain = UnityEngine.Object.FindObjectOfType<DanceMain>();
+						if (danceMain != null && danceMain.OvrCamTrans != null)
+						{
+							flag = true;
+						}
+					}
+				}
+				catch
+				{
+					Debug.Log("シーン名の取得に失敗しました");
+				}
+				if (!GameMain.Instance.CMSystem.SConfig.OvrIkAllSceneEnable && flag)
+				{
+					cache.text = ControllerShortcutWindow.STR_LABEL_DESC_NOT_SUPPORT_MOVE_CAMERA;
+					cache2.gameObject.SetActive(false);
+					cache3.gameObject.SetActive(false);
+				}
+				else
+				{
+					cache.text = ControllerShortcutWindow.STR_LABEL_DESC_START;
+					cache2.gameObject.SetActive(true);
+					cache3.gameObject.SetActive(false);
+					if (GameMain.Instance.VRDeviceTypeID == GameMain.VRDeviceType.VIVE && ControllerShortcutSettingData.config.use1TrackerForHead)
+					{
+						UILabel uilabel = cache;
+						uilabel.text = uilabel.text + "\n" + ControllerShortcutWindow.STR_LABEL_DESC_START_NOTES_TRACKER;
+					}
+				}
+			}
+			cache4.isEnabled = false;
+			cache5.isEnabled = false;
+			cache6.isEnabled = false;
+			cache7.isEnabled = false;
+		}
+		else
+		{
+			cache.text = ControllerShortcutWindow.STR_LABEL_DESC_END;
+			cache2.gameObject.SetActive(false);
+			cache3.gameObject.SetActive(true);
+			cache4.isEnabled = true;
+			cache5.isEnabled = true;
+			cache6.isEnabled = true;
+			cache7.isEnabled = true;
+		}
+	}
+
+	private void OpenWindowConfig()
+	{
+		this.m_FadeWindowCalibration.Close(this.fadeSpeed, null);
+		this.m_FadeWindowFaceShortcut.Close(this.fadeSpeed, null);
+		this.m_FadeWindowMotionShortcut.Close(this.fadeSpeed, null);
+		this.m_FadeWindowGeneralObject.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			this.m_FadeWindowConfig.Open(this.fadeSpeed, null);
+		});
+	}
+
+	private void OpenWindowCalibration()
+	{
+		this.m_FadeWindowFaceShortcut.Close(this.fadeSpeed, null);
+		this.m_FadeWindowMotionShortcut.Close(this.fadeSpeed, null);
+		this.m_FadeWindowConfig.Close(this.fadeSpeed, null);
+		this.m_FadeWindowGeneralObject.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			this.m_FadeWindowCalibration.Open(this.fadeSpeed, null);
+		});
+	}
+
+	private void OpenWindowFaceShortcut()
+	{
+		this.m_FadeWindowCalibration.Close(this.fadeSpeed, null);
+		this.m_FadeWindowMotionShortcut.Close(this.fadeSpeed, null);
+		this.m_FadeWindowConfig.Close(this.fadeSpeed, null);
+		this.m_FadeWindowGeneralObject.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			this.m_FadeWindowFaceShortcut.Open(this.fadeSpeed, null);
+		});
+	}
+
+	private void OpenWindowHandShortcut()
+	{
+	}
+
+	private void OpenWindowMotionShortcut()
+	{
+		this.m_FadeWindowCalibration.Close(this.fadeSpeed, null);
+		this.m_FadeWindowFaceShortcut.Close(this.fadeSpeed, null);
+		this.m_FadeWindowConfig.Close(this.fadeSpeed, null);
+		this.m_FadeWindowGeneralObject.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			this.m_FadeWindowMotionShortcut.Open(this.fadeSpeed, null);
+		});
+	}
+
+	private void OpenWindowGeneralObject()
+	{
+		this.m_FadeWindowCalibration.Close(this.fadeSpeed, null);
+		this.m_FadeWindowFaceShortcut.Close(this.fadeSpeed, null);
+		this.m_FadeWindowConfig.Close(this.fadeSpeed, null);
+		this.m_FadeWindowMotionShortcut.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			this.m_FadeWindowGeneralObject.Open(this.fadeSpeed, null);
+		});
+	}
+
+	private void OnClickCalibrationStart()
+	{
+		NGUIWindow cache = this.m_FadeWindowCalibration.GetCache<NGUIWindow>("FadeWindow Start");
+		NGUIWindow windowCount = this.m_FadeWindowCalibration.GetCache<NGUIWindow>("FadeWindow Countdown");
+		this.m_FadeWindowCalibration.GetCache<UILabel>("countdown").text = 5.ToString("f2");
+		cache.Close(this.fadeSpeed, null);
+		this.m_FadeWindowMainMenu.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			windowCount.Open(this.fadeSpeed, null);
+		});
+		this.WaitTime(this.fadeSpeed + 1f, delegate
+		{
+			if (!OvrIK.IsVRIKMode)
+			{
+				OvrIK.InitStart();
+			}
+			this.StartCoroutine(this.CoCalibrationCountdown(delegate
+			{
+				this.m_FadeWindowCalibration.GetCache<NGUIWindow>("FadeWindow Countdown").Close(this.fadeSpeed, null);
+				this.WaitTime(this.fadeSpeed, delegate
+				{
+					this.m_FadeWindowCalibration.GetCache<NGUIWindow>("FadeWindow Start").Open(this.fadeSpeed, null);
+					this.m_FadeWindowMainMenu.Open(this.fadeSpeed, null);
+					this.ChangeLayout();
+				});
+			}));
+		});
+	}
+
+	private void OnClickCalibrationEnd()
+	{
+		this.m_FadeWindowParent.Close(this.fadeSpeed, delegate
+		{
+			if (OvrIK.IsVRIKMode)
+			{
+				OvrIK.UninitEnd();
+			}
+		});
+	}
+
+	private IEnumerator CoCalibrationCountdown(Action onEnd)
+	{
+		Debug.Log("キャリブレーション開始");
+		float nowTime = 0f;
+		float maxTime = 5f;
+		UILabel textCountdown = this.m_FadeWindowCalibration.GetCache<UILabel>("countdown");
+		while (nowTime <= maxTime)
+		{
+			textCountdown.text = (maxTime - nowTime).ToString("f2");
+			nowTime += Time.deltaTime;
+			yield return null;
+		}
+		textCountdown.text = 0.ToString("f2");
+		if (onEnd != null)
+		{
+			onEnd();
+		}
+		Debug.Log("キャリブレーション完了");
+		yield break;
+	}
+
+	private void WaitTime(float time, Action onFinish)
+	{
+		base.StartCoroutine(this.CoWaitTime(time, onFinish));
+	}
+
+	private IEnumerator CoWaitTime(float time, Action onFinish)
+	{
+		yield return new WaitForSeconds(time);
+		if (onFinish != null)
+		{
+			onFinish();
+		}
+		yield break;
 	}
 
 	public void Open()
 	{
+		this.m_FadeWindowParent.Open(this.fadeSpeed, null);
 	}
 
 	public void Close()
 	{
+		this.m_FadeWindowParent.Close(this.fadeSpeed, null);
 	}
 
-	public bool isOpen { get; set; }
+	public bool isOpen
+	{
+		get
+		{
+			return this.m_FadeWindowParent.gameObject.activeSelf;
+		}
+	}
+
+	private void OnActiveSceneChanged(Scene beforeScene, Scene activeScene)
+	{
+		if (this.m_IsDestroyed)
+		{
+			return;
+		}
+		UnityEngine.Object.Destroy(base.gameObject);
+		Debug.Log("VRIK用UIを削除しました : シーン切り替え");
+	}
+
+	private void OnDestroy()
+	{
+		this.m_IsDestroyed = true;
+	}
 
 	[SerializeField]
 	[Range(0.001f, 1f)]
@@ -47,4 +384,20 @@ public class ControllerShortcutWindow : MonoBehaviour
 
 	[SerializeField]
 	private UIWFTabPanel m_ParentButtonMainMenu;
+
+	private ObjectCacheDic m_ButtonDic;
+
+	private static readonly string STR_LABEL_DESC_MISSING_MAID = "メイドの準備ができていません。";
+
+	private static readonly string STR_LABEL_DESC_NOT_SUPPORT_MOVE_CAMERA = "移動カメラモードでは実行できません。";
+
+	private static readonly string STR_LABEL_DESC_START = "「スタート」ボタンを押して、キャリブレーションを開始します。\r\n\r\nキャリブレーション中は、\r\nHDMを装着して、正面を向いて足を肩幅に開いて直立し、\r\nコントローラを持った手を肩幅で胸の前に出してお待ち下さい。";
+
+	private static readonly string STR_LABEL_DESC_START_NOTES_TRACKER = "[FF8000]HMDを顔に装着した状態で、\r\n頭のトラッカーを装着予定位置に固定して下さい。[-]";
+
+	private static readonly string STR_LABEL_DESC_COUNT_DOWN = "手を前に出し、\r\n足を肩幅に広げ、\r\n正面を向いて、\r\n背筋を伸ばして下さい。\r\n";
+
+	private static readonly string STR_LABEL_DESC_END = "バーチャルアバタースタジオ機能を終了します。\r\n\r\n(終了後にキャラクターに不具合がある場合は\r\n\u3000シーンに入り直して下さい。)";
+
+	private bool m_IsDestroyed;
 }

+ 26 - 9
Assembly-CSharp/DanceSelect.cs

@@ -2,6 +2,7 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
+using I2.Loc;
 using MaidStatus;
 using UnityEngine;
 using wf;
@@ -168,7 +169,8 @@ public class DanceSelect : WfScreenChildren
 		case RhythmAction_Mgr.DanceType.VrDance:
 		{
 			gameObject2.SetActive(false);
-			this.CancelButton.gameObject.SetActive(false);
+			this.m_DanceModePanel.gameObject.SetActive(true);
+			this.m_MainButtonPanel.alpha = 0f;
 			Transform transform = this.m_DanceModePanel.transform.Find("ButtonGroup");
 			bool flag = GameMain.Instance.VRMode && !GameMain.Instance.OvrMgr.OvrCamera.IsNoHandController;
 			if (flag)
@@ -226,6 +228,13 @@ public class DanceSelect : WfScreenChildren
 		{
 			NDebug.AssertNull(this.select_panelset_array_[i].ContentsPanel != null && this.select_panelset_array_[i].ParentPanel != null);
 		}
+		this.m_CharaSelectLabel = UTY.GetChildObject(this.CharaSelectPanel.ParentPanel.gameObject, "ExplanatoryText/Value", false).GetComponent<UILabel>();
+		Localize component3 = this.m_CharaSelectLabel.GetComponent<Localize>();
+		if (component3 != null)
+		{
+			UnityEngine.Object.DestroyImmediate(component3);
+		}
+		this.m_CharaSelectLabel.text = "ダンスを行うメイドを選択してください。";
 		this.chara_select_mgr_ = this.CharaSelectPanel.ParentPanel.gameObject.GetComponentInChildren<CharacterSelectManager>();
 		NDebug.AssertNull(this.chara_select_mgr_ != null);
 	}
@@ -423,14 +432,18 @@ public class DanceSelect : WfScreenChildren
 		GameMain.Instance.MainCamera.SetAroundAngle(this.m_CamAngle, true);
 		GameMain.Instance.SoundMgr.PlayBGM(this.m_BGM, 0.5f, true);
 		this.Init();
-		DanceData danceData = DanceSelect.dance_data_list_.SingleOrDefault((DanceData e) => e.title == "Night Magic Fire");
-		DanceSelect.m_SelectedDance.Clear();
-		DanceSelect.m_SelectedDance.Add(danceData);
-		DanceMain.SelectDanceData = danceData;
-		this.m_DanceModePanel.alpha = 0f;
-		this.CharaSelectPanel.ParentPanel.alpha = 1f;
-		this.CallCharaSelect();
-		this.m_SettingObj.SetUIMode("鑑賞モード");
+		if (this.IsFreeDance())
+		{
+			this.CallDanceModeSelect();
+		}
+		else if (RhythmAction_Mgr.IsVSDance && DanceSelect.m_SelectedDance.Count > 0)
+		{
+			this.CallCharaSelect();
+		}
+		else
+		{
+			this.CallMusicSelect();
+		}
 		if (RhythmAction_Mgr.IsVSDance && DanceSelect.m_SelectedDance.Count == 0)
 		{
 			UIWFTabPanel componentInChildren = this.MusicSelectPanel.ContentsPanel.GetComponentInChildren<UIWFTabPanel>();
@@ -601,6 +614,10 @@ public class DanceSelect : WfScreenChildren
 			{
 				DanceSelect.m_SelectedDance.Add(this.m_SecondDanceData);
 			}
+			if (RhythmAction_Mgr.NowDance == RhythmAction_Mgr.DanceType.Challenge || RhythmAction_Mgr.IsVSDance)
+			{
+				this.m_CharaSelectLabel.text = "ダンスを行うメイドを" + select_chara_num + "人選択してください。";
+			}
 			if (1 < select_chara_num)
 			{
 				if (RhythmAction_Mgr.IsVSDance)

+ 0 - 1
Assembly-CSharp/DanceSetting.cs

@@ -575,7 +575,6 @@ public class DanceSetting : MonoBehaviour
 		{
 			this.m_ModeLabel.text = "ダンスショー設定";
 		}
-		this.m_ModeLabel.GetComponent<Localize>().SetTerm("SceneDanceSelect/" + this.m_ModeLabel.text);
 		int num = 0;
 		foreach (DanceSetting.UIInspectorSetting uiinspectorSetting in this.m_SettingList)
 		{

+ 1 - 20
Assembly-CSharp/GameMain.cs

@@ -329,7 +329,7 @@ public class GameMain : MonoSingleton<GameMain>
 			}
 		}
 		UnityEngine.Debug.Log("TestSingleton#OnInitialize");
-		LocalizationManager.CurrentLanguage = "English";
+		LocalizationManager.CurrentLanguage = "Japanese";
 		Thread.CurrentThread.CurrentCulture = new CultureInfo("ja-JP");
 		UnityEngine.Debug.Log(SystemInfo.operatingSystem);
 		UnityEngine.Debug.Log(string.Concat(new object[]
@@ -1259,25 +1259,6 @@ public class GameMain : MonoSingleton<GameMain>
 
 	private void Update()
 	{
-		if ((Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) && Input.GetKeyDown(KeyCode.F6))
-		{
-			string[] array = LocalizationManager.GetAllLanguages(true).ToArray();
-			int num = 0;
-			foreach (string a in array)
-			{
-				if (a == LocalizationManager.CurrentLanguage)
-				{
-					num++;
-					if (array.Length <= num)
-					{
-						num = 0;
-					}
-					LocalizationManager.CurrentLanguage = array[num];
-					break;
-				}
-				num++;
-			}
-		}
 		if (GameMain.Instance.VRMode)
 		{
 			NInput.SelfUpdateVR();

+ 257 - 54
Assembly-CSharp/GameUty.cs

@@ -279,37 +279,36 @@ public class GameUty
 			return flag3;
 		};
 		HashSet<string> addedLegacyArchives = new HashSet<string>();
-		int m;
 		Action<string> action = delegate(string name)
 		{
-			foreach (string text7 in GameUty.PathList)
+			foreach (string text26 in GameUty.PathList)
 			{
-				string text8 = name + "_" + text7;
-				bool flag3 = AddFolderOrArchive(text8);
-				if (flag3 && !addedLegacyArchives.Contains(text8))
+				string text27 = name + "_" + text26;
+				bool flag3 = AddFolderOrArchive(text27);
+				if (flag3 && !addedLegacyArchives.Contains(text27))
 				{
-					addedLegacyArchives.Add(text8);
+					addedLegacyArchives.Add(text27);
 				}
 				if (flag3)
 				{
 					if (name == "csv")
 					{
-						GameUty.ExistCsvPathList.Add(text7);
+						GameUty.ExistCsvPathList.Add(text26);
 					}
-					for (int m = 2; m <= check_ver_no; m++)
+					for (int num12 = 2; num12 <= check_ver_no; num12++)
 					{
-						AddFolderOrArchive(text8 + "_" + m);
+						AddFolderOrArchive(text27 + "_" + num12);
 					}
 				}
 			}
 		};
 		Action<string> action2 = delegate(string name)
 		{
-			foreach (string text7 in GameUty.PathList)
+			foreach (string text26 in GameUty.PathList)
 			{
-				string text8 = name + "_" + text7;
-				bool flag3 = AddFolderOrArchive(text8);
-				if (!flag3 && addedLegacyArchives.Contains(text8))
+				string text27 = name + "_" + text26;
+				bool flag3 = AddFolderOrArchive(text27);
+				if (!flag3 && addedLegacyArchives.Contains(text27))
 				{
 					flag3 = true;
 				}
@@ -317,17 +316,17 @@ public class GameUty
 				{
 					if (name == "csv")
 					{
-						GameUty.ExistCsvPathList.Add(text7);
+						GameUty.ExistCsvPathList.Add(text26);
 					}
-					for (int m = 2; m <= check_ver_no; m++)
+					for (int num12 = 2; num12 <= check_ver_no; num12++)
 					{
 						AddFolderOrArchive(string.Concat(new object[]
 						{
 							name,
 							"_",
-							text7,
+							text26,
 							"_",
-							m
+							num12
 						}));
 					}
 				}
@@ -335,35 +334,34 @@ public class GameUty
 		};
 		Action<string> action3 = delegate(string name)
 		{
-			foreach (string text7 in GameUty.PathList)
+			foreach (string text26 in GameUty.PathList)
 			{
-				if (AddFolderOrArchive(name + "_" + text7))
+				if (AddFolderOrArchive(name + "_" + text26))
 				{
 					if (name == "csv")
 					{
-						GameUty.ExistCsvPathList.Add(text7);
+						GameUty.ExistCsvPathList.Add(text26);
 					}
-					for (int m = 2; m <= check_ver_no; m++)
+					for (int num12 = 2; num12 <= check_ver_no; num12++)
 					{
 						AddFolderOrArchive(string.Concat(new object[]
 						{
 							name,
 							"_",
-							text7,
+							text26,
 							"_",
-							m
+							num12
 						}));
 					}
 				}
 			}
 		};
-		string common_error_text = string.Empty;
-		common_error_text = "必用アーカイブがありません。GameData\\";
+		string str = string.Empty;
+		str = "必用アーカイブがありません。GameData\\";
 		StopWatch stopWatch = new StopWatch();
 		Debug.Log("IsEnabledCompatibilityMode:" + GameUty.IsEnabledCompatibilityMode.ToString());
 		string text = "カスタムオーダーメイド3D 2";
-		string str = "カスタムメイド3D 2";
-		text += " 翻訳評価版";
+		string str2 = "カスタムメイド3D 2";
 		Debug.Log(string.Concat(new string[]
 		{
 			text,
@@ -375,7 +373,7 @@ public class GameUty
 		}));
 		if (!string.IsNullOrEmpty(GameMain.Instance.CMSystem.CM3D2Path))
 		{
-			Debug.Log(str + " GameVersion " + GameUty.GetLegacyGameVersionText());
+			Debug.Log(str2 + " GameVersion " + GameUty.GetLegacyGameVersionText());
 		}
 		if (GameUty.IsEnabledCompatibilityMode)
 		{
@@ -385,12 +383,12 @@ public class GameUty
 			AddFolderOrArchive("material");
 			foreach (string text2 in GameUty.PathListOld)
 			{
-				string str2 = "material";
+				string str3 = "material";
 				if (text2 == "denkigai2015wTowelR")
 				{
-					AddFolderOrArchive(str2 + "_denkigai2015wTowel");
+					AddFolderOrArchive(str3 + "_denkigai2015wTowel");
 				}
-				string text3 = str2 + "_" + text2;
+				string text3 = str3 + "_" + text2;
 				bool flag = AddFolderOrArchive(text3);
 				if (flag && !addedLegacyArchives.Contains(text3))
 				{
@@ -398,9 +396,9 @@ public class GameUty
 				}
 				if (flag)
 				{
-					for (m = 2; m <= check_ver_no; m++)
+					for (int i2 = 2; i2 <= check_ver_no; i2++)
 					{
-						AddFolderOrArchive(text3 + "_" + m);
+						AddFolderOrArchive(text3 + "_" + i2);
 					}
 				}
 			}
@@ -471,28 +469,233 @@ public class GameUty
 			GameUty.PathList = new List<string>();
 			NDebug.Assert("paths.datを読み込めませんでした", false);
 		}
-		NDebug.Assert(AddFolderOrArchive("prioritymaterial"), () => common_error_text + "prioritymaterial");
-		NDebug.Assert(AddFolderOrArchive("script_en_try"), () => common_error_text + "script_en_try");
-		NDebug.Assert(AddFolderOrArchive("csv_en_try"), () => common_error_text + "csv_en_try");
-		NDebug.Assert(AddFolderOrArchive("motion_try"), () => common_error_text + "motion_try");
-		NDebug.Assert(AddFolderOrArchive("sound_try"), () => common_error_text + "sound_try");
-		NDebug.Assert(AddFolderOrArchive("system"), () => common_error_text + "system");
-		NDebug.Assert(AddFolderOrArchive("system2"), () => common_error_text + "system2");
-		NDebug.Assert(AddFolderOrArchive("voice_try"), () => common_error_text + "voice_try");
-		NDebug.Assert(AddFolderOrArchive("parts_try"), () => common_error_text + "parts_try");
+		AddFolderOrArchive("csv");
+		foreach (string text7 in GameUty.PathList)
+		{
+			string text8 = "csv";
+			if (AddFolderOrArchive(text8 + "_" + text7))
+			{
+				for (int k = 2; k <= check_ver_no; k++)
+				{
+					AddFolderOrArchive(string.Concat(new object[]
+					{
+						text8,
+						"_",
+						text7,
+						"_",
+						k
+					}));
+				}
+			}
+		}
+		AddFolderOrArchive("prioritymaterial");
+		NDebug.Assert(AddFolderOrArchive("motion"), str + "motion");
+		foreach (string text9 in GameUty.PathList)
+		{
+			string text10 = "motion";
+			if (AddFolderOrArchive(text10 + "_" + text9))
+			{
+				for (int l = 2; l <= check_ver_no; l++)
+				{
+					AddFolderOrArchive(string.Concat(new object[]
+					{
+						text10,
+						"_",
+						text9,
+						"_",
+						l
+					}));
+				}
+			}
+		}
+		AddFolderOrArchive("motion2");
+		NDebug.Assert(AddFolderOrArchive("script"), str + "script");
+		foreach (string text11 in GameUty.PathList)
+		{
+			string text12 = "script";
+			if (AddFolderOrArchive(text12 + "_" + text11))
+			{
+				for (int m = 2; m <= check_ver_no; m++)
+				{
+					AddFolderOrArchive(string.Concat(new object[]
+					{
+						text12,
+						"_",
+						text11,
+						"_",
+						m
+					}));
+				}
+			}
+		}
+		AddFolderOrArchive("script_share");
+		foreach (string text13 in GameUty.PathList)
+		{
+			string text14 = "script_share";
+			if (AddFolderOrArchive(text14 + "_" + text13))
+			{
+				for (int n = 2; n <= check_ver_no; n++)
+				{
+					AddFolderOrArchive(string.Concat(new object[]
+					{
+						text14,
+						"_",
+						text13,
+						"_",
+						n
+					}));
+				}
+			}
+		}
+		AddFolderOrArchive("script_share2");
+		NDebug.Assert(AddFolderOrArchive("sound"), str + "sound");
+		foreach (string text15 in GameUty.PathList)
+		{
+			string text16 = "sound";
+			if (AddFolderOrArchive(text16 + "_" + text15))
+			{
+				for (int num = 2; num <= check_ver_no; num++)
+				{
+					AddFolderOrArchive(string.Concat(new object[]
+					{
+						text16,
+						"_",
+						text15,
+						"_",
+						num
+					}));
+				}
+			}
+		}
+		AddFolderOrArchive("sound2");
+		NDebug.Assert(AddFolderOrArchive("system"), str + "system");
+		foreach (string text17 in GameUty.PathList)
+		{
+			string text18 = "system";
+			if (AddFolderOrArchive(text18 + "_" + text17))
+			{
+				for (int num2 = 2; num2 <= check_ver_no; num2++)
+				{
+					AddFolderOrArchive(string.Concat(new object[]
+					{
+						text18,
+						"_",
+						text17,
+						"_",
+						num2
+					}));
+				}
+			}
+		}
+		AddFolderOrArchive("system2");
+		foreach (string text19 in GameUty.PathList)
+		{
+			string text20 = "bg";
+			if (AddFolderOrArchive(text20 + "_" + text19))
+			{
+				for (int num3 = 2; num3 <= check_ver_no; num3++)
+				{
+					AddFolderOrArchive(string.Concat(new object[]
+					{
+						text20,
+						"_",
+						text19,
+						"_",
+						num3
+					}));
+				}
+			}
+		}
+		AddFolderOrArchive("voice");
+		for (int num4 = 0; num4 < 25; num4++)
+		{
+			string arg = "voice";
+			string arg2 = arg + "_" + (char)(97 + num4);
+			AddFolderOrArchive(arg2);
+		}
+		foreach (string text21 in GameUty.PathList)
+		{
+			string text22 = "voice";
+			if (AddFolderOrArchive(text22 + "_" + text21))
+			{
+				for (int num5 = 2; num5 <= check_ver_no; num5++)
+				{
+					AddFolderOrArchive(string.Concat(new object[]
+					{
+						text22,
+						"_",
+						text21,
+						"_",
+						num5
+					}));
+				}
+			}
+		}
+		for (int num6 = 2; num6 <= check_ver_no; num6++)
+		{
+			string arg3 = "voice";
+			AddFolderOrArchive(arg3 + num6);
+		}
+		string text23 = "parts";
+		NDebug.Assert(AddFolderOrArchive(text23), str + text23);
+		foreach (string text24 in GameUty.PathList)
+		{
+			if (AddFolderOrArchive(text23 + "_" + text24))
+			{
+				for (int num7 = 2; num7 <= check_ver_no; num7++)
+				{
+					AddFolderOrArchive(string.Concat(new object[]
+					{
+						text23,
+						"_",
+						text24,
+						"_",
+						num7
+					}));
+				}
+			}
+		}
+		AddFolderOrArchive("parts2");
+		Debug.Log("■■■■■■■■■■■■■■■■■■■■" + stopWatch.Stop().ToString() + " ms");
 		GameUty.m_FileSystem.AddAutoPathForAllFolder();
 		GameUty.BgFiles = new Dictionary<string, AFileSystemBase>();
+		string[] list = GameUty.m_FileSystem.GetList("bg", AFileSystemBase.ListType.AllFile);
+		if (list != null && 0 < list.Length)
+		{
+			foreach (string path in list)
+			{
+				string fileName = Path.GetFileName(path);
+				if (!(Path.GetExtension(fileName) != ".asset_bg") && !GameUty.BgFiles.ContainsKey(fileName))
+				{
+					GameUty.BgFiles.Add(fileName, GameUty.m_FileSystem);
+				}
+			}
+		}
+		if (Directory.Exists(fullPath + "Mod"))
+		{
+			GameUty.m_ModFileSystem = new FileSystemWindows();
+			GameUty.m_ModFileSystem.SetBaseDirectory(fullPath);
+			GameUty.m_ModFileSystem.AddFolder("Mod");
+			string[] list2 = GameUty.m_ModFileSystem.GetList(string.Empty, AFileSystemBase.ListType.AllFolder);
+			foreach (string text25 in list2)
+			{
+				if (!GameUty.m_ModFileSystem.AddAutoPath(text25))
+				{
+					Debug.Log("m_ModFileSystemのAddAutoPathには既に " + text25 + " がありました。");
+				}
+			}
+		}
 		string[] fileListAtExtension = GameUty.m_FileSystem.GetFileListAtExtension(".menu");
-		List<string> list = new List<string>();
-		foreach (string path in fileListAtExtension)
+		List<string> list3 = new List<string>();
+		foreach (string path2 in fileListAtExtension)
 		{
-			list.Add(Path.GetFileName(path));
+			list3.Add(Path.GetFileName(path2));
 		}
-		GameUty.m_aryMenuFiles = list.ToArray();
+		GameUty.m_aryMenuFiles = list3.ToArray();
 		if (GameUty.m_ModFileSystem != null)
 		{
-			string[] list2 = GameUty.m_ModFileSystem.GetList(string.Empty, AFileSystemBase.ListType.AllFile);
-			GameUty.m_aryModOnlysMenuFiles = Array.FindAll<string>(list2, (string i) => new Regex(".*\\.menu$").IsMatch(i));
+			string[] list4 = GameUty.m_ModFileSystem.GetList(string.Empty, AFileSystemBase.ListType.AllFile);
+			GameUty.m_aryModOnlysMenuFiles = Array.FindAll<string>(list4, (string i) => new Regex(".*\\.menu$").IsMatch(i));
 			GameUty.m_aryMenuFiles = GameUty.m_aryMenuFiles.Concat(GameUty.m_aryModOnlysMenuFiles).ToArray<string>();
 		}
 		if (GameUty.m_aryModOnlysMenuFiles != null && GameUty.m_aryModOnlysMenuFiles.Length != 0)
@@ -504,20 +707,20 @@ public class GameUty
 		{
 			string[] menuFiles = GameUty.MenuFiles;
 			GameUty.rid_menu_dic_ = new Dictionary<int, string>();
-			for (int l = 0; l < menuFiles.Length; l++)
+			for (int num11 = 0; num11 < menuFiles.Length; num11++)
 			{
-				string fileName = Path.GetFileName(menuFiles[l]);
-				int hashCode = fileName.ToLower().GetHashCode();
+				string fileName2 = Path.GetFileName(menuFiles[num11]);
+				int hashCode = fileName2.ToLower().GetHashCode();
 				if (!GameUty.rid_menu_dic_.ContainsKey(hashCode))
 				{
-					GameUty.rid_menu_dic_.Add(hashCode, fileName);
+					GameUty.rid_menu_dic_.Add(hashCode, fileName2);
 				}
 				else
 				{
-					NDebug.Assert(fileName == GameUty.rid_menu_dic_[hashCode], string.Concat(new string[]
+					NDebug.Assert(fileName2 == GameUty.rid_menu_dic_[hashCode], string.Concat(new string[]
 					{
 						"[",
-						fileName,
+						fileName2,
 						"]と[",
 						GameUty.rid_menu_dic_[hashCode],
 						"]は同じハッシュキーです"

File diff suppressed because it is too large
+ 991 - 2
Assembly-CSharp/HandSignShortcut.cs


+ 111 - 0
Assembly-CSharp/KeyboardShortcutManager.cs

@@ -1,6 +1,117 @@
 using System;
+using System.Collections;
+using System.Collections.Generic;
 using UnityEngine;
 
 public class KeyboardShortcutManager : MonoBehaviour
 {
+	public void AddKeyData(GameObject target, KeyCode keyCode, Action onKeyDown, Action onKeyStay, Action onKeyUp)
+	{
+		this.m_CommandDataList.Add(new KeyboardShortcutManager.CommandData(target, keyCode, onKeyDown, onKeyStay, onKeyUp));
+	}
+
+	private void Update()
+	{
+		this.m_NowInputKey = KeyCode.None;
+		if (Input.anyKey)
+		{
+			IEnumerator enumerator = Enum.GetValues(typeof(KeyCode)).GetEnumerator();
+			try
+			{
+				while (enumerator.MoveNext())
+				{
+					object obj = enumerator.Current;
+					KeyCode keyCode = (KeyCode)obj;
+					if (Input.GetKey(keyCode))
+					{
+						this.m_NowInputKey = keyCode;
+						break;
+					}
+				}
+			}
+			finally
+			{
+				IDisposable disposable;
+				if ((disposable = (enumerator as IDisposable)) != null)
+				{
+					disposable.Dispose();
+				}
+			}
+		}
+		this.UpdateKey();
+	}
+
+	private void UpdateKey()
+	{
+		if (this.m_CommandDataList == null)
+		{
+			return;
+		}
+		foreach (KeyboardShortcutManager.CommandData commandData in this.m_CommandDataList)
+		{
+			if (!(commandData.targetObject == null))
+			{
+				bool flag = this.m_BeforeInputKey == commandData.keyCode;
+				bool flag2 = this.m_NowInputKey == commandData.keyCode;
+				if (!flag && flag2)
+				{
+					commandData.onKeyDown();
+				}
+				else if (flag && flag2)
+				{
+					commandData.onKeyStay();
+				}
+				else if (flag && !flag2)
+				{
+					commandData.onKeyUp();
+				}
+			}
+		}
+		this.m_BeforeInputKey = this.m_NowInputKey;
+	}
+
+	private void OnApplicationQuit()
+	{
+		this.m_IsApplicationQuit = true;
+	}
+
+	private void OnDestroy()
+	{
+		if (this.m_IsApplicationQuit)
+		{
+			return;
+		}
+		this.m_CommandDataList.Clear();
+		this.m_CommandDataList = null;
+	}
+
+	private HashSet<KeyboardShortcutManager.CommandData> m_CommandDataList = new HashSet<KeyboardShortcutManager.CommandData>();
+
+	private KeyCode m_BeforeInputKey;
+
+	private KeyCode m_NowInputKey;
+
+	private bool m_IsApplicationQuit;
+
+	public class CommandData
+	{
+		public CommandData(GameObject targetObject, KeyCode keyCode, Action onKeyDown, Action onKeyStay, Action onKeyUp)
+		{
+			this.targetObject = targetObject;
+			this.keyCode = keyCode;
+			this.onKeyDown = onKeyDown;
+			this.onKeyStay = onKeyStay;
+			this.onKeyUp = onKeyUp;
+		}
+
+		public GameObject targetObject { get; private set; }
+
+		public KeyCode keyCode { get; set; }
+
+		public Action onKeyDown { get; set; }
+
+		public Action onKeyStay { get; set; }
+
+		public Action onKeyUp { get; set; }
+	}
 }

+ 5 - 14
Assembly-CSharp/MessageClass.cs

@@ -18,11 +18,8 @@ public class MessageClass
 		this.hitret_sprite_.alpha = 0f;
 		this.mainTextAnimation = new MessageClass.TextAnimation();
 		this.subTextAnimation = new MessageClass.TextAnimation();
-		this.subtitles_manager_.visible = true;
-		this.message_label_.gameObject.SetActive(false);
-		this.name_label_.gameObject.SetActive(false);
-		UTY.GetChildObject(this.message_window_panel_, "MessageViewer/MsgParent/MessageBox", false).SetActive(false);
-		this.message_label_ = (this.name_label_ = null);
+		this.subtitles_manager_.visible = false;
+		this.subtitles_manager_ = null;
 	}
 
 	public static KeyValuePair<string, string> GetTranslationText(string baseText)
@@ -119,10 +116,8 @@ public class MessageClass
 		this.exit_wait_count_ = -1;
 		this.hitret_sprite_.alpha = 0f;
 		this.charaNameText = name;
-		KeyValuePair<string, string> translationText = MessageClass.GetTranslationText(text);
-		this.mainTextAnimation.StartAnimation(translationText.Key);
-		this.subTextAnimation.StartAnimation(translationText.Value);
-		this.message_mgr_.AddBackLog(name, this.mainTextAnimation.text, this.subTextAnimation.text, voice_file, voice_pitch);
+		this.mainTextAnimation.StartAnimation(MessageClass.GetWrapString(this.message_label_, text));
+		this.message_mgr_.AddBackLog(name, this.mainTextAnimation.text, voice_file, voice_pitch);
 		this.Update();
 	}
 
@@ -262,11 +257,7 @@ public class MessageClass
 		{
 			get
 			{
-				if (this.text_info == null || this.text_info.LengthInTextElements == 0)
-				{
-					return 0;
-				}
-				return (100 - GameMain.Instance.CMSystem.MsgTextSpeed) * 20 / this.text_info.LengthInTextElements;
+				return (int)((100f - (float)GameMain.Instance.CMSystem.MsgTextSpeed) * 1.5f);
 			}
 		}
 

+ 4 - 4
Assembly-CSharp/MessageWindowCtrl.cs

@@ -33,10 +33,10 @@ public class MessageWindowCtrl : MonoBehaviour
 	{
 		UTY.GetChildObject(this.m_goSelectorViewer, "Scroll Bar/Down", false).GetComponent<UISprite>().enabled = true;
 		UTY.GetChildObject(this.m_goSelectorViewer, "Scroll Bar/Up", false).GetComponent<UISprite>().enabled = true;
-		UnityEngine.Object @object = Resources.Load("SystemUI/MessageWindow/Main/Prefabs/SelectButtonDouble");
+		UnityEngine.Object @object = Resources.Load("SystemUI/MessageWindow/Main/Prefabs/SelectButton");
 		if (@object == null)
 		{
-			Debug.LogError(string.Format("ロードされるプレハブが見つかりませんでした。パス={0}", "SystemUI/MessageWindow/Main/Prefabs/SelectButtonDouble"));
+			Debug.LogError(string.Format("ロードされるプレハブが見つかりませんでした。パス={0}", "SystemUI/MessageWindow/Main/Prefabs/SelectButton"));
 			return;
 		}
 		this.m_selectButtonCtrl.CreateSelectButtons(listSelectBtn, onClickCallBack, @object);
@@ -51,7 +51,7 @@ public class MessageWindowCtrl : MonoBehaviour
 
 	public void CreateBacklog(List<BacklogCtrl.BacklogUnit> dicBacklog)
 	{
-		UnityEngine.Object @object = Resources.Load("SystemUI/MessageWindow/Backlog/Prefabs/BacklogSubtitleUnit");
+		UnityEngine.Object @object = Resources.Load("SystemUI/MessageWindow/Backlog/Prefabs/BacklogUnit");
 		if (@object == null)
 		{
 			Debug.LogError(string.Format("ロードされるプレハブが見つかりませんでした。パス={0}", "SystemUI/MessageWindow/Backlog/Prefabs/BacklogUnit"));
@@ -165,7 +165,7 @@ public class MessageWindowCtrl : MonoBehaviour
 
 	private const string SELECT_BTN_PARENT_PATH = "SelectorViewer/Contents/SelectButtonParent";
 
-	private const string SELECT_BUTTON_PREFAB_PATH = "SystemUI/MessageWindow/Main/Prefabs/SelectButtonDouble";
+	private const string SELECT_BUTTON_PREFAB_PATH = "SystemUI/MessageWindow/Main/Prefabs/SelectButton";
 
 	private const string BACKLOG_UNIT_PARENT_PATH = "BacklogViewer/Contents/BacklogUnitParent";
 

+ 207 - 2
Assembly-CSharp/OtherCommandShortcut.cs

@@ -1,14 +1,219 @@
 using System;
+using System.Collections.Generic;
 using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.UI;
 
 public class OtherCommandShortcut : MonoBehaviour
 {
-	public bool isEnableHandUI { get; set; }
+	public bool IsLeftHand
+	{
+		get
+		{
+			return this.m_IsLeftHand;
+		}
+		set
+		{
+			this.m_IsLeftHand = value;
+		}
+	}
+
+	public AVRController controller
+	{
+		get
+		{
+			return this.m_Controller;
+		}
+		private set
+		{
+			this.m_Controller = value;
+		}
+	}
+
+	private CircleListSelectUI circleList
+	{
+		get
+		{
+			return this.m_CircleList;
+		}
+		set
+		{
+			this.m_CircleList = value;
+		}
+	}
+
+	public bool isEnableHandUI
+	{
+		get
+		{
+			return this.circleList != null && this.circleList.gameObject.activeSelf;
+		}
+		set
+		{
+			if (this.circleList != null && this.circleList.gameObject.activeSelf != value)
+			{
+				this.circleList.gameObject.SetActive(value);
+			}
+		}
+	}
+
+	public void Init(bool isLeftHand)
+	{
+		this.IsLeftHand = isLeftHand;
+		Debug.Log("初期化:様々なショートカットを行う手元UI");
+		this.controller = ((!isLeftHand) ? GameMain.Instance.OvrMgr.ovr_obj.right_controller.controller : GameMain.Instance.OvrMgr.ovr_obj.left_controller.controller);
+		this.InitCircleUI();
+	}
+
+	private void InitCircleUI()
+	{
+		string text = "OVR/CircleCommandUI/HandSignDataShortcut(Cotroller)";
+		GameObject gameObject = Resources.Load<GameObject>(text);
+		if (gameObject == null)
+		{
+			NDebug.Assert("[HandSignShortcut] " + text + "\nプレハブが見つかりません", false);
+		}
+		GameObject gameObject2 = UnityEngine.Object.Instantiate<GameObject>(gameObject);
+		this.circleList = gameObject2.GetComponent<CircleListSelectUI>();
+		this.m_ItemList = new List<KeyValuePair<string, Action<OtherCommandShortcut.ItemData>>>();
+		this.m_ItemList.Add(new KeyValuePair<string, Action<OtherCommandShortcut.ItemData>>("撮影", delegate(OtherCommandShortcut.ItemData itemData)
+		{
+			GameMain.Instance.OvrIK.SelfShotCam();
+		}));
+		this.m_ItemList.Add(new KeyValuePair<string, Action<OtherCommandShortcut.ItemData>>((!GameMain.Instance.OvrIK.EyeToCam) ? "カメラ視線OFF" : "カメラ視線ON", delegate(OtherCommandShortcut.ItemData itemData)
+		{
+			GameMain.Instance.OvrIK.EyeToCam = !GameMain.Instance.OvrIK.EyeToCam;
+			if (GameMain.Instance.OvrIK.EyeToCam)
+			{
+				itemData.text.text = "カメラ視線ON";
+			}
+			else
+			{
+				itemData.text.text = "カメラ視線OFF";
+			}
+		}));
+		this.CreateItemList();
+		CircleCommandUI circleCommandUI = this.circleList.circleCommandUI;
+		circleCommandUI.onSelect.AddListener(new UnityAction<GameObject>(this.OnSelectItem));
+		circleCommandUI.onDeselect.AddListener(new UnityAction<GameObject>(this.OnDeselectItem));
+		circleCommandUI.onDecide.AddListener(new UnityAction<GameObject>(this.OnDecide));
+		this.circleList.controller = this.controller;
+		Transform transform = gameObject2.transform;
+		transform.SetParent(base.transform);
+		transform.localPosition = Vector3.zero;
+		transform.localRotation = Quaternion.identity;
+		transform.localScale = Vector3.one;
+		Vector3 b = new Vector3(0.03f, 0.15f, -0.05f);
+		Vector3 localEulerAngles = new Vector3(35f, 15f, 0f);
+		if (this.IsLeftHand)
+		{
+			b.Scale(new Vector3(-1f, 1f, 1f));
+			localEulerAngles.Scale(new Vector3(1f, -1f, -1f));
+		}
+		transform.localPosition += b;
+		transform.localEulerAngles = localEulerAngles;
+		GameObject childObject = UTY.GetChildObject(this.circleList.gameObject, "CircleCommandUI/text right hand", false);
+		childObject.GetComponent<Text>().text = ((!this.IsLeftHand) ? "右" : "左");
+	}
+
+	private void CreateItemList()
+	{
+		CircleCommandUI circleCommandUI = this.circleList.circleCommandUI;
+		circleCommandUI.Show<Transform>(this.m_ItemList.Count, delegate(int index, Transform trans)
+		{
+			Text componentInChildren = trans.GetComponentInChildren<Text>();
+			trans.localScale = Vector3.one * 0.5f;
+			OtherCommandShortcut.ItemData itemData = trans.gameObject.AddComponent<OtherCommandShortcut.ItemData>();
+			itemData.text = componentInChildren;
+			KeyValuePair<string, Action<OtherCommandShortcut.ItemData>> keyValuePair = this.m_ItemList[index];
+			itemData.text.text = keyValuePair.Key;
+			itemData.onDecide = keyValuePair.Value;
+		});
+	}
 
-	public void Init(bool b)
+	private void OnSelectItem(GameObject item)
 	{
+		if (item == null)
+		{
+			return;
+		}
+		Graphic component = item.GetComponent<Graphic>();
+		if (component != null)
+		{
+			component.color = Color.red;
+		}
+		item.transform.localScale = Vector3.one;
+		item.transform.SetAsLastSibling();
+	}
+
+	private void OnDeselectItem(GameObject item)
+	{
+		if (item == null)
+		{
+			return;
+		}
+		Graphic component = item.GetComponent<Graphic>();
+		if (component != null)
+		{
+			Color white = Color.white;
+			white.a = 0.5f;
+			component.color = white;
+		}
+		item.transform.localScale = Vector3.one * 0.5f;
+	}
+
+	private void OnDecide(GameObject selectItem)
+	{
+		if (selectItem == null)
+		{
+			Debug.LogWarning("選択項目にnullが入った");
+			return;
+		}
+		this.OnDeselectItem(selectItem);
+		if (!ControllerShortcutSettingData.config.isEveryShowMode)
+		{
+			this.m_CircleList.SetActiveUI(false);
+		}
+		OtherCommandShortcut.ItemData component = selectItem.GetComponent<OtherCommandShortcut.ItemData>();
+		if (component != null && component.onDecide != null)
+		{
+			component.onDecide(component);
+		}
+	}
+
+	private void OnApplicationQuit()
+	{
+		this.m_IsQuitting = true;
+	}
+
+	private void OnDestroy()
+	{
+		if (this.m_IsQuitting)
+		{
+			return;
+		}
+		if (this.circleList != null && this.circleList.gameObject != null)
+		{
+			UnityEngine.Object.Destroy(this.circleList.gameObject);
+			Debug.Log("[OtherCommandShortcut] コントローラについているUIを破棄しました");
+		}
 	}
 
 	[SerializeField]
 	private CircleListSelectUI m_CircleList;
+
+	private bool m_IsLeftHand;
+
+	private AVRController m_Controller;
+
+	private List<KeyValuePair<string, Action<OtherCommandShortcut.ItemData>>> m_ItemList;
+
+	private bool m_IsQuitting;
+
+	private class ItemData : MonoBehaviour
+	{
+		public Action<OtherCommandShortcut.ItemData> onDecide { get; set; }
+
+		public Text text { get; set; }
+	}
 }

+ 456 - 0
Assembly-CSharp/PhotoFaceDataShortcut.cs

@@ -1,8 +1,464 @@
 using System;
+using System.Collections.Generic;
+using I2.Loc;
 using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.UI;
 
 public class PhotoFaceDataShortcut : MonoBehaviour
 {
+	public List<PhotoFaceDataShortcut.ItemData> itemDataList
+	{
+		get
+		{
+			return this.m_ItemDataList;
+		}
+	}
+
+	public bool IsLeftHand
+	{
+		get
+		{
+			return this.m_IsLeftHand;
+		}
+		set
+		{
+			this.m_IsLeftHand = value;
+		}
+	}
+
+	public void Init(bool isLeftHand)
+	{
+		this.m_IsLeftHand = isLeftHand;
+		CircleCommandUI circleCommandUI = this.m_CircleList.circleCommandUI;
+		circleCommandUI.onSelect.AddListener(new UnityAction<GameObject>(this.OnSelectItem));
+		circleCommandUI.onDeselect.AddListener(new UnityAction<GameObject>(this.OnDeselectItem));
+		circleCommandUI.onDecide.AddListener(new UnityAction<GameObject>(this.OnDecide));
+		this.m_CircleList.controller = ((!isLeftHand) ? GameMain.Instance.OvrMgr.ovr_obj.right_controller.controller : GameMain.Instance.OvrMgr.ovr_obj.left_controller.controller);
+		this.m_CircleList.SetActiveUI(true);
+		GameObject childObject = UTY.GetChildObject(base.gameObject, "CircleCommandUI/text right hand", false);
+		childObject.GetComponent<Text>().text = ((!isLeftHand) ? "右" : "左");
+		childObject.GetComponent<Localize>().SetTerm("System/" + ((!isLeftHand) ? "右" : "左"));
+	}
+
+	public void CreateItemList(int count)
+	{
+		CircleCommandUI circleCommandUI = this.m_CircleList.circleCommandUI;
+		GameObject tempItem = circleCommandUI.listViewer.tempItem;
+		Transform transform = tempItem.transform;
+		transform.localScale = Vector3.one * 0.5f;
+		this.itemDataList.Clear();
+		PhotoFaceData.Create();
+		circleCommandUI.Show<Transform>(count, delegate(int index, Transform trans)
+		{
+			Text componentInChildren = trans.GetComponentInChildren<Text>();
+			Localize componentInChildren2 = trans.GetComponentInChildren<Localize>();
+			PhotoFaceDataShortcut.ItemData itemData = trans.gameObject.AddComponent<PhotoFaceDataShortcut.ItemData>();
+			itemData.handController = this;
+			itemData.index = index;
+			itemData.text = componentInChildren;
+			itemData.localize = componentInChildren2;
+			this.itemDataList.Add(itemData);
+		});
+		ControllerShortcutSettingData.LoadDefault();
+		if (this.m_IsLeftHand)
+		{
+			List<PhotoFaceDataShortcut.FaceData> faceListLeft = ControllerShortcutSettingData.config.faceListLeft;
+			for (int i = 0; i < faceListLeft.Count; i++)
+			{
+				if (i < this.itemDataList.Count)
+				{
+					this.itemDataList[i].faceData = faceListLeft[i];
+				}
+			}
+		}
+		else
+		{
+			List<PhotoFaceDataShortcut.FaceData> faceListRight = ControllerShortcutSettingData.config.faceListRight;
+			for (int j = 0; j < faceListRight.Count; j++)
+			{
+				if (j < this.itemDataList.Count)
+				{
+					this.itemDataList[j].faceData = faceListRight[j];
+				}
+			}
+		}
+	}
+
+	private void OnSelectItem(GameObject item)
+	{
+		if (item == null)
+		{
+			return;
+		}
+		Graphic component = item.GetComponent<Graphic>();
+		if (component != null)
+		{
+			component.color = Color.red;
+		}
+		item.transform.localScale = Vector3.one;
+		item.transform.SetAsLastSibling();
+		if (ControllerShortcutSettingData.config.isDirectMode)
+		{
+			PhotoFaceDataShortcut.ItemData component2 = item.GetComponent<PhotoFaceDataShortcut.ItemData>();
+			if (component2 != null)
+			{
+				this.ApplyMaidFace(this.GetMaid(), component2);
+			}
+		}
+	}
+
+	private void OnDeselectItem(GameObject item)
+	{
+		if (item == null)
+		{
+			return;
+		}
+		Graphic component = item.GetComponent<Graphic>();
+		if (component != null)
+		{
+			Color white = Color.white;
+			white.a = 0.5f;
+			component.color = white;
+		}
+		item.transform.localScale = Vector3.one * 0.5f;
+	}
+
+	private void OnDecide(GameObject selectItem)
+	{
+		if (selectItem == null)
+		{
+			Debug.LogWarning("選択項目にnullが入った");
+			return;
+		}
+		this.OnDeselectItem(selectItem);
+		if (!ControllerShortcutSettingData.config.isEveryShowMode)
+		{
+			this.m_CircleList.SetActiveUI(false);
+		}
+		if (ControllerShortcutSettingData.config.isDirectMode)
+		{
+			return;
+		}
+		PhotoFaceDataShortcut.ItemData component = selectItem.GetComponent<PhotoFaceDataShortcut.ItemData>();
+		if (component != null)
+		{
+			this.ApplyMaidFace(this.GetMaid(), component);
+		}
+	}
+
+	private void ApplyMaidFace(Maid maid, PhotoFaceDataShortcut.ItemData itemData)
+	{
+		if (itemData == null || itemData.data == null)
+		{
+			Debug.Log("表情データにnullが指定されました。");
+			return;
+		}
+		if (maid == null)
+		{
+			Debug.Log("メイドにnullが指定されました。");
+			return;
+		}
+		maid.FaceAnime(itemData.data.setting_name, 0.5f, 0);
+		maid.body0.Face.morph.SetValueOriginalBlendSet(itemData.blendType);
+		maid.FaceBlend("オリジナル");
+		maid.OpenMouth(itemData.isOpenMouth);
+		Debug.Log(string.Concat(new object[]
+		{
+			"基本表情:",
+			itemData.data.name,
+			"\n追加表情:",
+			itemData.blendType
+		}));
+	}
+
+	public void Emulate(PhotoFaceDataShortcut.ItemData itemData)
+	{
+		if (!this.itemDataList.Contains(itemData))
+		{
+			Debug.Log("コントローラ上に存在しないデータを選んだ");
+			return;
+		}
+		this.ApplyMaidFace(this.GetMaid(), itemData);
+	}
+
+	private Maid GetMaid()
+	{
+		CharacterMgr characterMgr = GameMain.Instance.CharacterMgr;
+		return characterMgr.GetMaid(0);
+	}
+
 	[SerializeField]
 	private CircleListSelectUI m_CircleList;
+
+	private List<PhotoFaceDataShortcut.ItemData> m_ItemDataList = new List<PhotoFaceDataShortcut.ItemData>();
+
+	private bool m_IsLeftHand;
+
+	[Serializable]
+	public class FaceData
+	{
+		public string dataName
+		{
+			get
+			{
+				return this.m_strData;
+			}
+		}
+
+		public PhotoFaceData data
+		{
+			get
+			{
+				return this.m_Data;
+			}
+			set
+			{
+				this.m_Data = value;
+				if (value == null)
+				{
+					this.m_strData = PhotoFaceDataShortcut.FaceData.strDataNull;
+				}
+				else
+				{
+					this.m_strData = value.setting_name;
+				}
+			}
+		}
+
+		public TMorph.AddBlendType blendType
+		{
+			get
+			{
+				return this.m_BlendType;
+			}
+			set
+			{
+				this.m_BlendType = value;
+			}
+		}
+
+		public bool isOpenMouth
+		{
+			get
+			{
+				return this.m_IsOpenMouth;
+			}
+			set
+			{
+				this.m_IsOpenMouth = value;
+			}
+		}
+
+		public static PhotoFaceDataShortcut.FaceData defaultData
+		{
+			get
+			{
+				if (PhotoFaceDataShortcut.FaceData.m_DefaultData == null)
+				{
+					PhotoFaceData.Create();
+					PhotoFaceDataShortcut.FaceData.m_DefaultData = new PhotoFaceDataShortcut.FaceData();
+					PhotoFaceDataShortcut.FaceData.m_DefaultData.data = PhotoFaceData.init_data;
+					PhotoFaceDataShortcut.FaceData.m_DefaultData.m_strData = PhotoFaceDataShortcut.FaceData.strDataNull;
+					PhotoFaceDataShortcut.FaceData.m_DefaultData.blendType = TMorph.AddBlendType.None;
+					PhotoFaceDataShortcut.FaceData.m_DefaultData.isOpenMouth = false;
+				}
+				return PhotoFaceDataShortcut.FaceData.m_DefaultData;
+			}
+		}
+
+		private PhotoFaceData m_Data;
+
+		[SerializeField]
+		private TMorph.AddBlendType m_BlendType;
+
+		[SerializeField]
+		private bool m_IsOpenMouth;
+
+		[SerializeField]
+		private string m_strData;
+
+		private static string strDataNull = "通常";
+
+		private static PhotoFaceDataShortcut.FaceData m_DefaultData;
+	}
+
+	public class ItemData : MonoBehaviour
+	{
+		public PhotoFaceDataShortcut handController { get; set; }
+
+		public int index { get; set; }
+
+		public PhotoFaceDataShortcut.FaceData faceData
+		{
+			get
+			{
+				return this.m_FaceData;
+			}
+			set
+			{
+				this.m_FaceData = value;
+				this.UpdateData();
+			}
+		}
+
+		public PhotoFaceData data
+		{
+			get
+			{
+				return this.m_FaceData.data;
+			}
+			set
+			{
+				this.m_FaceData.data = value;
+				this.UpdateText();
+				this.UpdateConfigData();
+			}
+		}
+
+		public Text text
+		{
+			get
+			{
+				return this.m_Text;
+			}
+			set
+			{
+				this.m_Text = value;
+			}
+		}
+
+		public Localize localize
+		{
+			get
+			{
+				return this.m_Localize;
+			}
+			set
+			{
+				this.m_Localize = value;
+			}
+		}
+
+		public TMorph.AddBlendType blendType
+		{
+			get
+			{
+				return this.m_FaceData.blendType;
+			}
+			set
+			{
+				this.m_FaceData.blendType = value;
+			}
+		}
+
+		public bool isOpenMouth
+		{
+			get
+			{
+				return this.m_FaceData.isOpenMouth;
+			}
+			set
+			{
+				this.m_FaceData.isOpenMouth = value;
+			}
+		}
+
+		private void UpdateText()
+		{
+			if (this.text == null)
+			{
+				return;
+			}
+			this.text.text = this.GetDataName();
+			this.localize.SetTerm(this.GetDataTermName());
+		}
+
+		public string GetDataName()
+		{
+			if (this.data == null)
+			{
+				return "無し";
+			}
+			return this.data.name;
+		}
+
+		public string GetDataTermName()
+		{
+			if (this.data == null)
+			{
+				return "無し";
+			}
+			return this.data.termName;
+		}
+
+		private void UpdateConfigData()
+		{
+			if (this.handController.IsLeftHand)
+			{
+				if (ControllerShortcutSettingData.config.faceListLeft.Count <= this.index)
+				{
+					return;
+				}
+				ControllerShortcutSettingData.config.faceListLeft[this.index] = this.faceData;
+			}
+			else
+			{
+				if (ControllerShortcutSettingData.config.faceListRight.Count <= this.index)
+				{
+					return;
+				}
+				ControllerShortcutSettingData.config.faceListRight[this.index] = this.faceData;
+			}
+		}
+
+		private void UpdateData()
+		{
+			PhotoFaceDataShortcut.ItemData.CreatePhotoFaceDataNameDic();
+			int num;
+			if (PhotoFaceDataShortcut.ItemData.photoFaceDataNameDic.TryGetValue(this.faceData.dataName, out num))
+			{
+				this.data = PhotoFaceData.Get((long)num);
+			}
+			else
+			{
+				this.data = null;
+			}
+		}
+
+		private static void CreatePhotoFaceDataNameDic()
+		{
+			if (PhotoFaceDataShortcut.ItemData.m_PhotoFaceDataNameDic != null && PhotoFaceDataShortcut.ItemData.m_PhotoFaceDataNameDic.Count > 0)
+			{
+				return;
+			}
+			PhotoFaceData.Create();
+			PhotoFaceDataShortcut.ItemData.m_PhotoFaceDataNameDic = new SortedDictionary<string, int>();
+			foreach (PhotoFaceData photoFaceData in PhotoFaceData.data)
+			{
+				PhotoFaceDataShortcut.ItemData.m_PhotoFaceDataNameDic.Add(photoFaceData.setting_name, photoFaceData.id);
+			}
+		}
+
+		public static SortedDictionary<string, int> photoFaceDataNameDic
+		{
+			get
+			{
+				PhotoFaceDataShortcut.ItemData.CreatePhotoFaceDataNameDic();
+				return PhotoFaceDataShortcut.ItemData.m_PhotoFaceDataNameDic;
+			}
+			private set
+			{
+				PhotoFaceDataShortcut.ItemData.m_PhotoFaceDataNameDic = value;
+			}
+		}
+
+		private PhotoFaceDataShortcut.FaceData m_FaceData = new PhotoFaceDataShortcut.FaceData();
+
+		private Text m_Text;
+
+		private Localize m_Localize;
+
+		private static SortedDictionary<string, int> m_PhotoFaceDataNameDic;
+	}
 }

+ 175 - 2
Assembly-CSharp/PhotoFaceDataShortcutParent.cs

@@ -3,9 +3,182 @@ using UnityEngine;
 
 public class PhotoFaceDataShortcutParent : MonoBehaviour
 {
-	public bool isEnableHandUI { get; set; }
+	public PhotoFaceDataShortcut handUI { get; private set; }
 
-	public void Init(bool b)
+	private KeyboardShortcutManager keyboardShortcut { get; set; }
+
+	public bool isLeftHand { get; private set; }
+
+	public bool isEnableHandUI
+	{
+		get
+		{
+			return this.handUI.gameObject.activeSelf;
+		}
+		set
+		{
+			if (this.handUI == null || this.handUI.gameObject == null)
+			{
+				return;
+			}
+			if (this.handUI.gameObject.activeSelf != value)
+			{
+				this.handUI.gameObject.SetActive(value);
+			}
+		}
+	}
+
+	public bool isEnableKeyboardShortcut
+	{
+		get
+		{
+			return this.keyboardShortcut.gameObject.activeSelf;
+		}
+		set
+		{
+			if (this.keyboardShortcut == null || this.keyboardShortcut.gameObject == null)
+			{
+				return;
+			}
+			if (this.keyboardShortcut.gameObject.activeSelf != value)
+			{
+				this.keyboardShortcut.gameObject.SetActive(value);
+			}
+		}
+	}
+
+	public void Init(bool isLeftHand)
+	{
+		this.isLeftHand = isLeftHand;
+		this.SetupPhotoFaceDataShortcut();
+		this.SetupKeyboardShortcutManager();
+	}
+
+	private void SetupPhotoFaceDataShortcut()
+	{
+		string text = "OVR/CircleCommandUI/PhotoFaceDataShortcut(Cotroller)";
+		GameObject gameObject = Resources.Load<GameObject>(text);
+		if (gameObject == null)
+		{
+			NDebug.Assert("[PhotoFaceDataShortcutParent] " + text + "\nプレハブが見つかりません", false);
+		}
+		GameObject gameObject2 = UnityEngine.Object.Instantiate<GameObject>(gameObject);
+		this.handUI = gameObject2.GetComponent<PhotoFaceDataShortcut>();
+		this.handUI.Init(this.isLeftHand);
+		this.handUI.CreateItemList(8);
+		Transform transform = gameObject2.transform;
+		transform.SetParent(base.transform);
+		transform.localPosition = Vector3.zero;
+		transform.localRotation = Quaternion.identity;
+		transform.localScale = Vector3.one;
+		Vector3 b = new Vector3(0.03f, 0.15f, -0.05f);
+		Vector3 localEulerAngles = new Vector3(35f, 15f, 0f);
+		if (this.isLeftHand)
+		{
+			b.Scale(new Vector3(-1f, 1f, 1f));
+			localEulerAngles.Scale(new Vector3(1f, -1f, -1f));
+		}
+		transform.localPosition += b;
+		transform.localEulerAngles = localEulerAngles;
+	}
+
+	private void SetupKeyboardShortcutManager()
+	{
+		if (!this.isLeftHand)
+		{
+			return;
+		}
+		this.keyboardShortcut = new GameObject("Keyboard Shortcut").AddComponent<KeyboardShortcutManager>();
+		this.keyboardShortcut.transform.SetParent(base.transform, false);
+		for (int i = 0; i < this.handUI.itemDataList.Count; i++)
+		{
+			int index = i;
+			this.keyboardShortcut.AddKeyData(base.gameObject, KeyCode.Alpha1 + i, delegate
+			{
+				this.OnKeyDownShortcut(this.handUI, index);
+			}, delegate
+			{
+				this.OnKeyStayShortcut(this.handUI, index);
+			}, delegate
+			{
+				this.OnKeyUpShortcut(this.handUI, index);
+			});
+		}
+	}
+
+	private void OnKeyDownShortcut(PhotoFaceDataShortcut shortcutController, int index)
+	{
+		if (ControllerShortcutSettingData.config.isDirectMode)
+		{
+			if (shortcutController.itemDataList.Count <= index)
+			{
+				return;
+			}
+			PhotoFaceDataShortcut.ItemData itemData = shortcutController.itemDataList[index];
+			if (itemData == null || itemData.data == null)
+			{
+				return;
+			}
+			shortcutController.Emulate(itemData);
+		}
+	}
+
+	private void OnKeyStayShortcut(PhotoFaceDataShortcut shortcutController, int index)
+	{
+	}
+
+	private void OnKeyUpShortcut(PhotoFaceDataShortcut shortcutController, int index)
 	{
+		if (!ControllerShortcutSettingData.config.isDirectMode)
+		{
+			if (shortcutController.itemDataList.Count <= index)
+			{
+				Debug.LogWarning("[表情ショートカット]コントローラのショートカット範囲外のインデックスが指定された。");
+				return;
+			}
+			PhotoFaceDataShortcut.ItemData itemData = shortcutController.itemDataList[index];
+			if (itemData == null || itemData.data == null)
+			{
+				Debug.Log("[表情ショートカット]コントローラのショートカット対応のキーが押されたが、表情データはnullだった。");
+				return;
+			}
+			shortcutController.Emulate(itemData);
+		}
+		else
+		{
+			foreach (PhotoFaceDataShortcut.ItemData itemData2 in shortcutController.itemDataList)
+			{
+				if (!(itemData2 == null) && itemData2.data != null)
+				{
+					shortcutController.Emulate(itemData2);
+					break;
+				}
+			}
+		}
 	}
+
+	private void OnApplicationQuit()
+	{
+		this.m_IsQuitting = true;
+	}
+
+	private void OnDestroy()
+	{
+		if (this.m_IsQuitting)
+		{
+			return;
+		}
+		if (this.handUI != null && this.handUI.gameObject != null)
+		{
+			UnityEngine.Object.Destroy(this.handUI.gameObject);
+			Debug.Log("[PhotoFaceDataShortcutParent] コントローラについているUIを破棄しました");
+		}
+		if (this.keyboardShortcut != null && this.keyboardShortcut.gameObject != null)
+		{
+			UnityEngine.Object.Destroy(this.keyboardShortcut.gameObject);
+			Debug.Log("[PhotoFaceDataShortcutParent] キーボード入力のショートカット管理クラスを破棄しました");
+		}
+	}
+
+	private bool m_IsQuitting;
 }

+ 419 - 0
Assembly-CSharp/PhotoFaceDataShortcutSetter.cs

@@ -1,8 +1,384 @@
 using System;
+using System.Collections;
+using System.Collections.Generic;
+using I2.Loc;
+using Kasizuki;
 using UnityEngine;
 
 public class PhotoFaceDataShortcutSetter : MonoBehaviour
 {
+	public float fadeSpeed
+	{
+		get
+		{
+			return this.m_FadeSpeed;
+		}
+		set
+		{
+			this.m_FadeSpeed = Mathf.Clamp(value, 0.001f, 1f);
+		}
+	}
+
+	private PhotoFaceDataShortcut targetControllerRight { get; set; }
+
+	private PhotoFaceDataShortcut targetControllerLeft { get; set; }
+
+	private PhotoFaceDataShortcut.ItemData nowSelectItem
+	{
+		get
+		{
+			return this.m_NowSelectItem;
+		}
+		set
+		{
+			this.m_NowSelectItem = value;
+		}
+	}
+
+	public void Init(PhotoFaceDataShortcut rightHandUI, PhotoFaceDataShortcut LeftHandUI)
+	{
+		this.m_FadeWindowShortcutButtonsRight = this.m_ButtonListShortcutRight.GetComponent<NGUIWindow>();
+		this.m_FadeWindowShortcutButtonsLeft = this.m_ButtonListShortcutLeft.GetComponent<NGUIWindow>();
+		this.m_FadeWindowFaceDataList = this.m_WindowListFaceData.GetComponent<NGUIWindow>();
+		this.targetControllerRight = rightHandUI;
+		this.targetControllerLeft = LeftHandUI;
+		PhotoFaceData.Create();
+		List<PhotoFaceData> data2 = PhotoFaceData.data;
+		ListViewerWindow windowListFaceData = this.m_WindowListFaceData;
+		windowListFaceData.Show<PhotoFaceData, UIWFTabButton>(data2, delegate(int index, PhotoFaceData data, UIWFTabButton item)
+		{
+			UILabel componentInChildren = item.GetComponentInChildren<UILabel>();
+			componentInChildren.text = data.name;
+			componentInChildren.GetComponent<Localize>().SetTerm(data.termName);
+			EventDelegate.Add(item.onClick, delegate()
+			{
+				this.OnClickData(data);
+			});
+		});
+		UIWFTabPanel component = windowListFaceData.viewer.parentItemArea.GetComponent<UIWFTabPanel>();
+		if (component)
+		{
+			component.UpdateChildren();
+		}
+		this.m_ButtonListShortcutRight.Show<Transform>(this.targetControllerRight.itemDataList.Count, delegate(int index, Transform trans)
+		{
+			PhotoFaceDataShortcut.ItemData data = this.targetControllerRight.itemDataList[index];
+			UILabel componentInChildren = trans.GetComponentInChildren<UILabel>();
+			UIButton componentInChildren2 = trans.GetComponentInChildren<UIButton>();
+			Localize componentInChildren3 = trans.GetComponentInChildren<Localize>();
+			componentInChildren.text = data.GetDataName();
+			componentInChildren3.SetTerm(data.GetDataTermName());
+			EventDelegate.Add(componentInChildren2.onClick, delegate()
+			{
+				this.OnClickShortcutButton(data);
+			});
+			PhotoFaceDataShortcutSetter.ItemData itemData = trans.gameObject.AddComponent<PhotoFaceDataShortcutSetter.ItemData>();
+			itemData.label = componentInChildren;
+			itemData.localize = componentInChildren3;
+			this.m_ItemPairDic.Add(data, itemData);
+		});
+		this.m_ButtonListShortcutLeft.Show<Transform>(this.targetControllerLeft.itemDataList.Count, delegate(int index, Transform trans)
+		{
+			PhotoFaceDataShortcut.ItemData data = this.targetControllerLeft.itemDataList[index];
+			UILabel componentInChildren = trans.GetComponentInChildren<UILabel>();
+			UIButton componentInChildren2 = trans.GetComponentInChildren<UIButton>();
+			Localize componentInChildren3 = trans.GetComponentInChildren<Localize>();
+			componentInChildren.text = data.GetDataName();
+			componentInChildren3.SetTerm(data.GetDataTermName());
+			EventDelegate.Add(componentInChildren2.onClick, delegate()
+			{
+				this.OnClickShortcutButton(data);
+			});
+			PhotoFaceDataShortcutSetter.ItemData itemData = trans.gameObject.AddComponent<PhotoFaceDataShortcutSetter.ItemData>();
+			itemData.label = componentInChildren;
+			itemData.localize = componentInChildren3;
+			this.m_ItemPairDic.Add(data, itemData);
+		});
+		Transform transform = this.m_ParentAddFaceOptions.transform.Find("Buttons");
+		for (int i = 0; i < transform.childCount; i++)
+		{
+			WFCheckBox component2 = transform.GetChild(i).GetComponent<WFCheckBox>();
+			component2.check = false;
+			component2.enabled = true;
+			this.m_AddFaceOptionDic.Add(component2.GetComponentInChildren<UILabel>().text, component2);
+			component2.onClick.Add(new Action<WFCheckBox>(this.OnClickCheckBoxAddOption));
+		}
+		EventDelegate.Add(this.m_ButtonFaceListOK.onClick, new EventDelegate.Callback(this.OnClickFaceListOK));
+		NGUIWindow fadeWindowFaceDataList = this.m_FadeWindowFaceDataList;
+		fadeWindowFaceDataList.OnOpen = (Action)Delegate.Combine(fadeWindowFaceDataList.OnOpen, new Action(delegate()
+		{
+			this.m_WindowListFaceData.Reposition();
+		}));
+	}
+
+	private void OnClickData(PhotoFaceData data)
+	{
+		TMorph.AddBlendType blendType = this.ConvertBlendType();
+		this.ApplyItemData(this.nowSelectItem, data, blendType);
+		PhotoFaceDataShortcutSetter.ItemData itemData;
+		if (this.m_ItemPairDic != null && this.m_ItemPairDic.TryGetValue(this.nowSelectItem, out itemData))
+		{
+			itemData.label.text = this.nowSelectItem.GetDataName();
+			itemData.localize.SetTerm(this.nowSelectItem.GetDataTermName());
+		}
+		if (this.nowSelectItem != null)
+		{
+			if (this.targetControllerRight.itemDataList.Contains(this.nowSelectItem))
+			{
+				this.targetControllerRight.Emulate(this.nowSelectItem);
+			}
+			else if (this.targetControllerLeft.itemDataList.Contains(this.nowSelectItem))
+			{
+				this.targetControllerLeft.Emulate(this.nowSelectItem);
+			}
+			else
+			{
+				Debug.LogWarning("コントローラに存在しない項目を更新しているかも");
+			}
+		}
+	}
+
+	private void OnClickShortcutButton(PhotoFaceDataShortcut.ItemData item)
+	{
+		this.nowSelectItem = item;
+		this.m_FadeWindowShortcutButtonsRight.Close(this.fadeSpeed, null);
+		this.m_FadeWindowShortcutButtonsLeft.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			this.m_FadeWindowFaceDataList.Open(this.fadeSpeed, null);
+		});
+		UIWFTabPanel component = this.m_WindowListFaceData.viewer.parentItemArea.GetComponent<UIWFTabPanel>();
+		UIWFTabButton selectButtonObject = component.GetSelectButtonObject();
+		if (selectButtonObject != null)
+		{
+			selectButtonObject.SetSelect(false);
+		}
+		component.ResetSelect();
+		component.UpdateChildren();
+		this.UpdateCheckBoxAddOption(item);
+	}
+
+	private void OnClickFaceListOK()
+	{
+		this.m_FadeWindowFaceDataList.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			this.m_FadeWindowShortcutButtonsRight.Open(this.fadeSpeed, null);
+			this.m_FadeWindowShortcutButtonsLeft.Open(this.fadeSpeed, null);
+		});
+		ControllerShortcutSettingData.config.Write();
+	}
+
+	private void ApplyItemData(PhotoFaceDataShortcut.ItemData itemData, PhotoFaceData data, TMorph.AddBlendType blendType)
+	{
+		if (itemData == null)
+		{
+			Debug.Log("コントローラの項目の参照がありませんでした");
+			return;
+		}
+		if (data == null)
+		{
+			Debug.Log("表情データがnullらしい");
+		}
+		itemData.data = data;
+		itemData.blendType = blendType;
+		itemData.isOpenMouth = this.IsOpenMouth();
+	}
+
+	private TMorph.AddBlendType ConvertBlendType()
+	{
+		TMorph.AddBlendType addBlendType = TMorph.AddBlendType.None;
+		Dictionary<string, TMorph.AddBlendType> dictionary = new Dictionary<string, TMorph.AddBlendType>
+		{
+			{
+				"頬染め1",
+				TMorph.AddBlendType.Cheek1
+			},
+			{
+				"頬染め2",
+				TMorph.AddBlendType.Cheek2
+			},
+			{
+				"頬染め3",
+				TMorph.AddBlendType.Cheek3
+			},
+			{
+				"涙1",
+				TMorph.AddBlendType.Tear1
+			},
+			{
+				"涙2",
+				TMorph.AddBlendType.Tear2
+			},
+			{
+				"涙3",
+				TMorph.AddBlendType.Tear3
+			},
+			{
+				"涙(玉)",
+				TMorph.AddBlendType.TearBig
+			},
+			{
+				"涎",
+				TMorph.AddBlendType.Yodare
+			},
+			{
+				"赤面",
+				TMorph.AddBlendType.Blush
+			},
+			{
+				"ショック",
+				TMorph.AddBlendType.Shock
+			}
+		};
+		foreach (KeyValuePair<string, TMorph.AddBlendType> keyValuePair in dictionary)
+		{
+			if (this.m_AddFaceOptionDic.ContainsKey(keyValuePair.Key) && this.m_AddFaceOptionDic[keyValuePair.Key].check)
+			{
+				addBlendType |= keyValuePair.Value;
+			}
+		}
+		return addBlendType;
+	}
+
+	private bool IsOpenMouth()
+	{
+		return this.m_AddFaceOptionDic["口を開く"].check;
+	}
+
+	private void UpdateCheckBoxAddOption(PhotoFaceDataShortcut.ItemData itemData)
+	{
+		if (itemData == null || itemData.data == null)
+		{
+			Debug.Log("表情データが空だったので、追加表情データの表示は最後の状態を引き継ぐ");
+			return;
+		}
+		Dictionary<string, TMorph.AddBlendType> dictionary = new Dictionary<string, TMorph.AddBlendType>
+		{
+			{
+				"頬染め1",
+				TMorph.AddBlendType.Cheek1
+			},
+			{
+				"頬染め2",
+				TMorph.AddBlendType.Cheek2
+			},
+			{
+				"頬染め3",
+				TMorph.AddBlendType.Cheek3
+			},
+			{
+				"涙1",
+				TMorph.AddBlendType.Tear1
+			},
+			{
+				"涙2",
+				TMorph.AddBlendType.Tear2
+			},
+			{
+				"涙3",
+				TMorph.AddBlendType.Tear3
+			},
+			{
+				"涙(玉)",
+				TMorph.AddBlendType.TearBig
+			},
+			{
+				"涎",
+				TMorph.AddBlendType.Yodare
+			},
+			{
+				"赤面",
+				TMorph.AddBlendType.Blush
+			},
+			{
+				"ショック",
+				TMorph.AddBlendType.Shock
+			}
+		};
+		foreach (KeyValuePair<string, TMorph.AddBlendType> keyValuePair in dictionary)
+		{
+			this.m_AddFaceOptionDic[keyValuePair.Key].check = ((itemData.blendType & keyValuePair.Value) != TMorph.AddBlendType.None);
+		}
+	}
+
+	private void OnClickCheckBoxAddOption(WFCheckBox check_box)
+	{
+		string[] array = new string[]
+		{
+			"頬染め1",
+			"頬染め2",
+			"頬染め3"
+		};
+		string[] array2 = new string[]
+		{
+			"涙1",
+			"涙2",
+			"涙3"
+		};
+		string[][] array3 = new string[][]
+		{
+			array,
+			array2
+		};
+		foreach (KeyValuePair<string, WFCheckBox> keyValuePair in this.m_AddFaceOptionDic)
+		{
+			if (keyValuePair.Value == check_box)
+			{
+				foreach (string array4 in array3)
+				{
+					if (0 <= Array.IndexOf<string>(array4, keyValuePair.Key))
+					{
+						for (int j = 0; j < array4.Length; j++)
+						{
+							if (!(array4[j] == keyValuePair.Key))
+							{
+								if (this.m_AddFaceOptionDic[array4[j]].check)
+								{
+									this.m_AddFaceOptionDic[array4[j]].check = false;
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+		if (this.nowSelectItem != null && this.nowSelectItem.data != null)
+		{
+			this.ApplyItemData(this.nowSelectItem, this.nowSelectItem.data, this.ConvertBlendType());
+			if (this.nowSelectItem != null)
+			{
+				if (this.targetControllerRight.itemDataList.Contains(this.nowSelectItem))
+				{
+					this.targetControllerRight.Emulate(this.nowSelectItem);
+				}
+				else if (this.targetControllerLeft.itemDataList.Contains(this.nowSelectItem))
+				{
+					this.targetControllerLeft.Emulate(this.nowSelectItem);
+				}
+				else
+				{
+					Debug.LogWarning("コントローラに存在しない項目を更新しているかもしれない");
+				}
+			}
+		}
+	}
+
+	private void WaitTime(float time, Action onFinish)
+	{
+		base.StartCoroutine(this.CoWaitTime(time, onFinish));
+	}
+
+	private IEnumerator CoWaitTime(float time, Action onFinish)
+	{
+		yield return new WaitForSeconds(time);
+		if (onFinish != null)
+		{
+			onFinish();
+		}
+		yield break;
+	}
+
 	[SerializeField]
 	[Range(0.001f, 1f)]
 	private float m_FadeSpeed = 0.25f;
@@ -21,4 +397,47 @@ public class PhotoFaceDataShortcutSetter : MonoBehaviour
 
 	[SerializeField]
 	private UIButton m_ButtonFaceListOK;
+
+	private NGUIWindow m_FadeWindowShortcutButtonsRight;
+
+	private NGUIWindow m_FadeWindowShortcutButtonsLeft;
+
+	private NGUIWindow m_FadeWindowFaceDataList;
+
+	private PhotoFaceDataShortcut.ItemData m_NowSelectItem;
+
+	private Dictionary<PhotoFaceDataShortcut.ItemData, PhotoFaceDataShortcutSetter.ItemData> m_ItemPairDic = new Dictionary<PhotoFaceDataShortcut.ItemData, PhotoFaceDataShortcutSetter.ItemData>();
+
+	private Dictionary<string, WFCheckBox> m_AddFaceOptionDic = new Dictionary<string, WFCheckBox>();
+
+	public class ItemData : MonoBehaviour
+	{
+		public UILabel label
+		{
+			get
+			{
+				return this.m_Label;
+			}
+			set
+			{
+				this.m_Label = value;
+			}
+		}
+
+		public Localize localize
+		{
+			get
+			{
+				return this.m_Localize;
+			}
+			set
+			{
+				this.m_Localize = value;
+			}
+		}
+
+		private UILabel m_Label;
+
+		private Localize m_Localize;
+	}
 }

+ 167 - 0
Assembly-CSharp/PhotoMotionDataShortcut.cs

@@ -1,8 +1,175 @@
 using System;
+using System.Collections.Generic;
 using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.UI;
 
 public class PhotoMotionDataShortcut : MonoBehaviour
 {
+	public List<PhotoMotionDataShortcut.ItemData> itemDataList
+	{
+		get
+		{
+			return this.m_ItemDataList;
+		}
+	}
+
+	private void Start()
+	{
+		CircleCommandUI circleCommandUI = this.m_CircleList.circleCommandUI;
+		circleCommandUI.onSelect.AddListener(new UnityAction<GameObject>(this.OnSelectItem));
+		circleCommandUI.onDeselect.AddListener(new UnityAction<GameObject>(this.OnDeselectItem));
+		circleCommandUI.onDecide.AddListener(new UnityAction<GameObject>(this.OnDecide));
+		this.m_CircleList.SetActiveUI(false);
+	}
+
+	public void CreateItemList(int count)
+	{
+		CircleCommandUI circleCommandUI = this.m_CircleList.circleCommandUI;
+		GameObject tempItem = circleCommandUI.listViewer.tempItem;
+		Transform transform = tempItem.transform;
+		transform.localScale = Vector3.one * 0.5f;
+		circleCommandUI.Show<Transform>(count, delegate(int index, Transform trans)
+		{
+			Text componentInChildren = trans.GetComponentInChildren<Text>();
+			PhotoMotionDataShortcut.ItemData itemData = trans.gameObject.AddComponent<PhotoMotionDataShortcut.ItemData>();
+			itemData.text = componentInChildren;
+			itemData.data = null;
+			this.m_ItemDataList.Add(itemData);
+		});
+	}
+
+	private void OnSelectItem(GameObject item)
+	{
+		if (item == null)
+		{
+			return;
+		}
+		Graphic component = item.GetComponent<Graphic>();
+		if (component != null)
+		{
+			component.color = Color.red;
+		}
+		item.transform.localScale = Vector3.one;
+		item.transform.SetAsFirstSibling();
+	}
+
+	private void OnDeselectItem(GameObject item)
+	{
+		if (item == null)
+		{
+			return;
+		}
+		Graphic component = item.GetComponent<Graphic>();
+		if (component != null)
+		{
+			Color white = Color.white;
+			white.a = 0.5f;
+			component.color = white;
+		}
+		item.transform.localScale = Vector3.one * 0.5f;
+	}
+
+	private void OnDecide(GameObject selectItem)
+	{
+		if (selectItem == null)
+		{
+			Debug.LogWarning("選択項目にnullが入った");
+			return;
+		}
+		this.OnDeselectItem(selectItem);
+		this.m_CircleList.SetActiveUI(false);
+		PhotoMotionDataShortcut.ItemData component = selectItem.GetComponent<PhotoMotionDataShortcut.ItemData>();
+		if (component != null)
+		{
+			this.ApplyMaidFace(this.GetMaid(), component);
+		}
+	}
+
+	private void ApplyMaidFace(Maid maid, PhotoMotionDataShortcut.ItemData faceData)
+	{
+		if (faceData == null)
+		{
+			Debug.Log("モーションデータにnullが指定されました。");
+			return;
+		}
+		if (maid == null)
+		{
+			Debug.Log("メイドにnullが指定されました。");
+			return;
+		}
+		Debug.Log("メイドのモーションを変更します...\u3000モーション:" + faceData.name);
+		faceData.data.Apply(maid);
+	}
+
+	public void Emulate(PhotoMotionDataShortcut.ItemData itemData)
+	{
+		if (!this.itemDataList.Contains(itemData))
+		{
+			Debug.Log("コントローラ上に存在しないデータを選んだ");
+			return;
+		}
+		this.ApplyMaidFace(this.GetMaid(), itemData);
+	}
+
+	private Maid GetMaid()
+	{
+		CharacterMgr characterMgr = GameMain.Instance.CharacterMgr;
+		return characterMgr.GetMaid(0);
+	}
+
 	[SerializeField]
 	private CircleListSelectUI m_CircleList;
+
+	private List<PhotoMotionDataShortcut.ItemData> m_ItemDataList = new List<PhotoMotionDataShortcut.ItemData>();
+
+	public class ItemData : MonoBehaviour
+	{
+		public PhotoMotionData data
+		{
+			get
+			{
+				return this.m_Data;
+			}
+			set
+			{
+				this.m_Data = value;
+				this.UpdateText();
+			}
+		}
+
+		public Text text
+		{
+			get
+			{
+				return this.m_Text;
+			}
+			set
+			{
+				this.m_Text = value;
+			}
+		}
+
+		private void UpdateText()
+		{
+			if (this.text == null)
+			{
+				return;
+			}
+			this.text.text = this.GetDataName();
+		}
+
+		public string GetDataName()
+		{
+			if (this.data == null)
+			{
+				return "無し";
+			}
+			return this.data.name;
+		}
+
+		private PhotoMotionData m_Data;
+
+		private Text m_Text;
+	}
 }

+ 224 - 0
Assembly-CSharp/PhotoMotionDataShortcutSetter.cs

@@ -1,8 +1,203 @@
 using System;
+using System.Collections;
+using System.Collections.Generic;
+using Kasizuki;
 using UnityEngine;
 
 public class PhotoMotionDataShortcutSetter : MonoBehaviour
 {
+	public float fadeSpeed
+	{
+		get
+		{
+			return this.m_FadeSpeed;
+		}
+		set
+		{
+			this.m_FadeSpeed = Mathf.Clamp(value, 0.001f, 1f);
+		}
+	}
+
+	private PhotoMotionDataShortcut targetControllerRight
+	{
+		get
+		{
+			return this.m_TargetControllerRight;
+		}
+	}
+
+	private PhotoMotionDataShortcut targetControllerLeft
+	{
+		get
+		{
+			return this.m_TargetControllerLeft;
+		}
+	}
+
+	private PhotoMotionDataShortcut.ItemData nowSelectItem
+	{
+		get
+		{
+			return this.m_NowSelectItem;
+		}
+		set
+		{
+			this.m_NowSelectItem = value;
+		}
+	}
+
+	private void Start()
+	{
+		this.m_FadeWindowShortcutButtonsRight = this.m_ButtonListShortcutRight.GetComponent<NGUIWindow>();
+		this.m_FadeWindowShortcutButtonsLeft = this.m_ButtonListShortcutLeft.GetComponent<NGUIWindow>();
+		this.m_FadeWindowMotionDataList = this.m_WindowListMotionData.GetComponent<NGUIWindow>();
+		this.targetControllerRight.CreateItemList(8);
+		this.targetControllerLeft.CreateItemList(8);
+		PhotoMotionData.Create();
+		List<PhotoMotionData> data2 = PhotoMotionData.data;
+		ListViewerWindow windowListMotionData = this.m_WindowListMotionData;
+		windowListMotionData.Show<PhotoMotionData, UIWFTabButton>(data2, delegate(int index, PhotoMotionData data, UIWFTabButton item)
+		{
+			UILabel componentInChildren = item.GetComponentInChildren<UILabel>();
+			componentInChildren.text = data.name;
+			EventDelegate.Add(item.onClick, delegate()
+			{
+				this.OnClickData(data);
+			});
+		});
+		UIWFTabPanel component = windowListMotionData.viewer.parentItemArea.GetComponent<UIWFTabPanel>();
+		if (component)
+		{
+			component.UpdateChildren();
+		}
+		this.m_ButtonListShortcutRight.Show<Transform>(this.targetControllerRight.itemDataList.Count, delegate(int index, Transform trans)
+		{
+			PhotoMotionDataShortcut.ItemData data = this.targetControllerRight.itemDataList[index];
+			UILabel componentInChildren = trans.GetComponentInChildren<UILabel>();
+			UIButton componentInChildren2 = trans.GetComponentInChildren<UIButton>();
+			componentInChildren.text = data.GetDataName();
+			EventDelegate.Add(componentInChildren2.onClick, delegate()
+			{
+				this.OnClickShortcutButton(data);
+			});
+			PhotoMotionDataShortcutSetter.ItemData itemData = trans.gameObject.AddComponent<PhotoMotionDataShortcutSetter.ItemData>();
+			itemData.label = componentInChildren;
+			this.m_ItemPairDic.Add(data, itemData);
+		});
+		this.m_ButtonListShortcutLeft.Show<Transform>(this.targetControllerLeft.itemDataList.Count, delegate(int index, Transform trans)
+		{
+			PhotoMotionDataShortcut.ItemData data = this.targetControllerLeft.itemDataList[index];
+			UILabel componentInChildren = trans.GetComponentInChildren<UILabel>();
+			UIButton componentInChildren2 = trans.GetComponentInChildren<UIButton>();
+			componentInChildren.text = data.GetDataName();
+			EventDelegate.Add(componentInChildren2.onClick, delegate()
+			{
+				this.OnClickShortcutButton(data);
+			});
+			PhotoMotionDataShortcutSetter.ItemData itemData = trans.gameObject.AddComponent<PhotoMotionDataShortcutSetter.ItemData>();
+			itemData.label = componentInChildren;
+			this.m_ItemPairDic.Add(data, itemData);
+		});
+		EventDelegate.Add(this.m_ButtonMotionListOK.onClick, new EventDelegate.Callback(this.OnClickMotionListOK));
+	}
+
+	private void OnClickData(PhotoMotionData data)
+	{
+		Debug.Log("モーション:" + data.name);
+		if (this.nowSelectItem != null)
+		{
+			this.nowSelectItem.data = data;
+		}
+		PhotoMotionDataShortcutSetter.ItemData itemData;
+		if (this.m_ItemPairDic != null && this.m_ItemPairDic.TryGetValue(this.nowSelectItem, out itemData))
+		{
+			itemData.label.text = this.nowSelectItem.GetDataName();
+		}
+		if (this.nowSelectItem != null)
+		{
+			if (this.targetControllerRight.itemDataList.Contains(this.nowSelectItem))
+			{
+				this.targetControllerRight.Emulate(this.nowSelectItem);
+			}
+			else if (this.targetControllerLeft.itemDataList.Contains(this.nowSelectItem))
+			{
+				this.targetControllerLeft.Emulate(this.nowSelectItem);
+			}
+			else
+			{
+				Debug.LogWarning("コントローラに存在しない項目を更新しているかも");
+			}
+		}
+	}
+
+	private void OnClickShortcutButton(PhotoMotionDataShortcut.ItemData item)
+	{
+		this.nowSelectItem = item;
+		this.m_FadeWindowShortcutButtonsRight.Close(this.fadeSpeed, null);
+		this.m_FadeWindowShortcutButtonsLeft.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			this.m_FadeWindowMotionDataList.Open(this.fadeSpeed, null);
+		});
+		this.m_WindowListMotionData.Reposition();
+		UIWFTabPanel component = this.m_WindowListMotionData.viewer.parentItemArea.GetComponent<UIWFTabPanel>();
+		UIWFTabButton selectButtonObject = component.GetSelectButtonObject();
+		if (selectButtonObject != null)
+		{
+			selectButtonObject.SetSelect(false);
+		}
+		component.ResetSelect();
+		component.UpdateChildren();
+	}
+
+	private void OnClickMotionListOK()
+	{
+		this.m_FadeWindowMotionDataList.Close(this.fadeSpeed, null);
+		this.WaitTime(this.fadeSpeed, delegate
+		{
+			this.m_FadeWindowShortcutButtonsRight.Open(this.fadeSpeed, null);
+			this.m_FadeWindowShortcutButtonsLeft.Open(this.fadeSpeed, null);
+		});
+	}
+
+	private void OnApplicationQuit()
+	{
+		this.m_IsQuittingApplication = true;
+	}
+
+	private void OnDisable()
+	{
+		if (this.m_IsQuittingApplication)
+		{
+			return;
+		}
+		Debug.LogWarning("デバッグ:モーション用コントローラ無効化");
+		this.targetControllerRight.gameObject.SetActive(false);
+		this.targetControllerLeft.gameObject.SetActive(false);
+	}
+
+	private void OnEnable()
+	{
+		Debug.LogWarning("デバッグ:モーション用コントローラ有効化");
+		this.targetControllerRight.gameObject.SetActive(true);
+		this.targetControllerLeft.gameObject.SetActive(true);
+	}
+
+	private void WaitTime(float time, Action onFinish)
+	{
+		base.StartCoroutine(this.CoWaitTime(time, onFinish));
+	}
+
+	private IEnumerator CoWaitTime(float time, Action onFinish)
+	{
+		yield return new WaitForSeconds(time);
+		if (onFinish != null)
+		{
+			onFinish();
+		}
+		yield break;
+	}
+
 	[SerializeField]
 	[Range(0.001f, 1f)]
 	private float m_FadeSpeed = 0.25f;
@@ -24,4 +219,33 @@ public class PhotoMotionDataShortcutSetter : MonoBehaviour
 
 	[SerializeField]
 	private UIButton m_ButtonMotionListOK;
+
+	private NGUIWindow m_FadeWindowShortcutButtonsRight;
+
+	private NGUIWindow m_FadeWindowShortcutButtonsLeft;
+
+	private NGUIWindow m_FadeWindowMotionDataList;
+
+	private PhotoMotionDataShortcut.ItemData m_NowSelectItem;
+
+	private Dictionary<PhotoMotionDataShortcut.ItemData, PhotoMotionDataShortcutSetter.ItemData> m_ItemPairDic = new Dictionary<PhotoMotionDataShortcut.ItemData, PhotoMotionDataShortcutSetter.ItemData>();
+
+	private bool m_IsQuittingApplication;
+
+	public class ItemData : MonoBehaviour
+	{
+		public UILabel label
+		{
+			get
+			{
+				return this.m_Label;
+			}
+			set
+			{
+				this.m_Label = value;
+			}
+		}
+
+		private UILabel m_Label;
+	}
 }

+ 4 - 14
Assembly-CSharp/ProfileCtrl.cs

@@ -106,13 +106,12 @@ public class ProfileCtrl : MonoBehaviour
 			}
 		}
 		this.m_pPersonal.items.Clear();
-		this.m_pPersonal.isLocalized = true;
 		ProfileCtrl.m_dicPersonal = new Dictionary<string, Personal.Data>();
 		foreach (Personal.Data data2 in list)
 		{
-			string termName = data2.termName;
-			this.m_pPersonal.items.Add(termName);
-			ProfileCtrl.m_dicPersonal.Add(termName, data2);
+			string drawName = data2.drawName;
+			this.m_pPersonal.items.Add(drawName);
+			ProfileCtrl.m_dicPersonal.Add(drawName, data2);
 		}
 		EventDelegate.Add(this.m_pPersonal.onChange, delegate()
 		{
@@ -391,7 +390,7 @@ public class ProfileCtrl : MonoBehaviour
 			}
 		}
 		this.m_pSexualExperience.value = this.GetSelectOptionNameFromSexualExpe(this.m_maidStatus.seikeiken);
-		this.m_lProfileComment.text = string.Empty;
+		this.m_lProfileComment.text = this.m_maidStatus.profileComment;
 		this.m_inFreeComment.value = this.m_maidStatus.freeComment;
 	}
 
@@ -596,15 +595,6 @@ public class ProfileCtrl : MonoBehaviour
 				this.SetTransformInfo(gameObject2, goParent);
 				UILabel component = UTY.GetChildObject(gameObject2, "Parameter", false).GetComponent<UILabel>();
 				component.text = list[i].m_parameter;
-				Localize localize = component.gameObject.AddComponent<Localize>();
-				if (btnType == ProfileMgr.UpperButtonType.Character)
-				{
-					localize.SetTerm("MaidStatus/性癖タイプ/" + list[i].m_parameter);
-				}
-				else if (btnType == ProfileMgr.UpperButtonType.Propensity)
-				{
-					localize.SetTerm("MaidStatus/性癖タイプ/" + list[i].m_parameter);
-				}
 			}
 			this.m_goProfileLabelUnitPrefab = gameObject;
 			break;

+ 2 - 14
Assembly-CSharp/SceneEdit.cs

@@ -3140,13 +3140,7 @@ public class SceneEdit : MonoBehaviour
 		{
 			get
 			{
-				if (LocalizationManager.CurrentLanguageCode == "ja")
-				{
-					return this.m_strMenuName;
-				}
-				string str = "parts/" + this.m_strCateName + "/" + Path.GetFileNameWithoutExtension(this.m_strMenuFileName).ToLower();
-				string translation = LocalizationManager.GetTranslation(str + "|name", true, 0, true, false, null, null);
-				return (!string.IsNullOrEmpty(translation)) ? translation.Replace("《改行》", "\n") : this.m_strMenuName;
+				return this.m_strMenuName;
 			}
 		}
 
@@ -3154,13 +3148,7 @@ public class SceneEdit : MonoBehaviour
 		{
 			get
 			{
-				if (LocalizationManager.CurrentLanguageCode == "ja")
-				{
-					return this.m_strInfo;
-				}
-				string str = "parts/" + this.m_strCateName + "/" + Path.GetFileNameWithoutExtension(this.m_strMenuFileName).ToLower();
-				string translation = LocalizationManager.GetTranslation(str + "|info", true, 0, true, false, null, null);
-				return (!string.IsNullOrEmpty(translation)) ? translation.Replace("《改行》", "\n") : this.m_strInfo;
+				return this.m_strInfo;
 			}
 		}
 

+ 1 - 1
Assembly-CSharp/SceneWarning.cs

@@ -5,7 +5,7 @@ public class SceneWarning : MonoBehaviour
 {
 	private void Awake()
 	{
-		string name = "Warning_eng_try";
+		string name = "Warning";
 		GameObject gameObject = GameObject.Find("UI Root");
 		gameObject.transform.Find(name).gameObject.SetActive(true);
 	}

+ 38 - 13
Assembly-CSharp/SystemShortcut.cs

@@ -75,9 +75,17 @@ public class SystemShortcut : MonoBehaviour
 		this.m_spriteExplanation.gameObject.SetActive(false);
 		this.dicBGSizeType.Add(SystemShortcut.BGSizeType.Long, 380);
 		this.dicBGSizeType.Add(SystemShortcut.BGSizeType.Short, 340);
-		int width = this.dicBGSizeType[SystemShortcut.BGSizeType.Short];
-		GameObject childObject = UTY.GetChildObject(base.gameObject, this.m_aryObjPath[6], false);
-		childObject.SetActive(false);
+		int width;
+		if (GameMain.Instance.CMSystem.NetUse)
+		{
+			width = this.dicBGSizeType[SystemShortcut.BGSizeType.Long];
+		}
+		else
+		{
+			width = this.dicBGSizeType[SystemShortcut.BGSizeType.Short];
+			GameObject childObject = UTY.GetChildObject(base.gameObject, this.m_aryObjPath[6], false);
+			childObject.SetActive(false);
+		}
 		this.m_uiBase.width = width;
 		Vector2 vector = new Vector2(700f, 110f);
 		this.m_hitArea.size = new Vector3((float)this.m_uiBase.width + vector.x, (float)this.m_uiBase.height + vector.y, 0f);
@@ -223,11 +231,11 @@ public class SystemShortcut : MonoBehaviour
 		{
 			return;
 		}
-		string text = "カスタムメイド3D 2";
-		string translation = LocalizationManager.GetTranslation("System/カスタムオーダーメイド3D 2", true, 0, true, false, null, null);
-		string text2 = string.Concat(new string[]
+		string text = "カスタムオーダーメイド3D 2";
+		string text2 = "カスタムメイド3D 2";
+		string text3 = string.Concat(new string[]
 		{
-			translation,
+			text,
 			"\nVersion ",
 			GameUty.GetGameVersionText(),
 			" (BuildVersion : ",
@@ -236,17 +244,17 @@ public class SystemShortcut : MonoBehaviour
 		});
 		if (!string.IsNullOrEmpty(GameMain.Instance.CMSystem.CM3D2Path))
 		{
-			string text3 = text2;
-			text2 = string.Concat(new string[]
+			string text4 = text3;
+			text3 = string.Concat(new string[]
 			{
-				text3,
+				text4,
 				"\n",
-				text,
+				text2,
 				"\nVersion ",
 				GameUty.GetLegacyGameVersionText()
 			});
 		}
-		GameMain.Instance.SysDlg.Show(text2, SystemDialog.TYPE.OK, new SystemDialog.OnClick(this.OnCancel), null);
+		GameMain.Instance.SysDlg.Show(text3, SystemDialog.TYPE.OK, new SystemDialog.OnClick(this.OnCancel), null);
 		this.BaseClose();
 	}
 
@@ -329,6 +337,9 @@ public class SystemShortcut : MonoBehaviour
 
 	private void OnClick_VRAvatar()
 	{
+		ControllerShortcutWindow controllerShortcutWindow = OvrIK.CreateUI();
+		controllerShortcutWindow.Open();
+		this.BaseClose();
 	}
 
 	private void OnClick_VRConfig()
@@ -537,7 +548,21 @@ public class SystemShortcut : MonoBehaviour
 		{
 			return;
 		}
-		childObject.SetActive(false);
+		GameMain.VRDeviceType vrdeviceTypeID = GameMain.Instance.VRDeviceTypeID;
+		if (vrdeviceTypeID != GameMain.VRDeviceType.VIVE && vrdeviceTypeID != GameMain.VRDeviceType.RIFT_TOUCH)
+		{
+			childObject.SetActive(false);
+			return;
+		}
+		string nowSceneName = GameMain.Instance.GetNowSceneName();
+		if (string.IsNullOrEmpty(nowSceneName) || GameMain.Instance.CMSystem.SConfig.OvrIkAllSceneEnable || nowSceneName == "SceneEdit" || nowSceneName == "ScenePhotoMode" || nowSceneName.IndexOf("SceneDance_") == 0)
+		{
+			childObject.SetActive(true);
+		}
+		else
+		{
+			childObject.SetActive(false);
+		}
 	}
 
 	private string[] m_aryObjPath = new string[]

+ 2 - 10
Assembly-CSharp/TatooAlphaWindow.cs

@@ -1,7 +1,5 @@
 using System;
 using System.Collections.Generic;
-using System.IO;
-using I2.Loc;
 using UnityEngine;
 
 public class TatooAlphaWindow : BasePhotoWindow
@@ -102,14 +100,8 @@ public class TatooAlphaWindow : BasePhotoWindow
 									sb.fTexMulAlpha = rids.alpha;
 								}
 							}
-							string f_name = smenuItem.m_strMenuName;
-							if (LocalizationManager.CurrentLanguageCode != "ja")
-							{
-								string str = "parts/" + smenuItem.m_strCateName + "/" + Path.GetFileNameWithoutExtension(smenuItem.m_strMenuFileName).ToLower();
-								string translation = LocalizationManager.GetTranslation(str + "|name", true, 0, true, false, null, null);
-								f_name = ((!string.IsNullOrEmpty(translation)) ? translation.Replace("《改行》", "\n") : smenuItem.m_strMenuName);
-							}
-							this.m_listSliders.Add(new TatooAlphaWindow.EditAlpha(gameObject, SceneEdit.Instance.NowMPN, j, f_name, sb.fTexMulAlpha, SceneEdit.Instance.maid));
+							string strMenuName = smenuItem.m_strMenuName;
+							this.m_listSliders.Add(new TatooAlphaWindow.EditAlpha(gameObject, SceneEdit.Instance.NowMPN, j, strMenuName, sb.fTexMulAlpha, SceneEdit.Instance.maid));
 						}
 					}
 				}

+ 27 - 38
Assembly-CSharp/TitleCtrl.cs

@@ -26,32 +26,24 @@ public class TitleCtrl : MonoBehaviour
 				GameObject childObject = UTY.GetChildObject(goTitlePanel, "ButtonGroup/" + text + "Group/" + text, false);
 				if (buttonType == TitleMgr.ButtonType.Shop)
 				{
-					childObject.SetActive(false);
-				}
-				else if (buttonType == TitleMgr.ButtonType.Guest)
-				{
-					num += -61;
-					childObject.SetActive(false);
-				}
-				else if (buttonType == TitleMgr.ButtonType.Continue)
-				{
-					num += -61;
-					childObject.SetActive(false);
-				}
-				else
-				{
-					Vector3 localPosition = childObject.transform.localPosition;
-					childObject.transform.localPosition = new Vector3(localPosition.x, localPosition.y - (float)num, localPosition.z);
-					childObject.AddComponent<TitleMouseOver>();
-					UIButton component = childObject.GetComponent<UIButton>();
-					EventDelegate.Add(component.onClick, new EventDelegate.Callback(BaseMgr<TitleMgr>.Instance.ClickButton));
-					GameObject childObject2 = UTY.GetChildObject(childObject, "SelectCursor", false);
-					titleButton.selectCursor = childObject2;
-					titleButton.name = buttonType;
-					titleButton.active = false;
-					this.m_dicTitleButton.Add(titleButton.name, titleButton);
-					this.m_listButton.Add(UTY.GetChildObject(goTitlePanel, "ButtonGroup/" + text + "Group", false));
+					if (!GameMain.Instance.CMSystem.NetUse)
+					{
+						childObject.SetActive(false);
+						continue;
+					}
+					childObject.SetActive(true);
 				}
+				Vector3 localPosition = childObject.transform.localPosition;
+				childObject.transform.localPosition = new Vector3(localPosition.x, localPosition.y - (float)num, localPosition.z);
+				childObject.AddComponent<TitleMouseOver>();
+				UIButton component = childObject.GetComponent<UIButton>();
+				EventDelegate.Add(component.onClick, new EventDelegate.Callback(BaseMgr<TitleMgr>.Instance.ClickButton));
+				GameObject childObject2 = UTY.GetChildObject(childObject, "SelectCursor", false);
+				titleButton.selectCursor = childObject2;
+				titleButton.name = buttonType;
+				titleButton.active = false;
+				this.m_dicTitleButton.Add(titleButton.name, titleButton);
+				this.m_listButton.Add(UTY.GetChildObject(goTitlePanel, "ButtonGroup/" + text + "Group", false));
 			}
 		}
 		finally
@@ -75,21 +67,18 @@ public class TitleCtrl : MonoBehaviour
 			{
 				object obj = enumerator.Current;
 				TitleMgr.ButtonType buttonType = (TitleMgr.ButtonType)obj;
-				if (buttonType != TitleMgr.ButtonType.Continue && buttonType != TitleMgr.ButtonType.Shop && buttonType != TitleMgr.ButtonType.Guest)
+				if (buttonType != TitleMgr.ButtonType.Shop || GameMain.Instance.CMSystem.NetUse)
 				{
-					if (buttonType != TitleMgr.ButtonType.Shop || GameMain.Instance.CMSystem.NetUse)
+					if (activeButton == buttonType)
+					{
+						this.m_dicTitleButton[buttonType].active = true;
+						this.m_dicTitleButton[buttonType].selectCursor.SetActive(true);
+						BaseMgr<TitleMgr>.Instance.m_currentActiveButton = activeButton;
+					}
+					else
 					{
-						if (activeButton == buttonType)
-						{
-							this.m_dicTitleButton[buttonType].active = true;
-							this.m_dicTitleButton[buttonType].selectCursor.SetActive(true);
-							BaseMgr<TitleMgr>.Instance.m_currentActiveButton = activeButton;
-						}
-						else
-						{
-							this.m_dicTitleButton[buttonType].active = false;
-							this.m_dicTitleButton[buttonType].selectCursor.SetActive(false);
-						}
+						this.m_dicTitleButton[buttonType].active = false;
+						this.m_dicTitleButton[buttonType].selectCursor.SetActive(false);
 					}
 				}
 			}

+ 451 - 0
Assembly-CSharp/VRFaceShortcutConfig.cs

@@ -1,9 +1,224 @@
 using System;
+using System.Collections.Generic;
 using Kasizuki;
 using UnityEngine;
 
 public class VRFaceShortcutConfig : MonoBehaviour
 {
+	public void CacheItemTemplate<T>(string path) where T : VRFaceShortcutConfig.Item
+	{
+		Transform childObject = VRFaceShortcutConfig.GetChildObject<Transform>(this.m_Grid.gameObject, path);
+		T t = childObject.gameObject.AddComponent<T>();
+		Type typeFromHandle = typeof(T);
+		this.m_ItemTemplateList.Add(typeFromHandle, t);
+		childObject.gameObject.SetActive(false);
+	}
+
+	public T CreateItem<T>(string itemLabel) where T : VRFaceShortcutConfig.Item
+	{
+		if (this.m_ItemDic.ContainsKey(itemLabel))
+		{
+			string message = "[VRFaceShortcutConfig] 既に「" + itemLabel + "」という項目が存在しています";
+			Debug.LogError(message);
+			NDebug.Assert(message, false);
+		}
+		VRFaceShortcutConfig.Item item;
+		if (!this.m_ItemTemplateList.TryGetValue(typeof(T), out item))
+		{
+			string message2 = "[VRFaceShortcutConfig] " + typeof(T).ToString() + "型のUI項目はキャッシュされていません";
+			Debug.LogError(message2);
+			NDebug.Assert(message2, false);
+		}
+		GameObject gameObject = UnityEngine.Object.Instantiate<GameObject>(item.gameObject);
+		gameObject.transform.SetParent(this.m_Grid.transform, false);
+		T component = gameObject.GetComponent<T>();
+		component.gameObject.SetActive(true);
+		component.label.text = itemLabel;
+		this.m_ItemDic.Add(itemLabel, component);
+		return component;
+	}
+
+	private void Awake()
+	{
+		this.CacheItemTemplate<VRFaceShortcutConfig.ItemSlider>("temp slider");
+		this.CacheItemTemplate<VRFaceShortcutConfig.ItemSelectButton>("temp select");
+		this.CreateDefaultItems();
+		this.CreateViveItems();
+		NGUIWindow fadeWindowThis = this.m_FadeWindowThis;
+		fadeWindowThis.OnClose = (Action)Delegate.Combine(fadeWindowThis.OnClose, new Action(delegate()
+		{
+			ControllerShortcutSettingData.config.Write();
+		}));
+	}
+
+	private void CreateDefaultItems()
+	{
+		OVRLipSync.VariableData variable = GameMain.Instance.LipSyncMgr.Variable;
+		VRFaceShortcutConfig.ItemSlider itemSlider = this.CreateItem<VRFaceShortcutConfig.ItemSlider>("リップシンク:マイク感度");
+		itemSlider.min = 0f;
+		itemSlider.max = 10f;
+		itemSlider.Set(variable.MicSensitivity);
+		itemSlider.onValueChanged = delegate(float value)
+		{
+			GameMain.Instance.LipSyncMgr.Variable.MicSensitivity = value;
+		};
+		itemSlider = this.CreateItem<VRFaceShortcutConfig.ItemSlider>("リップシンク:自分の声の大きさ");
+		itemSlider.min = 0f;
+		itemSlider.max = 10f;
+		itemSlider.Set(variable.MicVolume);
+		itemSlider.onValueChanged = delegate(float value)
+		{
+			GameMain.Instance.LipSyncMgr.Variable.MicVolume = value;
+		};
+		VRFaceShortcutConfig.ItemSelectButton itemSelectButton = this.CreateItem<VRFaceShortcutConfig.ItemSelectButton>("リップシンク:ミュートにする");
+		itemSelectButton.textLeft.text = "ON";
+		itemSelectButton.textRight.text = "OFF";
+		itemSelectButton.Set(variable.Mute);
+		itemSelectButton.onClickIsLeft = delegate(bool isLeft)
+		{
+			variable.Mute = isLeft;
+		};
+		itemSelectButton = this.CreateItem<VRFaceShortcutConfig.ItemSelectButton>("手元ショートカット:表情の変化");
+		itemSelectButton.textLeft.text = "即座に変更する";
+		itemSelectButton.textRight.text = "選択して決定する";
+		itemSelectButton.Set(ControllerShortcutSettingData.config.isDirectMode);
+		itemSelectButton.onClickIsLeft = delegate(bool isLeft)
+		{
+			ControllerShortcutSettingData.config.isDirectMode = isLeft;
+		};
+		itemSelectButton = this.CreateItem<VRFaceShortcutConfig.ItemSelectButton>("手元ショートカット:手元のUI");
+		itemSelectButton.textLeft.text = "常に表示する";
+		itemSelectButton.textRight.text = "決定時に隠す";
+		itemSelectButton.Set(ControllerShortcutSettingData.config.isEveryShowMode);
+		itemSelectButton.onClickIsLeft = delegate(bool isLeft)
+		{
+			ControllerShortcutSettingData.config.isEveryShowMode = isLeft;
+		};
+		itemSlider = this.CreateItem<VRFaceShortcutConfig.ItemSlider>("体向きの頭への追従");
+		itemSlider.min = 0f;
+		itemSlider.max = 1f;
+		itemSlider.Set(ControllerShortcutSettingData.config.maintainPelvisPosition);
+		itemSlider.onValueChanged = delegate(float value)
+		{
+			ControllerShortcutSettingData.config.maintainPelvisPosition = value;
+		};
+		itemSlider = this.CreateItem<VRFaceShortcutConfig.ItemSlider>("体位置の頭への追従");
+		itemSlider.min = 0f;
+		itemSlider.max = 1f;
+		itemSlider.Set(ControllerShortcutSettingData.config.bodyPosStiffness);
+		itemSlider.onValueChanged = delegate(float value)
+		{
+			ControllerShortcutSettingData.config.bodyPosStiffness = value;
+		};
+		itemSlider = this.CreateItem<VRFaceShortcutConfig.ItemSlider>("体回転の頭への追従");
+		itemSlider.min = 0f;
+		itemSlider.max = 1f;
+		itemSlider.Set(ControllerShortcutSettingData.config.bodyRotStiffness);
+		itemSlider.onValueChanged = delegate(float value)
+		{
+			ControllerShortcutSettingData.config.bodyRotStiffness = value;
+		};
+		itemSlider = this.CreateItem<VRFaceShortcutConfig.ItemSlider>("胸部回転の頭への追従");
+		itemSlider.min = 0f;
+		itemSlider.max = 1f;
+		itemSlider.Set(ControllerShortcutSettingData.config.chestRotationWeight);
+		itemSlider.onValueChanged = delegate(float value)
+		{
+			ControllerShortcutSettingData.config.chestRotationWeight = value;
+		};
+		itemSlider = this.CreateItem<VRFaceShortcutConfig.ItemSlider>("カメラの画角");
+		itemSlider.min = 0f;
+		itemSlider.max = 1f;
+		itemSlider.Set(ControllerShortcutSettingData.config.selfCameraFOV);
+		itemSlider.onValueChanged = delegate(float value)
+		{
+			ControllerShortcutSettingData.config.selfCameraFOV = value;
+		};
+	}
+
+	private void CreateViveItems()
+	{
+		if (GameMain.Instance.VRDeviceTypeID != GameMain.VRDeviceType.VIVE)
+		{
+			return;
+		}
+		VRFaceShortcutConfig.ItemSelectButton itemSelectButton = this.CreateItem<VRFaceShortcutConfig.ItemSelectButton>("一番上にあるトラッカーを\n頭トラッキングに利用");
+		itemSelectButton.textLeft.text = "ON";
+		itemSelectButton.textRight.text = "OFF";
+		itemSelectButton.Set(ControllerShortcutSettingData.config.use1TrackerForHead);
+		itemSelectButton.onClickIsLeft = delegate(bool isLeft)
+		{
+			ControllerShortcutSettingData.config.use1TrackerForHead = isLeft;
+			this.SetActiveItem("2つめと3つめのトラッカーを\n足トラッキングに利用", isLeft, false);
+			this.SetActiveItem("1つめと2つめのトラッカーを\n足トラッキングに利用", !isLeft, false);
+		};
+	}
+
+	private void SetActiveItem(string itemKey, bool isActive, bool isEnableError = true)
+	{
+		VRFaceShortcutConfig.Item item;
+		if (!this.m_ItemDic.TryGetValue(itemKey, out item))
+		{
+			if (isEnableError)
+			{
+				string message = "[VRFaceShortcutConfig] コンフィグ項目に「" + itemKey + "」は存在しません";
+				Debug.LogError(message);
+				NDebug.Assert(message, false);
+			}
+			return;
+		}
+		if (item.gameObject.activeSelf != isActive)
+		{
+			item.gameObject.SetActive(isActive);
+			this.m_IsUpdateReposition = true;
+		}
+	}
+
+	private void LateUpdate()
+	{
+		if (this.m_IsUpdateReposition)
+		{
+			this.m_IsUpdateReposition = false;
+			this.m_Grid.Reposition();
+			this.m_ScrollView.UpdatePosition();
+		}
+	}
+
+	private static T GetChildObject<T>(GameObject gameObject, string path)
+	{
+		GameObject childObject = UTY.GetChildObject(gameObject, path, false);
+		if (childObject == null)
+		{
+			string message = string.Concat(new string[]
+			{
+				"[VRFaceShortcutConfig] ",
+				gameObject.name,
+				"/",
+				path,
+				"が見つかりませんでした"
+			});
+			NDebug.Assert(message, false);
+			Debug.LogError(message);
+		}
+		T component = childObject.GetComponent<T>();
+		if (component == null)
+		{
+			string message2 = string.Concat(new object[]
+			{
+				"[VRFaceShortcutConfig] ",
+				gameObject.name,
+				"/",
+				path,
+				"に、\n",
+				typeof(T),
+				"のコンポーネントがありませんでした"
+			});
+			NDebug.Assert(message2, false);
+			Debug.LogError(message2);
+		}
+		return component;
+	}
+
 	[SerializeField]
 	[Range(0.001f, 1f)]
 	private float m_FadeSpeed = 0.25f;
@@ -16,4 +231,240 @@ public class VRFaceShortcutConfig : MonoBehaviour
 
 	[SerializeField]
 	private UIGrid m_Grid;
+
+	private Dictionary<Type, VRFaceShortcutConfig.Item> m_ItemTemplateList = new Dictionary<Type, VRFaceShortcutConfig.Item>();
+
+	private Dictionary<string, VRFaceShortcutConfig.Item> m_ItemDic = new Dictionary<string, VRFaceShortcutConfig.Item>();
+
+	private bool m_IsUpdateReposition;
+
+	public abstract class Item : MonoBehaviour
+	{
+		public UILabel label
+		{
+			get
+			{
+				return this.m_Label;
+			}
+			set
+			{
+				this.m_Label = value;
+			}
+		}
+
+		protected virtual void Awake()
+		{
+			this.m_Label = VRFaceShortcutConfig.GetChildObject<UILabel>(base.gameObject, "name");
+		}
+
+		public abstract void Set(object value);
+
+		private UILabel m_Label;
+	}
+
+	public class ItemSlider : VRFaceShortcutConfig.Item
+	{
+		public UISlider slider
+		{
+			get
+			{
+				return this.m_Slider;
+			}
+			private set
+			{
+				this.m_Slider = value;
+			}
+		}
+
+		public float normalizedValue
+		{
+			get
+			{
+				return this.slider.value;
+			}
+			set
+			{
+				this.slider.value = value;
+			}
+		}
+
+		public float min
+		{
+			get
+			{
+				return this.m_Min;
+			}
+			set
+			{
+				this.m_Min = value;
+			}
+		}
+
+		public float max
+		{
+			get
+			{
+				return this.m_Max;
+			}
+			set
+			{
+				this.m_Max = value;
+			}
+		}
+
+		public float value
+		{
+			get
+			{
+				return Mathf.Lerp(this.min, this.max, this.normalizedValue);
+			}
+			set
+			{
+				this.normalizedValue = Mathf.InverseLerp(this.min, this.max, value);
+			}
+		}
+
+		public Action<float> onValueChanged { get; set; }
+
+		public Action onDragFinished { get; set; }
+
+		protected override void Awake()
+		{
+			base.Awake();
+			this.slider = VRFaceShortcutConfig.GetChildObject<UISlider>(base.gameObject, "slider");
+			EventDelegate.Add(this.slider.onChange, delegate()
+			{
+				if (this.onValueChanged != null)
+				{
+					this.onValueChanged(this.value);
+				}
+			});
+			UISlider slider = this.slider;
+			slider.onDragFinished = (UIProgressBar.OnDragFinished)Delegate.Combine(slider.onDragFinished, new UIProgressBar.OnDragFinished(delegate()
+			{
+				if (this.onDragFinished != null)
+				{
+					this.onDragFinished();
+				}
+			}));
+		}
+
+		public override void Set(object value)
+		{
+			this.value = (float)value;
+		}
+
+		private UISlider m_Slider;
+
+		private float m_Min;
+
+		private float m_Max = 1f;
+	}
+
+	public class ItemSelectButton : VRFaceShortcutConfig.Item
+	{
+		public UIButton buttonRight
+		{
+			get
+			{
+				return this.m_ButtonRight;
+			}
+			private set
+			{
+				this.m_ButtonRight = value;
+			}
+		}
+
+		public UIButton buttonLeft
+		{
+			get
+			{
+				return this.m_ButtonLeft;
+			}
+			private set
+			{
+				this.m_ButtonLeft = value;
+			}
+		}
+
+		public UILabel textRight
+		{
+			get
+			{
+				return this.m_TextRight;
+			}
+			private set
+			{
+				this.m_TextRight = value;
+			}
+		}
+
+		public UILabel textLeft
+		{
+			get
+			{
+				return this.m_TextLeft;
+			}
+			private set
+			{
+				this.m_TextLeft = value;
+			}
+		}
+
+		public Action<bool> onClickIsLeft { get; set; }
+
+		protected override void Awake()
+		{
+			base.Awake();
+			this.buttonRight = VRFaceShortcutConfig.GetChildObject<UIButton>(base.gameObject, "button right");
+			this.buttonLeft = VRFaceShortcutConfig.GetChildObject<UIButton>(base.gameObject, "button left");
+			this.textRight = this.buttonRight.GetComponentInChildren<UILabel>();
+			this.textLeft = this.buttonLeft.GetComponentInChildren<UILabel>();
+			EventDelegate.Add(this.buttonRight.onClick, delegate()
+			{
+				if (this.onClickIsLeft != null)
+				{
+					this.onClickIsLeft(false);
+				}
+				this.OnClickButton(false);
+			});
+			EventDelegate.Add(this.buttonLeft.onClick, delegate()
+			{
+				if (this.onClickIsLeft != null)
+				{
+					this.onClickIsLeft(true);
+				}
+				this.OnClickButton(true);
+			});
+		}
+
+		private void OnClickButton(bool isLeft)
+		{
+			this.buttonLeft.defaultColor = ((!isLeft) ? VRFaceShortcutConfig.ItemSelectButton.ButtonDefaultColor : VRFaceShortcutConfig.ItemSelectButton.ButtonClickedColor);
+			this.buttonRight.defaultColor = (isLeft ? VRFaceShortcutConfig.ItemSelectButton.ButtonDefaultColor : VRFaceShortcutConfig.ItemSelectButton.ButtonClickedColor);
+		}
+
+		public void Emulate(bool isLeft)
+		{
+			UIButton uibutton = (!isLeft) ? this.buttonRight : this.buttonLeft;
+			EventDelegate.Execute(uibutton.onClick);
+		}
+
+		public override void Set(object value)
+		{
+			this.Emulate((bool)value);
+		}
+
+		private static Color ButtonDefaultColor = new Color(1f, 1f, 1f, 0.5f);
+
+		private static Color ButtonClickedColor = Color.white;
+
+		private UIButton m_ButtonRight;
+
+		private UIButton m_ButtonLeft;
+
+		private UILabel m_TextRight;
+
+		private UILabel m_TextLeft;
+	}
 }

+ 12 - 5
Assembly-CSharp/YotogiCommandFactory.cs

@@ -1,7 +1,6 @@
 using System;
 using System.Collections.Generic;
 using System.Runtime.CompilerServices;
-using I2.Loc;
 using UnityEngine;
 using wf;
 using Yotogis;
@@ -158,10 +157,18 @@ public class YotogiCommandFactory : MonoBehaviour
 
 	private void OnHoverOver(YotogiCommandFactory.Command.Children data)
 	{
+		if (this.exec_condition_call_back_ != null)
+		{
+			this.exec_condition_call_back_(data.this_object, data.data, true);
+		}
 	}
 
 	private void OnHoverOut(YotogiCommandFactory.Command.Children data)
 	{
+		if (this.exec_condition_call_back_ != null)
+		{
+			this.exec_condition_call_back_(data.this_object, data.data, false);
+		}
 	}
 
 	public void ClearSkillCommand()
@@ -290,7 +297,7 @@ public class YotogiCommandFactory : MonoBehaviour
 			name = string.Empty;
 		}
 		GameObject gameObject = Utility.CreatePrefab(this.HiddenTree, "SceneYotogi/Yotogi/Prefab/CommandCategoryTitle", true);
-		gameObject.GetComponent<Localize>().SetTerm(name);
+		gameObject.GetComponent<UILabel>().text = name;
 		gameObject.name = "-" + name;
 		Vector3 localPosition = gameObject.transform.localPosition;
 		localPosition.z = (float)id;
@@ -305,7 +312,7 @@ public class YotogiCommandFactory : MonoBehaviour
 			name = string.Empty;
 		}
 		GameObject gameObject = Utility.CreatePrefab(this.HiddenTree, "SceneYotogi/Yotogi/Prefab/Command", true);
-		UTY.GetChildObject(gameObject, "Name", false).GetComponent<Localize>().SetTerm(name);
+		UTY.GetChildObject(gameObject, "Name", false).GetComponent<UILabel>().text = name;
 		gameObject.name = "cm:" + name;
 		Vector3 localPosition = gameObject.transform.localPosition;
 		localPosition.z = (float)id;
@@ -344,12 +351,12 @@ public class YotogiCommandFactory : MonoBehaviour
 
 	private string GetGroupName(Skill.Data.Command.Data.Basic commandDataBasic)
 	{
-		return commandDataBasic.termGroupName;
+		return commandDataBasic.group_name;
 	}
 
 	private string GetCommandName(Skill.Data.Command.Data.Basic commandDataBasic)
 	{
-		return commandDataBasic.termName;
+		return commandDataBasic.name;
 	}
 
 	public GameObject HiddenTree;

+ 0 - 2
Assembly-CSharp/YotogiCommandMenuOVR.cs

@@ -1,7 +1,6 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
-using I2.Loc;
 using UnityEngine;
 using UnityEngine.UI;
 using wf;
@@ -72,7 +71,6 @@ public class YotogiCommandMenuOVR : MonoBehaviour
 			RectTransform rectTransform = UnityEngine.Object.Instantiate<RectTransform>(this.clone_src_);
 			rectTransform.SetParent(this.command_panel_, false);
 			rectTransform.GetComponent<Text>().text = data.basic.name;
-			rectTransform.GetComponent<Localize>().SetTerm(data.basic.termName);
 			rectTransform.gameObject.SetActive(false);
 			this.command_dic_.Add(data, rectTransform);
 		}

+ 0 - 32
Assembly-CSharp/YotogiPlayManager.cs

@@ -298,21 +298,6 @@ public class YotogiPlayManager : WfScreenChildren
 	public override void Update()
 	{
 		base.Update();
-		if (0f < this.message_display_time_)
-		{
-			if (this.message_display_time_ <= Time.time)
-			{
-				this.message_display_time_ = 0f;
-			}
-			if (this.subtitlesManager != null)
-			{
-				this.subtitlesManager.visible = true;
-			}
-		}
-		else if (this.subtitlesManager != null)
-		{
-			this.subtitlesManager.visible = false;
-		}
 		if (GameMain.Instance.CMSystem.ManAlpha != this.setting_man_alpha_)
 		{
 			this.man_alpha_slider_.value = (float)GameMain.Instance.CMSystem.ManAlpha / 100f;
@@ -594,22 +579,10 @@ public class YotogiPlayManager : WfScreenChildren
 
 	public void SetMessageText(string text)
 	{
-		if (this.subtitlesManager != null)
-		{
-			this.subtitlesManager.SetTextFromScriptStyle(text);
-		}
 	}
 
 	public void SetMessageTextDisplayTime(int time)
 	{
-		if (0 < time)
-		{
-			this.message_display_time_ = Time.time + (float)time / 1000f;
-		}
-		else
-		{
-			this.message_display_time_ = 0f;
-		}
 	}
 
 	public void SetRepeatVoiceFile(string file_name, int maid_no)
@@ -629,11 +602,6 @@ public class YotogiPlayManager : WfScreenChildren
 
 	public void AddRepeatVoiceText(string text)
 	{
-		if (0 < this.repeat_voice_data_list_.Count)
-		{
-			YotogiPlayManager.RepeatVoiceData repeatVoiceData = this.repeat_voice_data_list_[this.repeat_voice_data_list_.Count - 1];
-			repeatVoiceData.text = text;
-		}
 	}
 
 	public void ClearRepeatVoiceData()

+ 4 - 5
Assembly-CSharp/YotogiResultManager.cs

@@ -134,11 +134,10 @@ public class YotogiResultManager : WfScreenChildren
 		this.acquired_class_parent_.Reposition();
 		this.acquired_attribute_parent_.Reposition();
 		this.skill_unit_parent_.Reposition();
-		UTY.GetChildObject(base.root_obj, "wall", false).SetActive(true);
-		base.SetFadeTime(0f);
-		base.SetCallInFadeWaitFrame(100000);
-		base.SetFadeStatus(WfScreenChildren.FadeStatus.Wait);
-		this.OnClickNext();
+		this.StartAnime();
+		GameMain.Instance.CharacterMgr.status.CheckTrophyMaidStatus(this.maid_);
+		this.acquired_class_parent_.Reposition();
+		Utility.ResetNGUI(UTY.GetChildObject(this.acquired_class_parent_.transform.parent.parent.gameObject, "Contents", false).GetComponent<UIScrollView>());
 	}
 
 	public void Clear()

+ 0 - 7
Assembly-CSharp/YotogiSkillContainerViewer.cs

@@ -1,6 +1,5 @@
 using System;
 using System.Collections;
-using I2.Loc;
 using UnityEngine;
 using wf;
 using Yotogis;
@@ -374,12 +373,6 @@ public class YotogiSkillContainerViewer
 				{
 					this.skill_name_label_.text = this.skill_data_.name;
 				}
-				string translation = LocalizationManager.GetTranslation(this.skill_data_.termName, true, 0, true, false, null, null);
-				if (!string.IsNullOrEmpty(translation))
-				{
-					string str = (!this.lock_skill_exp) ? string.Empty : LocalizationManager.GetTranslation("SceneYotogi/(EXPロック)", true, 0, true, false, null, null);
-					this.skill_name_label_.text = translation + str;
-				}
 				this.skill_name_label_.width = 0;
 				this.skill_name_label_.MakePixelPerfect();
 				this.skill_name_bg_.width = this.skill_name_label_.width + 20;

+ 1 - 0
Assembly-CSharp/YotogiSkillUnit.cs

@@ -221,6 +221,7 @@ public class YotogiSkillUnit : MonoBehaviour
 		}
 		this.conditionList.SetTexts(this.conditionDatas_, -1);
 		this.conditionBG.height = 90 + this.conditionList.height;
+		this.conditionsObject.SetActive(true);
 	}
 
 	private void OnHoverOutItem()

+ 0 - 2
Assembly-CSharp/YotogiStageUnit.cs

@@ -1,6 +1,5 @@
 using System;
 using System.Collections.Generic;
-using I2.Loc;
 using UnityEngine;
 
 public class YotogiStageUnit : MonoBehaviour
@@ -43,7 +42,6 @@ public class YotogiStageUnit : MonoBehaviour
 		if (enabled)
 		{
 			this.name_label_.text = this.stage_data_.drawName;
-			this.name_label_.GetComponent<Localize>().SetTerm(stage_data.termName);
 		}
 		else
 		{

+ 22 - 3
Assembly-CSharp/uGUITutorialPanel.cs

@@ -60,11 +60,30 @@ public class uGUITutorialPanel : MonoBehaviour
 			}
 			return;
 		}
-		GameMain.Instance.SysShortcut.helpButtonInteractable = false;
-		if (closeCallback != null)
+		if (!absoluteCall && uGUITutorialPanel.IsTutorialPassed(sceneName))
 		{
-			closeCallback();
+			Debug.Log("既に通過しているチュートリアルだったので、チュートリアル用UIは表示しません。\n終了時のコールバックを実行します。");
+			if (closeCallback != null)
+			{
+				closeCallback();
+			}
+			return;
+		}
+		string path = "SceneTutorial/Canvas Tutorial Panel";
+		GameObject gameObject = Resources.Load<GameObject>(path);
+		if (!gameObject)
+		{
+			NDebug.Warning("チュートリアルパネルのプレハブが見つかりませんでした。\n終了時のコールバックを実行します。");
+			if (closeCallback != null)
+			{
+				closeCallback();
+			}
+			return;
 		}
+		GameObject gameObject2 = UnityEngine.Object.Instantiate<GameObject>(gameObject);
+		uGUITutorialPanel.m_Instance = gameObject2.GetComponent<uGUITutorialPanel>();
+		uGUITutorialPanel.m_Instance.Initialize(sceneName, closeCallback);
+		uGUITutorialPanel.SetTutorialFlag(sceneName);
 	}
 
 	public static void CloseTutorial(bool immediate = false, bool enableCallback = true)