using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using System.Text.RegularExpressions; using I2.Loc; using Kasizuki; using MaidStatus; using SceneEditWindow; using UnityEngine; public class SceneEdit : MonoBehaviour { public static SceneEdit Instance { get; private set; } public static bool compatibilityMode { get { return DailyMgr.IsLegacy; } } public CustomViewWindow customViewWindow { get; private set; } public PoseIconWindow pauseIconWindow { get; private set; } public BgIconWindow bgIconWindow { get; private set; } public CustomPartsWindow customPartsWindow { get; private set; } public SceneEdit.ModeType modeType { get; private set; } public int maidPoint { get; set; } public HashSet enabledMpns { get; private set; } public bool m_bUseGroup { get { return GameMain.Instance.CMSystem.EditItemGroup; } set { if (value == GameMain.Instance.CMSystem.EditItemGroup || this.m_Panel_PartsType == null) { return; } GameMain.Instance.CMSystem.EditItemGroup = value; this.UpdateCurrentItemPanel(true); } } public bool m_bUseTouchJump { get { return GameMain.Instance.CMSystem.EditTouchJump; } set { GameMain.Instance.CMSystem.EditTouchJump = value; foreach (CapsuleCollider capsuleCollider in this.touchJumpColliderList) { capsuleCollider.enabled = value; } } } public List CategoryList { get { return this.m_listCategory; } } public EditViewReset viewReset { get { return this.m_viewreset; } } public Maid maid { get { return this.m_maid; } } public bool IsVRComMode { get { return this.m_bVRComMode; } } public MPN NowMPN { get { return this.m_nNowMPN; } } private static string GetParentMenuFileName(SceneEdit.SMenuItem mi) { if ((MPN.wear > mi.m_mpn || mi.m_mpn > MPN.onepiece) && (MPN.set_maidwear > mi.m_mpn || mi.m_mpn > MPN.set_body)) { return string.Empty; } string text = mi.m_strMenuFileName; string result = string.Empty; text = text.ToLower(); int num = text.IndexOf("_z"); if (0 < num) { int num2 = text.IndexOf('_', num + 1); if (num2 == -1) { num2 = text.IndexOf('.', num + 1); } if (0 < num2 - num && 0 < text.Length - num2) { result = text.Substring(0, num) + text.Substring(num2, text.Length - num2); } } return result; } public void Awake() { this.m_cameraMoveSupport = base.gameObject.AddComponent(); SceneEdit.Instance = this; this.modeType = SceneEdit.ModeType.OriginalChara; this.enabledMpns = new HashSet(); Dictionary tag_backup = GameMain.Instance.ScriptMgr.adv_kag.tag_backup; string a; if (tag_backup != null && tag_backup.TryGetValue("name", out a) && a == "SceneEdit") { string strScriptArg; if (tag_backup.TryGetValue("label", out strScriptArg)) { this.m_strScriptArg = strScriptArg; } bool flag = false; if (tag_backup.TryGetValue("original", out strScriptArg)) { this.modeType = SceneEdit.ModeType.OriginalChara; flag = true; } else if (tag_backup.TryGetValue("main", out strScriptArg)) { this.modeType = SceneEdit.ModeType.MainChara; flag = true; } else if (tag_backup.TryGetValue("after", out strScriptArg)) { this.modeType = SceneEdit.ModeType.AfterEdit; flag = true; } else if (tag_backup.TryGetValue("facility_costume", out strScriptArg)) { this.modeType = SceneEdit.ModeType.CostumeEdit; flag = true; } if (!flag) { NDebug.Assert("エディットシーンのモード指定がありませんでした。次のうち必ず一つは指定してください[original|main|after|costume]", false); } if (tag_backup.ContainsKey("vr_mode")) { this.m_bVRComMode = true; } } this.EditItemGroupSwitch.defaultColor = ((!this.m_bUseGroup) ? new Color(0.4f, 0.4f, 0.4f, 0.85f) : Color.white); EventDelegate.Add(this.EditItemGroupSwitch.onClick, new EventDelegate.Callback(this.OnClickEditItemGroup)); this.EditTouchJumpSwitch.defaultColor = ((!this.m_bUseTouchJump) ? new Color(0.4f, 0.4f, 0.4f, 0.85f) : Color.white); EventDelegate.Add(this.EditTouchJumpSwitch.onClick, new EventDelegate.Callback(this.OnClickEditTouchJump)); if (this.modeType == SceneEdit.ModeType.CostumeEdit) { MPN[] facilityCostumeEnableMPN = FacilityDataTable.GetFacilityCostumeEnableMPN(); this.enabledMpns = new HashSet(facilityCostumeEnableMPN); this.EditTouchJumpSwitch.gameObject.SetActive(false); } } private void Start() { this.customViewWindow = this.m_goUIRoot.GetComponentInChildren(); this.pauseIconWindow = this.m_goUIRoot.GetComponentInChildren(); this.pauseIconWindow.onSelectPauseEvent = delegate(PoseIconData.ItemData data) { if (this.customPartsWindowVisibleButton.visible) { this.customPartsWindowVisibleButton.windowVisible = false; } data.ExecScript(); if (this.m_viewreset.GetVisibleAutoCam()) { if (string.IsNullOrEmpty(data.targetBoneName)) { this.CameraReset(0.5f); } else { base.StartCoroutine(this.CoPoseToCam(data.targetBoneName, 0.5f, 0.2f)); } } }; this.bgIconWindow = this.m_goUIRoot.GetComponentInChildren(); this.bgIconWindow.onSelectBgEvent = delegate(BgIconData.ItemData data) { data.Exec(); }; VoiceIconWindow componentInChildren = this.m_goUIRoot.GetComponentInChildren(); componentInChildren.onClickVoiceEvent = delegate(VoiceIconData.ItemData.EmotionType emotionType) { if (this.m_maid == null) { return; } if (this.customPartsWindowVisibleButton.visible) { this.customPartsWindowVisibleButton.windowVisible = false; } VoiceIconData.ItemData.EmotionData emotionData = VoiceIconData.GetEmotionData(this.m_maid, emotionType); emotionData.Apply(this.m_maid); }; PresetSaveWindow componentInChildren2 = this.m_goUIRoot.GetComponentInChildren(); componentInChildren2.onClickPresetSaveEvent = delegate(PresetSaveWindow.SaveType type) { if (this.m_maid == null) { return; } PresetButtonCtrl component = UTY.GetChildObject(this.m_goUIRoot, "PresetButtonPanel", false).GetComponent(); component.PresetSaveType(type); }; UndressWindow componentInChildren3 = this.m_goUIRoot.GetComponentInChildren(); componentInChildren3.onClickUndressEvent = delegate(UndressWindow.UndressType type) { if (this.m_maid == null) { return; } if (type == UndressWindow.UndressType.Dress) { this.ClothesState(SceneEditInfo.ClothesState.Wear); } else if (type == UndressWindow.UndressType.Lingerie) { this.ClothesState(SceneEditInfo.ClothesState.Underwear); } else if (type == UndressWindow.UndressType.Nude) { this.ClothesState(SceneEditInfo.ClothesState.Nude); } }; this.customPartsWindow = this.m_goUIRoot.GetComponentInChildren(); this.customPartsWindowVisibleButton.visible = false; this.colorPaletteMgr.Close(); CharacterMgr.EditModeLookHaveItem = true; GameMain.Instance.CharacterMgr.DeactivateCharaAll(); this.m_maid = GameMain.Instance.CharacterMgr.GetMaid(0); this.maidPoint = GameMain.Instance.CharacterMgr.status.maidPoint; this.m_maid.Visible = true; if (this.m_bVRComMode) { GameMain.Instance.SceneActivate("SceneEdit"); } GameMain.Instance.ScriptMgr.adv_kag.MessageWindowMgr.CloseMessageWindowPanel(); this.m_EditMod = base.gameObject.AddComponent(); if (this.m_goUIRoot == null) { this.m_goUIRoot = GameObject.Find("UI Root"); } NDebug.Assert(this.m_goUIRoot != null, "UI Root がシーン中にありません。"); NDebug.Assert(this.m_listPanel.Count != 0, "UIPanelリストがありません。"); for (int i = 0; i < this.m_listPanel.Count; i++) { if (this.m_listPanel[i] == null) { NDebug.Assert("UIPanelが外れています.", false); } } GameObject childObject = UTY.GetChildObject(this.m_goUIRoot, "Window-ItemInfo", false); childObject.SetActive(true); this.m_info = childObject.GetComponent(); GameObject childObject2 = UTY.GetChildObject(this.m_goUIRoot, "OkCancel", false); childObject2.SetActive(true); this.m_okcancel = childObject2.GetComponent(); this.m_okcancel.SetOnClickCallBack(new EditOkCancel.OnClick(this.OnEditOk), new EditOkCancel.OnClick(this.OnEditCancel)); this.m_okcancel.Show(EditOkCancel.TYPE.OK); GameObject childObject3 = UTY.GetChildObject(this.m_goUIRoot, "ViewReset", false); childObject3.SetActive(true); this.m_viewreset = childObject3.GetComponent(); this.m_viewreset.SetOnClickCallBack(new EditViewReset.OnClick(this.OnClickViewReset), new EditViewReset.OnClick(this.OnClickAutoCam), new EditViewReset.OnClick(this.OnClickEyeToCam)); this.m_viewreset.Show(); this.m_Panel_Category = new SceneEdit.UIPanelSet(this.m_goUIRoot, "ScrollPanel-Category"); this.m_Panel_PartsType = new SceneEdit.UIPanelSet(this.m_goUIRoot, "ScrollPanel-PartsType"); this.m_Panel_MenuItem = new SceneEdit.UIPanelSet(this.m_goUIRoot, "ScrollPanel-MenuItem"); this.m_Panel_SetItem = new SceneEdit.UIPanelSet(this.m_goUIRoot, "ScrollPanel-SetItem"); this.m_Panel_SliderItem = new SceneEdit.UIPanelSet(this.m_goUIRoot, "ScrollPanel-Slider"); this.m_Panel_ColorSet = new SceneEdit.UIPanelSet(this.m_goUIRoot, "ScrollPanel-ColorSet"); this.m_Panel_GroupSet = new SceneEdit.UIPanelSet(this.m_goUIRoot, "ScrollPanel-GroupSet"); this.m_CheckBoxMayuDrawPriority = UTY.GetChildObject(this.m_Panel_ColorSet.goMain, "CheckBoxMayuDrawPriority", false).GetComponent(); this.m_CheckBoxMayuDrawPriority.onClick.Add(delegate(WFCheckBox checkbox) { this.m_maid.MayuDrawPriority = checkbox.check; }); this.m_Panel_Category.SetActive(true); GameObject childObject4 = UTY.GetChildObject(this.m_goUIRoot, "ViewCancel", false); this.m_uipViewCancel = childObject4.GetComponent(); GameObject childObject5 = UTY.GetChildObject(childObject4, "Cancel", false); EventDelegate.Add(childObject5.GetComponentsInChildren(true)[0].onClick, new EventDelegate.Callback(this.FromView)); childObject4.SetActive(false); GameObject childObject6 = UTY.GetChildObject(this.m_goUIRoot, "FFNameDialog", false); this.m_FFNameDlg = childObject6.GetComponent(); this.m_FFNameDlg.Init(); childObject6.SetActive(false); Maid maid = this.m_maid; maid.EyeToCamera(Maid.EyeMoveType.目と顔を向ける, 0f); this.m_viewreset.SetVisibleEyeToCam(true); if (!GameMain.Instance.VRMode) { this.m_viewreset.SetVisibleAutoCam(true); } else { this.m_viewreset.SetVisibleAutoCam(false); } new List { string.Empty }.AddRange(GameUty.PathList); Action action = delegate(string strFileName) { if (!GameUty.FileSystem.IsExistentFile(strFileName)) { return; } using (AFileBase afileBase = GameUty.FileSystem.FileOpen(strFileName)) { using (CsvParser csvParser = new CsvParser()) { bool condition = csvParser.Open(afileBase); NDebug.Assert(condition, strFileName + "\nopen failed."); for (int j = 1; j < csvParser.max_cell_y; j++) { if (csvParser.IsCellToExistData(0, j)) { SceneEdit.VoiceInfo voiceInfo = new SceneEdit.VoiceInfo(); voiceInfo.strIconName = csvParser.GetCellAsString(1, j); string cellAsString = csvParser.GetCellAsString(2, j); voiceInfo.personal = Personal.GetData(cellAsString); voiceInfo.strVoiceFileName = csvParser.GetCellAsString(3, j); voiceInfo.strFace = csvParser.GetCellAsString(4, j); voiceInfo.strFace2 = csvParser.GetCellAsString(5, j); voiceInfo.texIcon = ImportCM.CreateTexture(voiceInfo.strIconName); if (!this.m_dicVoice.ContainsKey(voiceInfo.personal)) { this.m_dicVoice.Add(voiceInfo.personal, new List()); } this.m_dicVoice[voiceInfo.personal].Add(voiceInfo); } } } } }; GameMain.Instance.MainLight.Reset(); GameMain.Instance.MainCamera.Reset(CameraMain.CameraType.Target, true); this.SetCameraOffset(SceneEdit.CAM_OFFS.CENTER); GameMain.Instance.MainCamera.SetTargetPos(new Vector3(-0.05539433f, 0.95894f, 0.1269088f), true); GameMain.Instance.MainCamera.SetDistance(3f, true); GameMain.Instance.MainCamera.SetAroundAngle(new Vector2(-180f, 11.5528f), true); this.m_cameraMoveSupport.SaveCameraPosition(); if (GameMain.Instance.VRMode) { GameMain.Instance.MainCamera.SetPos(new Vector3(0f, 1.4871f, 1f)); GameMain.Instance.MainCamera.SetRotation(new Vector3(0f, -180f, 0f)); if (GameMain.Instance.VRFamily == GameMain.VRFamilyType.FOVE) { FoveEyeRayMgr.m_TargetMaid = this.m_maid; } } GameMain.Instance.SoundMgr.PlayBGM("BGM005.ogg", 1f, true); GameMain.Instance.MainCamera.FadeOut(0f, false, null, true, default(Color)); GameMain.Instance.LoadIcon.NextLoadIcontImmediatelyDisplay(); GameMain.Instance.LoadIcon.force_draw_new = true; this.m_dicColor.Clear(); base.StartCoroutine(this.InitMenuNative()); GameMain.Instance.TutorialPanel.SetImage(TutorialPanel.ImageSet.Edit, false); } private IEnumerator CoLoadWait() { while (GameMain.Instance.CharacterMgr.IsBusy()) { yield return null; } GameMain.Instance.CharacterMgr.ResetCharaPosAll(); if (this.m_bVRComMode) { if (GameMain.Instance.BgMgr.GetBGName().ToLower() == "Villa".ToLower() || GameMain.Instance.BgMgr.GetBGName().ToLower() == "Villa_Night".ToLower()) { this.m_maid.SetPos(new Vector3(-0.29f, 0f, 1.6f)); this.m_maid.SetRot(new Vector3(0f, -90f, 0f)); GameMain.Instance.MainCamera.SetRealHeadPos(new Vector3(-1.58508f, 1.601999f, 1.811131f), true); GameMain.Instance.MainCamera.SetRealHeadRot(new Vector3(0f, 102f, 0f), true); GameMain.Instance.MainLight.SetRotation(new Vector3(40.00004f, 57.29157f, 18f)); } else if (GameMain.Instance.BgMgr.GetBGName().ToLower() == "Villa_BedRoom".ToLower() || GameMain.Instance.BgMgr.GetBGName().ToLower() == "Villa_BedRoom_Night".ToLower()) { this.m_maid.SetPos(new Vector3(3.54f, 0f, 1.16f)); this.m_maid.SetRot(new Vector3(0f, 180f, 0f)); GameMain.Instance.MainCamera.SetRealHeadPos(new Vector3(3.55631f, 1.601999f, -0.3987116f), true); GameMain.Instance.MainCamera.SetRealHeadRot(new Vector3(0f, 358f, 0f), true); GameMain.Instance.MainLight.SetRotation(new Vector3(58.94946f, 0f, 198f)); } else if (GameMain.Instance.BgMgr.GetBGName().ToLower() == "Villa_Farm".ToLower() || GameMain.Instance.BgMgr.GetBGName().ToLower() == "Villa_Farm_Night".ToLower()) { this.m_maid.SetPos(new Vector3(-0.235f, 0f, -1.898f)); GameMain.Instance.MainCamera.SetRealHeadPos(new Vector3(-0.3528061f, 1.601999f, -0.6961781f), true); GameMain.Instance.MainCamera.SetRealHeadRot(new Vector3(0f, 174f, 0f), true); } else if (GameMain.Instance.BgMgr.GetBGName().ToLower() == "Sea_VR".ToLower() || GameMain.Instance.BgMgr.GetBGName().ToLower() == "Sea_VR_Night".ToLower()) { this.m_maid.SetPos(new Vector3(-2.75f, 0f, -11f)); GameMain.Instance.MainCamera.SetRealHeadPos(new Vector3(-2.685168f, 1.601999f, -9.861251f), true); GameMain.Instance.MainCamera.SetRealHeadRot(new Vector3(0f, 180f, 0f), true); } else if (GameMain.Instance.BgMgr.GetBGName().ToLower() == "Rotenburo".ToLower() || GameMain.Instance.BgMgr.GetBGName().ToLower() == "Rotenburo_Night".ToLower()) { this.m_maid.SetPos(new Vector3(-0.235f, 0f, 2.028f)); GameMain.Instance.MainCamera.SetRealHeadPos(new Vector3(-0.2311308f, 1.601999f, 3.325274f), true); GameMain.Instance.MainCamera.SetRealHeadRot(new Vector3(0f, 182f, 0f), true); } GameMain.Instance.OvrMgr.OvrCamera.UIPosReset(0f); } this.m_maid.boMabataki = true; MaidColliderCollect collect = MaidColliderCollect.AddColliderCollect(this.m_maid); this.touchJumpColliderList = collect.AddCollider(MaidColliderCollect.ColliderType.Grab); if (!GameMain.Instance.VRMode) { Dictionary> dictionary = IKManager.CreateBoneDic(this.m_maid); Dictionary dictionary2 = new Dictionary(); dictionary2.Add(dictionary[IKManager.BoneType.Head].Value.transform, SceneEdit.TouchType.Head); dictionary2.Add(dictionary[IKManager.BoneType.Spine1].Value.transform, SceneEdit.TouchType.UpperBody); dictionary2.Add(dictionary[IKManager.BoneType.Bust_R].Value.transform, SceneEdit.TouchType.Bust); dictionary2.Add(dictionary[IKManager.BoneType.Bust_L].Value.transform, SceneEdit.TouchType.Bust); dictionary2.Add(dictionary[IKManager.BoneType.Pelvis].Value.transform, SceneEdit.TouchType.LowerBody); dictionary2.Add(dictionary[IKManager.BoneType.Thigh_L].Value.transform, SceneEdit.TouchType.Leg); dictionary2.Add(dictionary[IKManager.BoneType.Thigh_R].Value.transform, SceneEdit.TouchType.Leg); Dictionary dictionary3 = new Dictionary(); dictionary3.Add(SceneEdit.TouchType.Head, delegate { this.OnTouchJump(SceneEdit.TouchType.Head); }); dictionary3.Add(SceneEdit.TouchType.Bust, delegate { this.OnTouchJump(SceneEdit.TouchType.Bust); }); dictionary3.Add(SceneEdit.TouchType.UpperBody, delegate { this.OnTouchJump(SceneEdit.TouchType.UpperBody); }); dictionary3.Add(SceneEdit.TouchType.LowerBody, delegate { this.OnTouchJump(SceneEdit.TouchType.LowerBody); }); dictionary3.Add(SceneEdit.TouchType.Leg, delegate { this.OnTouchJump(SceneEdit.TouchType.Leg); }); for (int i = 0; i < this.touchJumpColliderList.Count; i++) { ColliderEvent colliderEvent = this.touchJumpColliderList[i].gameObject.AddComponent(); Transform transform = colliderEvent.transform; while (transform != null && !dictionary2.ContainsKey(transform)) { transform = transform.parent; } if (!(transform == null)) { SceneEdit.TouchType key = dictionary2[transform]; colliderEvent.onMouseDown = dictionary3[key]; } } } else { this.touchJumpColliderList.Clear(); } this.m_bUseTouchJump = this.m_bUseTouchJump; if (SceneEdit.compatibilityMode) { foreach (BgIconData.ItemData itemData in BgIconData.itemList) { if (itemData.isLegacyBG) { this.bgIconWindow.Exec(itemData.id); break; } } } else { foreach (BgIconData.ItemData itemData2 in BgIconData.itemList) { if (!itemData2.isLegacyBG) { this.bgIconWindow.Exec(itemData2.id); break; } } } this.customPartsWindow.Initizalize(this.m_maid); int initPoseId = PoseIconData.itemList[0].id; Action backup = this.pauseIconWindow.onSelectPauseEvent; this.pauseIconWindow.onSelectPauseEvent = delegate(PoseIconData.ItemData data) { data.ExecScript(); Maid maid = this.m_maid; Transform bone = maid.body0.GetBone(data.targetBoneName); if (bone != null) { this.m_cameraMoveSupport.SaveCameraPosition(bone.position, 3f, new Vector2(-180f, 11.5528f)); this.CameraReset(0f); } }; this.pauseIconWindow.Exec(initPoseId); yield return new WaitForSeconds(0.5f); this.pauseIconWindow.Exec(initPoseId); this.pauseIconWindow.onSelectPauseEvent = backup; this.customViewWindow.Create(); GameMain.Instance.LoadIcon.force_draw_new = false; GameMain.Instance.MainCamera.FadeIn(0.5f, false, new CameraMain.dgOnCompleteFade(this.OnCompleteFadeIn), true, true, default(Color)); yield break; } private void OnCompleteFadeIn() { } private IEnumerator InitMenuNative() { while (GameMain.Instance.CharacterMgr.IsBusy()) { yield return null; } while (!GameMain.Instance.MenuDataBase.JobFinished()) { yield return null; } this.InitCategoryList(); int fileCount = GameMain.Instance.MenuDataBase.GetDataSize(); List menuList = new List(fileCount); this.m_menuRidDic = new Dictionary(fileCount); Dictionary> menuGroupMemberDic = new Dictionary>(); MenuDataBase menuDataBase = GameMain.Instance.MenuDataBase; float time = Time.realtimeSinceStartup; for (int i = 0; i < fileCount; i++) { menuDataBase.SetIndex(i); string fileName = menuDataBase.GetMenuFileName(); string parent_filename = menuDataBase.GetParentMenuFileName(); if (GameMain.Instance.CharacterMgr.status.IsHavePartsItem(fileName)) { SceneEdit.SMenuItem mi = new SceneEdit.SMenuItem(); mi.m_strMenuFileName = fileName; mi.m_nMenuFileRID = fileName.GetHashCode(); try { SceneEdit.ReadMenuItemDataFromNative(mi, i); } catch (Exception ex) { Debug.LogError(string.Concat(new string[] { "ReadMenuItemDataFromNative 例外/", fileName, "/", ex.Message, " StackTrace/", ex.StackTrace })); } if (!mi.m_bMan && !(mi.m_texIcon == null)) { this.AddMenuItemToList(mi); menuList.Add(mi); if (!this.m_menuRidDic.ContainsKey(mi.m_nMenuFileRID)) { this.m_menuRidDic.Add(mi.m_nMenuFileRID, mi); } string parentMenuName = SceneEdit.GetParentMenuFileName(mi); if (!string.IsNullOrEmpty(parentMenuName)) { int hashCode = parentMenuName.GetHashCode(); if (!menuGroupMemberDic.ContainsKey(hashCode)) { menuGroupMemberDic.Add(hashCode, new List()); } menuGroupMemberDic[hashCode].Add(mi.m_strMenuFileName.ToLower().GetHashCode()); } else if (mi.m_strCateName.IndexOf("set_") != -1 && mi.m_strMenuFileName.IndexOf("_del") == -1) { mi.m_bGroupLeader = true; mi.m_listMember = new List(); mi.m_listMember.Add(mi); } if (0.5f < Time.realtimeSinceStartup - time) { yield return null; time = Time.realtimeSinceStartup; } } } } foreach (string strFileName in GameUty.ModOnlysMenuFiles) { SceneEdit.SMenuItem mi2 = new SceneEdit.SMenuItem(); if (SceneEdit.GetMenuItemSetUP(mi2, strFileName, false)) { if (!mi2.m_bMan && !(mi2.m_texIcon == null)) { this.AddMenuItemToList(mi2); menuList.Add(mi2); if (!this.m_menuRidDic.ContainsKey(mi2.m_nMenuFileRID)) { this.m_menuRidDic.Add(mi2.m_nMenuFileRID, mi2); } string parentMenuName2 = SceneEdit.GetParentMenuFileName(mi2); if (!string.IsNullOrEmpty(parentMenuName2)) { int hashCode2 = parentMenuName2.GetHashCode(); if (!menuGroupMemberDic.ContainsKey(hashCode2)) { menuGroupMemberDic.Add(hashCode2, new List()); } menuGroupMemberDic[hashCode2].Add(mi2.m_strMenuFileName.ToLower().GetHashCode()); } else if (mi2.m_strCateName.IndexOf("set_") != -1 && mi2.m_strMenuFileName.IndexOf("_del") == -1) { mi2.m_bGroupLeader = true; mi2.m_listMember = new List(); mi2.m_listMember.Add(mi2); } if (0.5f < Time.realtimeSinceStartup - time) { yield return null; time = Time.realtimeSinceStartup; } } } } yield return base.StartCoroutine(this.FixedInitMenu(menuList, this.m_menuRidDic, menuGroupMemberDic)); yield return base.StartCoroutine(this.CoLoadWait()); yield break; } private IEnumerator InitMenu() { this.InitCategoryList(); string[] files = GameUty.MenuFiles; List menuList = new List(files.Length); this.m_menuRidDic = new Dictionary(menuList.Capacity); Dictionary> menuGroupMemberDic = new Dictionary>(); float time = Time.realtimeSinceStartup; foreach (string strFileName in files) { if (!strFileName.ToLower().Contains("/man")) { if (GameMain.Instance.CharacterMgr.status.IsHavePartsItem(Path.GetFileName(strFileName))) { SceneEdit.SMenuItem mi = new SceneEdit.SMenuItem(); if (SceneEdit.GetMenuItemSetUP(mi, strFileName, false)) { if (!mi.m_bMan && !(mi.m_texIcon == null)) { this.AddMenuItemToList(mi); menuList.Add(mi); if (!this.m_menuRidDic.ContainsKey(mi.m_nMenuFileRID)) { this.m_menuRidDic.Add(mi.m_nMenuFileRID, mi); } string parentMenuName = SceneEdit.GetParentMenuFileName(mi); if (!string.IsNullOrEmpty(parentMenuName)) { int hashCode = parentMenuName.GetHashCode(); if (!menuGroupMemberDic.ContainsKey(hashCode)) { menuGroupMemberDic.Add(hashCode, new List()); } menuGroupMemberDic[hashCode].Add(mi.m_strMenuFileName.ToLower().GetHashCode()); } else if (mi.m_strCateName.IndexOf("set_") != -1 && mi.m_strMenuFileName.IndexOf("_del") == -1) { mi.m_bGroupLeader = true; mi.m_listMember = new List(); mi.m_listMember.Add(mi); } if (0.5f < Time.realtimeSinceStartup - time) { yield return null; time = Time.realtimeSinceStartup; } } } } } } yield return base.StartCoroutine(this.FixedInitMenu(menuList, this.m_menuRidDic, menuGroupMemberDic)); yield return base.StartCoroutine(this.CoLoadWait()); yield break; } private IEnumerator FixedInitMenu(List menuList, Dictionary menuRidDic, Dictionary> menuGroupMemberDic) { float time = Time.realtimeSinceStartup; string[] modfiles = Menu.GetModFiles(); if (modfiles != null) { foreach (string strFileName in modfiles) { SceneEdit.SMenuItem mi2 = new SceneEdit.SMenuItem(); if (SceneEdit.InitModMenuItemScript(mi2, strFileName)) { this.AddMenuItemToList(mi2); menuList.Add(mi2); if (!menuRidDic.ContainsKey(mi2.m_nMenuFileRID)) { menuRidDic.Add(mi2.m_nMenuFileRID, mi2); } else { menuRidDic[mi2.m_nMenuFileRID] = mi2; } string parentMenuName = SceneEdit.GetParentMenuFileName(mi2); if (!string.IsNullOrEmpty(parentMenuName)) { int hashCode = parentMenuName.GetHashCode(); if (!menuGroupMemberDic.ContainsKey(hashCode)) { menuGroupMemberDic.Add(hashCode, new List()); } menuGroupMemberDic[hashCode].Add(mi2.m_strMenuFileName.ToLower().GetHashCode()); } else if (mi2.m_strCateName.IndexOf("set_") != -1 && mi2.m_strMenuFileName.IndexOf("_del") == -1) { mi2.m_bGroupLeader = true; mi2.m_listMember = new List(); mi2.m_listMember.Add(mi2); } if (0.5f < Time.realtimeSinceStartup - time) { yield return null; time = Time.realtimeSinceStartup; } } } } foreach (KeyValuePair> keyValuePair in menuGroupMemberDic) { if (menuRidDic.ContainsKey(keyValuePair.Key) && keyValuePair.Value.Count >= 1) { SceneEdit.SMenuItem smenuItem = menuRidDic[keyValuePair.Key]; smenuItem.m_bGroupLeader = true; smenuItem.m_listMember = new List(); smenuItem.m_listMember.Add(smenuItem); for (int n = 0; n < keyValuePair.Value.Count; n++) { smenuItem.m_listMember.Add(menuRidDic[keyValuePair.Value[n]]); smenuItem.m_listMember[smenuItem.m_listMember.Count - 1].m_bMember = true; smenuItem.m_listMember[smenuItem.m_listMember.Count - 1].m_leaderMenu = smenuItem; } smenuItem.m_listMember.Sort(delegate(SceneEdit.SMenuItem x, SceneEdit.SMenuItem y) { if (x.m_fPriority == y.m_fPriority) { return 0; } if (x.m_fPriority < y.m_fPriority) { return -1; } if (x.m_fPriority > y.m_fPriority) { return 1; } return 0; }); smenuItem.m_listMember.Sort((SceneEdit.SMenuItem x, SceneEdit.SMenuItem y) => x.m_strMenuFileName.CompareTo(y.m_strMenuFileName)); } } foreach (KeyValuePair keyValuePair2 in SceneEditInfo.m_dicPartsTypePair) { if (keyValuePair2.Value.m_eType == SceneEditInfo.CCateNameType.EType.Slider) { this.AddMenuItemToList(new SceneEdit.SMenuItem { m_mpn = keyValuePair2.Key, m_nSliderValue = 500, m_strCateName = keyValuePair2.Key.ToString(), m_strMenuName = keyValuePair2.Value.m_strBtnPartsTypeName }); } } for (int nM = 0; nM < menuList.Count; nM++) { SceneEdit.SMenuItem mi = menuList[nM]; if (mi.m_eColorSetMPN != MPN.null_mpn) { if (mi.m_strMenuNameInColorSet != null) { mi.m_strMenuNameInColorSet = mi.m_strMenuNameInColorSet.Replace("*", ".*"); mi.m_listColorSet = this.m_dicColor[mi.m_eColorSetMPN].FindAll((SceneEdit.SMenuItem i) => new Regex(mi.m_strMenuNameInColorSet).IsMatch(i.m_strMenuFileName)); } else { mi.m_listColorSet = this.m_dicColor[mi.m_eColorSetMPN]; } } if (0.5f < Time.realtimeSinceStartup - time) { yield return null; time = Time.realtimeSinceStartup; } } for (int j = 0; j < this.m_listCategory.Count; j++) { this.m_listCategory[j].SortPartsType(); } for (int k = 0; k < this.m_listCategory.Count; k++) { this.m_listCategory[k].SortItem(); } foreach (SceneEdit.SCategory scategory in this.m_listCategory) { if (scategory.m_eCategory == SceneEditInfo.EMenuCategory.プリセット || scategory.m_eCategory == SceneEditInfo.EMenuCategory.ランダム || scategory.m_eCategory == SceneEditInfo.EMenuCategory.プロフィ\u30FCル || scategory.m_eCategory == SceneEditInfo.EMenuCategory.着衣設定) { scategory.m_isEnabled = true; } else { scategory.m_isEnabled = false; foreach (SceneEdit.SPartsType spartsType in scategory.m_listPartsType) { if (spartsType.m_isEnabled) { scategory.m_isEnabled = true; break; } } } } if (this.modeType == SceneEdit.ModeType.CostumeEdit) { SceneEditInfo.EMenuCategory[] array = new SceneEditInfo.EMenuCategory[] { SceneEditInfo.EMenuCategory.セット, SceneEditInfo.EMenuCategory.プリセット, SceneEditInfo.EMenuCategory.ランダム, SceneEditInfo.EMenuCategory.プロフィ\u30FCル }; SceneEditInfo.EMenuCategory[] array2 = array; for (int l = 0; l < array2.Length; l++) { SceneEditInfo.EMenuCategory cate = array2[l]; this.m_listCategory.Find((SceneEdit.SCategory c) => c.m_eCategory == cate).m_isEnabled = false; } } else if (this.maid.status.heroineType == HeroineType.Sub) { SceneEditInfo.EMenuCategory[] array3 = new SceneEditInfo.EMenuCategory[] { SceneEditInfo.EMenuCategory.プロフィ\u30FCル }; SceneEditInfo.EMenuCategory[] array4 = array3; for (int m = 0; m < array4.Length; m++) { SceneEditInfo.EMenuCategory cate = array4[m]; this.m_listCategory.Find((SceneEdit.SCategory c) => c.m_eCategory == cate).m_isEnabled = false; } } this.UpdatePanel_Category(); yield break; } private void InitCategoryList() { for (int i = 0; i < this.m_listCategory.Count; i++) { this.m_listCategory[i].Dispose(); } this.m_listCategory.Clear(); this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.頭.ToString(), SceneEditInfo.EMenuCategory.頭)); this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.髪.ToString(), SceneEditInfo.EMenuCategory.髪)); this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.身体.ToString(), SceneEditInfo.EMenuCategory.身体)); this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.服装.ToString(), SceneEditInfo.EMenuCategory.服装)); this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.アクセサリ.ToString(), SceneEditInfo.EMenuCategory.アクセサリ)); if (this.modeType == SceneEdit.ModeType.CostumeEdit) { this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.着衣設定.ToString(), SceneEditInfo.EMenuCategory.着衣設定)); } this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.セット.ToString(), SceneEditInfo.EMenuCategory.セット)); this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.プリセット.ToString(), SceneEditInfo.EMenuCategory.プリセット)); this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.ランダム.ToString(), SceneEditInfo.EMenuCategory.ランダム)); this.m_listCategory.Add(new SceneEdit.SCategory(SceneEditInfo.EMenuCategory.プロフィ\u30FCル.ToString(), SceneEditInfo.EMenuCategory.プロフィ\u30FCル)); } public static void ReadMenuItemDataFromNative(SceneEdit.SMenuItem mi, int menuDataBaseIndex) { MenuDataBase menuDataBase = GameMain.Instance.MenuDataBase; menuDataBase.SetIndex(menuDataBaseIndex); mi.m_strMenuName = menuDataBase.GetMenuName(); mi.m_strInfo = menuDataBase.GetItemInfoText(); mi.m_mpn = (MPN)menuDataBase.GetCategoryMpn(); mi.m_strCateName = menuDataBase.GetCategoryMpnText(); mi.m_eColorSetMPN = (MPN)menuDataBase.GetColorSetMpn(); mi.m_strMenuNameInColorSet = menuDataBase.GetMenuNameInColorSet(); mi.m_pcMultiColorID = (MaidParts.PARTS_COLOR)menuDataBase.GetMultiColorId(); mi.m_boDelOnly = menuDataBase.GetBoDelOnly(); mi.m_fPriority = menuDataBase.GetPriority(); mi.m_bMan = menuDataBase.GetIsMan(); mi.m_bOld = (menuDataBase.GetVersion() < 2000); string iconS = menuDataBase.GetIconS(); if (!string.IsNullOrEmpty(iconS)) { try { mi.m_texIcon = ImportCM.CreateTexture(iconS); mi.m_texIconRandomColor = mi.m_texIcon; } catch (Exception) { Debug.LogError("Error:"); } } } public static bool GetMenuItemSetUP(SceneEdit.SMenuItem mi, string f_strMenuFileName, bool f_bMan = false) { if (f_strMenuFileName.Contains("_zurashi")) { return false; } if (f_strMenuFileName.Contains("_mekure")) { return false; } f_strMenuFileName = Path.GetFileName(f_strMenuFileName); mi.m_strMenuFileName = f_strMenuFileName; mi.m_nMenuFileRID = f_strMenuFileName.ToLower().GetHashCode(); try { if (!SceneEdit.InitMenuItemScript(mi, f_strMenuFileName, f_bMan)) { NDebug.Assert(false, "メニュースクリプトが読めませんでした。" + f_strMenuFileName); } } catch (Exception ex) { Debug.LogError(string.Concat(new string[] { "GetMenuItemSetUP 例外/", f_strMenuFileName, "/", ex.Message, " StackTrace/", ex.StackTrace })); return false; } return true; } public static bool InitModMenuItemScript(SceneEdit.SMenuItem mi, string f_strModFileName) { byte[] buffer = null; try { using (FileStream fileStream = new FileStream(f_strModFileName, FileMode.Open)) { if (fileStream == null) { Debug.LogWarning("MODアイテムメニューファイルが見つかりません。"); return false; } buffer = new byte[fileStream.Length]; fileStream.Read(buffer, 0, (int)fileStream.Length); } } catch (Exception ex) { Debug.LogError("InitModMenuItemScript MODアイテムメニューファイルが読み込めませんでした。 : " + f_strModFileName + " : " + ex.Message); return false; } BinaryReader binaryReader = new BinaryReader(new MemoryStream(buffer), Encoding.UTF8); string text = binaryReader.ReadString(); NDebug.Assert(text == "CM3D2_MOD", "InitModMenuItemScript 例外 : ヘッダーファイルが不正です。" + text); int num = binaryReader.ReadInt32(); string text2 = binaryReader.ReadString(); string text3 = binaryReader.ReadString(); string strMenuName = binaryReader.ReadString(); string strCateName = binaryReader.ReadString(); string text4 = binaryReader.ReadString(); string text5 = binaryReader.ReadString(); MPN mpn = MPN.null_mpn; try { mpn = (MPN)Enum.Parse(typeof(MPN), text5); } catch { NDebug.Assert("カテゴリがありません。" + text5, false); } string text6 = string.Empty; if (mpn != MPN.null_mpn) { text6 = binaryReader.ReadString(); } string s = binaryReader.ReadString(); int num2 = binaryReader.ReadInt32(); Dictionary dictionary = new Dictionary(); for (int i = 0; i < num2; i++) { string key = binaryReader.ReadString(); int count = binaryReader.ReadInt32(); byte[] value = binaryReader.ReadBytes(count); dictionary.Add(key, value); } binaryReader.Close(); binaryReader = null; mi.m_bMod = true; mi.m_strMenuFileName = Path.GetFileName(f_strModFileName); mi.m_nMenuFileRID = mi.m_strMenuFileName.ToLower().GetHashCode(); mi.m_strMenuName = strMenuName; mi.m_strInfo = text4.Replace("《改行》", "\n"); mi.m_strCateName = strCateName; try { mi.m_mpn = (MPN)Enum.Parse(typeof(MPN), mi.m_strCateName); } catch { Debug.LogWarning("カテゴリがありません。" + mi.m_strCateName); mi.m_mpn = MPN.null_mpn; } if (mpn != MPN.null_mpn) { mi.m_eColorSetMPN = mpn; if (!string.IsNullOrEmpty(text6)) { mi.m_strMenuNameInColorSet = text6; } } if (!string.IsNullOrEmpty(text2)) { byte[] data = dictionary[text2]; mi.m_texIcon = new Texture2D(1, 1, TextureFormat.RGBA32, false); mi.m_texIcon.LoadImage(data); mi.m_texIconRandomColor = mi.m_texIcon; } mi.m_fPriority = 999f; using (StringReader stringReader = new StringReader(s)) { string empty = string.Empty; string text7; while ((text7 = stringReader.ReadLine()) != null) { string[] array = text7.Split(new char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries); if (array[0] == "テクスチャ変更") { MaidParts.PARTS_COLOR pcMultiColorID = MaidParts.PARTS_COLOR.NONE; if (array.Length == 6) { string text8 = array[5]; try { pcMultiColorID = (MaidParts.PARTS_COLOR)Enum.Parse(typeof(MaidParts.PARTS_COLOR), text8.ToUpper()); } catch { NDebug.Assert("無限色IDがありません。" + text8, false); } mi.m_pcMultiColorID = pcMultiColorID; } } } } return true; } private bool AddMenuItemToList(SceneEdit.SMenuItem f_mi) { MPN mpn = f_mi.m_mpn; if (f_mi.m_mpn == MPN.null_mpn) { Debug.LogWarning("カテゴリがnullの為、メニュー表示しません。" + f_mi.m_strCateName); return false; } SceneEditInfo.CCateNameType cateType; if (mpn != MPN.null_mpn && SceneEditInfo.m_dicPartsTypePair.TryGetValue(mpn, out cateType)) { if (cateType.m_eType == SceneEditInfo.CCateNameType.EType.Item || cateType.m_eType == SceneEditInfo.CCateNameType.EType.Set || cateType.m_eType == SceneEditInfo.CCateNameType.EType.Slider) { SceneEdit.SCategory scategory = this.m_listCategory.Find((SceneEdit.SCategory c) => c.m_eCategory == cateType.m_eMenuCate); SceneEdit.SPartsType spartsType = scategory.m_listPartsType.Find((SceneEdit.SPartsType p) => p.m_ePartsType == cateType.m_ePartsType); if (spartsType == null) { string f_strPartsTypeName = string.Empty; if (cateType.m_eType == SceneEditInfo.CCateNameType.EType.Slider) { if (!SceneEditInfo.m_dicSliderPartsTypeBtnName.TryGetValue(cateType.m_ePartsType, out f_strPartsTypeName)) { NDebug.Assert("スライダー群に対するパーツタイプ名がみつかりませんでした。", false); } } else { f_strPartsTypeName = cateType.m_strBtnPartsTypeName; } spartsType = new SceneEdit.SPartsType(cateType.m_eType, mpn, f_strPartsTypeName, cateType.m_ePartsType); if (this.enabledMpns.Count == 0) { spartsType.m_isEnabled = true; } else { spartsType.m_isEnabled = this.enabledMpns.Contains(spartsType.m_mpn); } scategory.m_listPartsType.Add(spartsType); } f_mi.m_ParentPartsType = spartsType; if (cateType.m_eType == SceneEditInfo.CCateNameType.EType.Slider) { f_mi.m_fPriority = (float)cateType.m_nIdx; } spartsType.m_listMenu.Add(f_mi); } else if (cateType.m_eType == SceneEditInfo.CCateNameType.EType.Color) { f_mi.m_bColor = true; if (!this.m_dicColor.ContainsKey(f_mi.m_mpn)) { this.m_dicColor.Add(f_mi.m_mpn, new List()); } this.m_dicColor[f_mi.m_mpn].Add(f_mi); } } return true; } public static bool InitMenuItemScript(SceneEdit.SMenuItem mi, string f_strMenuFileName, bool f_bMan) { if (f_strMenuFileName.IndexOf("mod_") == 0) { string modPathFileName = Menu.GetModPathFileName(f_strMenuFileName); return !string.IsNullOrEmpty(modPathFileName) && SceneEdit.InitModMenuItemScript(mi, modPathFileName); } try { using (AFileBase afileBase = GameUty.FileOpen(f_strMenuFileName, null)) { NDebug.Assert(afileBase.IsValid(), "メニューファイルが存在しません。 :" + f_strMenuFileName); if (SceneEdit.m_byItemFileBuffer == null) { SceneEdit.m_byItemFileBuffer = new byte[Math.Max(500000, afileBase.GetSize())]; } else if (SceneEdit.m_byItemFileBuffer.Length < afileBase.GetSize()) { SceneEdit.m_byItemFileBuffer = new byte[afileBase.GetSize()]; } afileBase.Read(ref SceneEdit.m_byItemFileBuffer, afileBase.GetSize()); } } catch (Exception ex) { Debug.LogError(string.Concat(new string[] { "メニューファイルがが読み込めませんでした。 : ", f_strMenuFileName, " : ", ex.Message, " : StackTrace :\n", ex.StackTrace })); throw ex; } BinaryReader binaryReader = new BinaryReader(new MemoryStream(SceneEdit.m_byItemFileBuffer), Encoding.UTF8); string text = binaryReader.ReadString(); NDebug.Assert(text == "CM3D2_MENU", "ProcScriptBin 例外 : ヘッダーファイルが不正です。" + text); int num = binaryReader.ReadInt32(); string path = binaryReader.ReadString(); string text2 = binaryReader.ReadString(); string text3 = binaryReader.ReadString(); string text4 = binaryReader.ReadString(); long num2 = (long)binaryReader.ReadInt32(); int num3 = 0; string text5 = null; string text6 = string.Empty; string text7 = string.Empty; try { for (;;) { int num4 = (int)binaryReader.ReadByte(); text7 = text6; text6 = string.Empty; if (num4 == 0) { break; } for (int i = 0; i < num4; i++) { text6 = text6 + "\"" + binaryReader.ReadString() + "\" "; } if (!(text6 == string.Empty)) { string stringCom = UTY.GetStringCom(text6); string[] stringList = UTY.GetStringList(text6); if (stringCom == "name") { string text8 = stringList[1]; string text9 = string.Empty; string arg = string.Empty; int j = 0; while (j < text8.Length && text8[j] != '\u3000' && text8[j] != ' ') { text9 += text8[j]; j++; } while (j < text8.Length) { arg += text8[j]; j++; } mi.m_strMenuName = text9; } else if (stringCom == "setumei") { mi.m_strInfo = stringList[1]; mi.m_strInfo = mi.m_strInfo.Replace("《改行》", "\n"); } else if (stringCom == "category") { string strCateName = stringList[1].ToLower(); mi.m_strCateName = strCateName; try { mi.m_mpn = (MPN)Enum.Parse(typeof(MPN), mi.m_strCateName); } catch { Debug.LogWarning("カテゴリがありません。" + mi.m_strCateName); mi.m_mpn = MPN.null_mpn; } } else if (stringCom == "color_set") { try { mi.m_eColorSetMPN = (MPN)Enum.Parse(typeof(MPN), stringList[1].ToLower()); } catch { Debug.LogWarning("カテゴリがありません。" + mi.m_strCateName); } if (stringList.Length >= 3) { mi.m_strMenuNameInColorSet = stringList[2].ToLower(); } } else if (stringCom == "tex" || stringCom == "テクスチャ変更") { MaidParts.PARTS_COLOR pcMultiColorID = MaidParts.PARTS_COLOR.NONE; if (stringList.Length == 6) { string text10 = stringList[5]; try { pcMultiColorID = (MaidParts.PARTS_COLOR)Enum.Parse(typeof(MaidParts.PARTS_COLOR), text10.ToUpper()); } catch { NDebug.Assert("無限色IDがありません。" + text10, false); } mi.m_pcMultiColorID = pcMultiColorID; } } else if (stringCom == "icon" || stringCom == "icons") { text5 = stringList[1]; } else if (!(stringCom == "iconl")) { if (!(stringCom == "setstr")) { if (!(stringCom == "アイテムパラメータ")) { if (stringCom == "saveitem") { string text11 = stringList[1]; if (text11 == string.Empty) { Debug.LogError("err SaveItem \"" + text11); } if (text11 == null) { Debug.LogError("err SaveItem null=\"" + text11); } if (text11 != string.Empty) { } } else if (!(stringCom == "catno")) { if (stringCom == "additem") { num3++; } else if (stringCom == "unsetitem") { mi.m_boDelOnly = true; } else if (stringCom == "priority") { mi.m_fPriority = float.Parse(stringList[1]); } else if (stringCom == "メニューフォルダ" && stringList[1].ToLower() == "man") { mi.m_bMan = true; } } } } } } } } catch (Exception ex2) { Debug.LogError(string.Concat(new string[] { "Exception ", Path.GetFileName(path), " 現在処理中だった行 = ", text6, " 以前の行 = ", text7, " ", ex2.Message, "StackTrace:\n", ex2.StackTrace })); throw ex2; } if (text5 != null && text5 != string.Empty) { try { mi.m_texIcon = ImportCM.CreateTexture(text5); mi.m_texIconRandomColor = mi.m_texIcon; } catch (Exception) { Debug.LogError("Error:"); } } binaryReader.Close(); return true; } private bool UpdatePanel_Category() { this.m_listNg2Cate.Clear(); foreach (GameObject obj in this.m_listBtnCate) { UnityEngine.Object.DestroyImmediate(obj); } this.m_listBtnCate.Clear(); for (int i = 0; i < this.m_listCategory.Count; i++) { SceneEdit.SCategory scategory = this.m_listCategory[i]; UnityEngine.Object @object = Resources.Load("SceneEdit/MainMenu/Prefab/ButtonCate"); GameObject gameObject = NGUITools.AddChild(this.m_Panel_Category.goGrid, @object as GameObject); UILabel uilabel = gameObject.GetComponentsInChildren(true)[0]; Localize localize = uilabel.gameObject.AddComponent(); localize.SetTerm("SceneEdit/カテゴリー/" + scategory.m_strCateName); ButtonEdit buttonEdit = gameObject.GetComponentsInChildren(true)[0]; buttonEdit.m_Category = scategory; UIButton uibutton = gameObject.GetComponentsInChildren(true)[0]; uibutton.isEnabled = scategory.m_isEnabled; if (uibutton.isEnabled) { EventDelegate.Add(uibutton.onClick, new EventDelegate.Callback(this.ClickCallback)); } buttonEdit.m_goFrame = gameObject.transform.Find("Frame").gameObject; buttonEdit.m_goFrame.transform.GetComponent().enabled = false; UIButton component = buttonEdit.GetComponent(); buttonEdit.m_colBtnDefault = component.defaultColor; this.m_listBtnCate.Add(gameObject); } this.m_Panel_Category.gcScrollView.ResetPosition(); this.m_Panel_Category.gcUIGrid.Reposition(); this.m_Panel_PartsType.SetActive(false); this.m_Panel_MenuItem.SetActive(false); this.m_Panel_SetItem.SetActive(false); this.m_Panel_SliderItem.SetActive(false); this.m_Panel_ColorSet.SetActive(false); this.m_Panel_GroupSet.SetActive(false); this.m_CheckBoxMayuDrawPriority.gameObject.SetActive(false); return true; } private void UpdatePanel_PartsType(SceneEdit.SCategory f_cate) { this.SetCameraOffset(SceneEdit.CAM_OFFS.CENTER); this.m_info.Close(); this.m_Panel_PartsType.SetActive(true); BaseMgr.Instance.ClosePanel(); this.m_Panel_PartsType.VisibleArrow(false); this.m_misDelOnly = null; for (int i = 0; i < this.m_listBtnPartsType.Count; i++) { GameObject obj = this.m_listBtnPartsType[i]; UnityEngine.Object.DestroyImmediate(obj); } this.m_listBtnPartsType.Clear(); for (int j = 0; j < this.m_listSliderItem.Count; j++) { SceneEdit.SliderItemSet sliderItemSet = this.m_listSliderItem[j]; sliderItemSet.Clear(); } this.m_listSliderItem.Clear(); for (int k = 0; k < this.m_listBtnMenuItem.Count; k++) { SceneEdit.MenuItemSet menuItemSet = this.m_listBtnMenuItem[k]; menuItemSet.Clear(); } this.m_listBtnMenuItem.Clear(); for (int l = 0; l < this.m_listBtnColorSet.Count; l++) { SceneEdit.ColorItemSet colorItemSet = this.m_listBtnColorSet[l]; colorItemSet.Clear(); } this.m_listBtnColorSet.Clear(); for (int m = 0; m < this.m_listBtnGroupMember.Count; m++) { SceneEdit.MenuItemSet menuItemSet2 = this.m_listBtnGroupMember[m]; menuItemSet2.Clear(); } this.m_listBtnGroupMember.Clear(); for (int n = 0; n < f_cate.m_listPartsType.Count; n++) { SceneEdit.SPartsType spartsType = f_cate.m_listPartsType[n]; UnityEngine.Object @object = Resources.Load("SceneEdit/MainMenu/Prefab/ButtonCate"); GameObject gameObject = NGUITools.AddChild(this.m_Panel_PartsType.goGrid, @object as GameObject); UILabel uilabel = gameObject.GetComponentsInChildren(true)[0]; Localize localize = uilabel.gameObject.AddComponent(); localize.SetTerm("SceneEdit/カテゴリー/サブ/" + spartsType.m_strPartsTypeName); ButtonEdit buttonEdit = gameObject.GetComponentsInChildren(true)[0]; buttonEdit.m_PartsType = spartsType; UIButton uibutton = gameObject.GetComponentsInChildren(true)[0]; uibutton.isEnabled = spartsType.m_isEnabled; if (uibutton.isEnabled) { EventDelegate.Add(uibutton.onClick, new EventDelegate.Callback(this.ClickCallback)); } buttonEdit.m_goFrame = gameObject.transform.Find("Frame").gameObject; buttonEdit.m_goFrame.transform.GetComponent().enabled = false; UIButton component = buttonEdit.GetComponent(); buttonEdit.m_colBtnDefault = component.defaultColor; this.m_listBtnPartsType.Add(gameObject); } this.m_Panel_PartsType.ResetScrollPos(0.5f); this.m_Panel_MenuItem.ResetScrollPos(0f); this.m_Panel_SetItem.ResetScrollPos(0f); this.m_Panel_SliderItem.ResetScrollPos(0f); } private void UpdatePanel_MenuItem(SceneEdit.SPartsType f_pt) { if (f_pt.m_ePartsType == "set_maidwear" || f_pt.m_ePartsType == "set_mywear" || f_pt.m_ePartsType == "set_underwear" || f_pt.m_ePartsType == "set_body") { this.SetCameraOffset(SceneEdit.CAM_OFFS.RIGHT_MORE); } else { this.SetCameraOffset(SceneEdit.CAM_OFFS.RIGHT); } this.m_misDelOnly = null; this.m_info.Close(); BaseMgr.Instance.ClosePanel(); for (int i = 0; i < this.m_listSliderItem.Count; i++) { SceneEdit.SliderItemSet sliderItemSet = this.m_listSliderItem[i]; sliderItemSet.Clear(); } this.m_listSliderItem.Clear(); for (int j = 0; j < this.m_listBtnMenuItem.Count; j++) { SceneEdit.MenuItemSet menuItemSet = this.m_listBtnMenuItem[j]; menuItemSet.Clear(); } this.m_listBtnMenuItem.Clear(); for (int k = 0; k < this.m_listBtnColorSet.Count; k++) { SceneEdit.ColorItemSet colorItemSet = this.m_listBtnColorSet[k]; colorItemSet.Clear(); } this.m_listBtnColorSet.Clear(); for (int l = 0; l < this.m_listBtnGroupMember.Count; l++) { SceneEdit.MenuItemSet menuItemSet2 = this.m_listBtnGroupMember[l]; menuItemSet2.Clear(); } this.m_listBtnGroupMember.Clear(); float num = -1f; if (f_pt.m_eType == SceneEditInfo.CCateNameType.EType.Item || f_pt.m_eType == SceneEditInfo.CCateNameType.EType.Set) { if (!string.IsNullOrEmpty(this.last_select_category_name_)) { if (this.m_Panel_MenuItem.gcScrollBar.transform.parent.gameObject.activeSelf) { this.backup_category_scroll_pos_[this.last_select_category_name_] = Mathf.Round(this.m_Panel_MenuItem.gcScrollBar.value * 100f) / 100f; } if (this.m_Panel_SetItem.gcScrollBar.transform.parent.gameObject.activeSelf) { this.backup_category_scroll_pos_[this.last_select_category_name_] = Mathf.Round(this.m_Panel_SetItem.gcScrollBar.value * 100f) / 100f; } } if (this.backup_category_scroll_pos_.ContainsKey(f_pt.m_strPartsTypeName)) { num = this.backup_category_scroll_pos_[f_pt.m_strPartsTypeName]; } this.m_Panel_MenuItem.SetActive(false); this.m_Panel_SetItem.SetActive(false); SceneEdit.UIPanelSet uipanelSet = null; string f_strPrefabName = string.Empty; bool f_bSelectedFrame = false; if (f_pt.m_eType == SceneEditInfo.CCateNameType.EType.Item) { uipanelSet = this.m_Panel_MenuItem; f_strPrefabName = "ButtonItem"; f_bSelectedFrame = true; } else if (f_pt.m_eType == SceneEditInfo.CCateNameType.EType.Set) { uipanelSet = this.m_Panel_SetItem; f_strPrefabName = "ButtonSet"; f_bSelectedFrame = false; this.customPartsWindowVisibleButton.windowVisible = false; this.customPartsWindowVisibleButton.visible = false; } this.m_Panel_SliderItem.SetActive(false); this.m_Panel_ColorSet.SetActive(false); this.m_Panel_GroupSet.SetActive(false); this.m_CheckBoxMayuDrawPriority.gameObject.SetActive(false); uipanelSet.SetActive(true); for (int m = 0; m < f_pt.m_listMenu.Count; m++) { SceneEdit.SMenuItem smenuItem = f_pt.m_listMenu[m]; bool flag = this.m_bUseGroup; if (smenuItem.m_mpn == MPN.set_body) { flag = false; } if (!flag || !smenuItem.m_bMember) { SceneEdit.MenuItemSet menuItemSet3 = new SceneEdit.MenuItemSet(uipanelSet.goGrid, smenuItem, f_strPrefabName, f_bSelectedFrame); if (smenuItem.m_boDelOnly) { this.m_misDelOnly = menuItemSet3; } if (menuItemSet3.mi.m_strCateName.IndexOf("set_") != -1 && menuItemSet3.mi.m_bGroupLeader && flag) { EventDelegate.Add(menuItemSet3.gcBtn.onClick, new EventDelegate.Callback(this.ClickCallbackFromSetGroup)); } else { EventDelegate.Add(menuItemSet3.gcBtn.onClick, new EventDelegate.Callback(this.ClickCallback)); } if (smenuItem.m_bGroupLeader && flag) { EventDelegate.Add(menuItemSet3.gcEvent.onHoverOver, new EventDelegate.Callback(this.HoverOverCallbackOnGroup)); } else { EventDelegate.Add(menuItemSet3.gcEvent.onHoverOver, new EventDelegate.Callback(this.HoverOverCallback)); } EventDelegate.Add(menuItemSet3.gcEvent.onHoverOut, new EventDelegate.Callback(this.HoverOutCallback)); this.m_listBtnMenuItem.Add(menuItemSet3); } } uipanelSet.gcUIGrid.GetComponent().enabled = true; this.UpdateSelectedMenuItem(f_pt); this.last_select_category_name_ = f_pt.m_strPartsTypeName; } else if (f_pt.m_eType == SceneEditInfo.CCateNameType.EType.Slider) { this.customPartsWindowVisibleButton.windowVisible = false; this.customPartsWindowVisibleButton.visible = false; this.m_Panel_MenuItem.SetActive(false); this.m_Panel_SetItem.SetActive(false); this.m_Panel_SliderItem.SetActive(true); this.m_Panel_ColorSet.SetActive(false); this.m_Panel_GroupSet.SetActive(false); this.m_CheckBoxMayuDrawPriority.gameObject.SetActive(false); bool flag2 = false; for (int n = 0; n < f_pt.m_listMenu.Count; n++) { SceneEdit.SMenuItem smenuItem2 = f_pt.m_listMenu[n]; SceneEdit.SliderItemSet sliderItemSet2 = new SceneEdit.SliderItemSet(this.m_Panel_SliderItem.goGrid, smenuItem2); EventDelegate.Add(sliderItemSet2.gcSlider.onChange, new EventDelegate.Callback(this.SlideCallback)); this.m_listSliderItem.Add(sliderItemSet2); flag2 |= (smenuItem2.m_mpn == MPN.MuneYawaraka); } BaseMgr.Instance.OpenPanel(flag2); this.UpdateSliders(); } this.m_Panel_MenuItem.ResetScrollPos(0f); this.m_Panel_SetItem.ResetScrollPos(0f); this.m_Panel_SliderItem.ResetScrollPos(0f); if (num != -1f) { if (this.m_Panel_MenuItem.gcScrollBar.transform.parent.gameObject.activeSelf) { this.m_Panel_MenuItem.gcScrollBar.value = num; } if (this.m_Panel_SetItem.gcScrollBar.transform.parent.gameObject.activeSelf) { this.m_Panel_SetItem.gcScrollBar.value = num; } } } private void ClosePanel_MenuItem() { } private void UpdateSelectedMenuItem(SceneEdit.SPartsType f_pt) { Maid maid = this.m_maid; MaidProp prop = maid.GetProp(f_pt.m_mpn); NDebug.Assert(prop != null, "指定MPNが不正です。"); SceneEdit.SMenuItem smenuItem = null; if (this.m_misDelOnly != null) { this.m_misDelOnly.Selected(false); } for (int i = 0; i < this.m_listBtnMenuItem.Count; i++) { this.m_listBtnMenuItem[i].Selected(false); } bool flag = false; HashSet hashSet = new HashSet(); foreach (SceneEdit.SubPropMpnData subPropMpnData in this.subPropDatas) { if (subPropMpnData.mpn == f_pt.m_mpn) { subPropMpnData.manager.UpdateAllItem(); flag = true; if (subPropMpnData.manager.sloatItems != null) { foreach (SubSlotEditItem subSlotEditItem in subPropMpnData.manager.sloatItems) { if (!(subSlotEditItem == null) && subSlotEditItem.menuItem != null) { if (!hashSet.Contains(subSlotEditItem.menuItem.m_nMenuFileRID)) { hashSet.Add(subSlotEditItem.menuItem.m_nMenuFileRID); } } } } break; } } int num = (this.modeType != SceneEdit.ModeType.CostumeEdit) ? prop.nFileNameRID : prop.nTempFileNameRID; if (num != 0) { for (int l = 0; l < this.m_listBtnMenuItem.Count; l++) { SceneEdit.MenuItemSet menuItemSet = this.m_listBtnMenuItem[l]; SceneEdit.SMenuItem menuItem = menuItemSet.gcBtnEdit.m_MenuItem; if (!menuItem.m_bGroupLeader || !this.m_bUseGroup) { bool flag2 = menuItem.m_nMenuFileRID == num; if (flag && (!flag2 || hashSet.Count != 0)) { flag2 = hashSet.Contains(menuItem.m_nMenuFileRID); } if (flag2) { menuItemSet.Selected(true); smenuItem = menuItem; bool flag3 = this.customPartsWindow.SetItem(menuItem); if (this.modeType == SceneEdit.ModeType.CostumeEdit) { flag3 = false; } if (!flag3) { this.customPartsWindowVisibleButton.windowVisible = false; } this.customPartsWindowVisibleButton.visible = flag3; } } else { NDebug.Assert(hashSet.Count == 0, "SubPropとグループが競合しています"); bool flag4 = false; int num2 = 0; while (num2 < menuItem.m_listMember.Count && !flag4) { flag4 |= (menuItem.m_listMember[num2].m_nMenuFileRID == num); num2++; } if (flag4) { menuItemSet.Selected(true); smenuItem = menuItem; bool flag5 = this.customPartsWindow.SetItem(menuItem); if (this.modeType == SceneEdit.ModeType.CostumeEdit) { flag5 = false; } if (!flag5) { this.customPartsWindowVisibleButton.windowVisible = false; } this.customPartsWindowVisibleButton.visible = flag5; } } } } else { for (int m = 0; m < this.m_listBtnMenuItem.Count; m++) { SceneEdit.MenuItemSet menuItemSet2 = this.m_listBtnMenuItem[m]; if (menuItemSet2.mi.m_listColorSet != null) { SceneEdit.SMenuItem smenuItem2; if (this.modeType == SceneEdit.ModeType.CostumeEdit) { smenuItem2 = menuItemSet2.mi.m_listColorSet.Find((SceneEdit.SMenuItem c) => c.m_nMenuFileRID == maid.GetProp(c.m_mpn).nTempFileNameRID); } else { smenuItem2 = menuItemSet2.mi.m_listColorSet.Find((SceneEdit.SMenuItem c) => c.m_nMenuFileRID == maid.GetProp(c.m_mpn).nFileNameRID); } if (smenuItem2 != null) { menuItemSet2.Selected(true); smenuItem = menuItemSet2.mi; } } } } if (smenuItem == null && this.m_misDelOnly != null) { this.m_misDelOnly.Selected(true); } this.UpdatePanel_ColorSet(smenuItem); foreach (SceneEdit.SubPropMpnData subPropMpnData2 in this.subPropDatas) { subPropMpnData2.manager.visible = false; } this.UpdatePanel_GroupSet(smenuItem); if (smenuItem != null) { foreach (SceneEdit.SubPropMpnData subPropMpnData3 in this.subPropDatas) { if (subPropMpnData3.mpn == smenuItem.m_mpn) { this.m_Panel_GroupSet.SetActive(true); subPropMpnData3.manager.visible = true; subPropMpnData3.manager.UpdateAllItem(); this.m_Panel_GroupSet.gcUIGrid.cellHeight = 100f; Vector3 localPosition = this.m_Panel_GroupSet.goMain.transform.localPosition; localPosition.x = 23f; this.m_Panel_GroupSet.goMain.transform.localPosition = localPosition; this.m_Panel_GroupSet.ResetScrollPos(0f); } } } if (this.customPartsWindowVisibleButton.visible) { if (this.m_Panel_GroupSet.goMain.activeInHierarchy) { this.customPartsWindowVisibleButton.transform.localPosition = new Vector3(119f, 406f, 0f); } else if (this.m_Panel_ColorSet.goMain.activeInHierarchy) { this.customPartsWindowVisibleButton.transform.localPosition = new Vector3(60f, 406f, 0f); } else { this.customPartsWindowVisibleButton.transform.localPosition = new Vector3(0f, 406f, 0f); } } } private void UpdatePanel_GroupSet(SceneEdit.SMenuItem f_miSelected) { if (f_miSelected == null || f_miSelected.m_mpn == MPN.set_body || !f_miSelected.m_bGroupLeader || !this.m_bUseGroup) { this.m_Panel_GroupSet.SetActive(false); return; } Maid maid = this.m_maid; MaidProp prop = maid.GetProp(f_miSelected.m_mpn); this.m_Panel_GroupSet.SetActive(true); bool flag = this.m_listBtnGroupMember.Count != f_miSelected.m_listMember.Count; if (!flag) { int num = 0; while (num < f_miSelected.m_listMember.Count && !flag) { if (this.m_listBtnGroupMember[num].mi != f_miSelected.m_listMember[num]) { flag = true; } num++; } } bool flag2 = f_miSelected.m_strCateName.IndexOf("set_") != -1; if (flag) { for (int i = 0; i < this.m_listBtnGroupMember.Count; i++) { SceneEdit.MenuItemSet menuItemSet = this.m_listBtnGroupMember[i]; menuItemSet.Clear(); } this.m_listBtnGroupMember.Clear(); for (int j = 0; j < f_miSelected.m_listMember.Count; j++) { SceneEdit.MenuItemSet menuItemSet2 = new SceneEdit.MenuItemSet(this.m_Panel_GroupSet.goGrid, f_miSelected.m_listMember[j], (!flag2) ? "ButtonItem" : "ButtonSet", true); if (flag2) { menuItemSet2.ToSmall(); } EventDelegate.Add(menuItemSet2.gcBtn.onClick, new EventDelegate.Callback(this.ClickCallback)); EventDelegate.Add(menuItemSet2.gcEvent.onHoverOver, new EventDelegate.Callback(this.HoverOverCallback)); EventDelegate.Add(menuItemSet2.gcEvent.onHoverOut, new EventDelegate.Callback(this.HoverOutCallback)); this.m_listBtnGroupMember.Add(menuItemSet2); if (!flag2) { if (this.modeType == SceneEdit.ModeType.CostumeEdit) { menuItemSet2.Selected(prop != null && prop.nTempFileNameRID == f_miSelected.m_listMember[j].m_nMenuFileRID); } else { menuItemSet2.Selected(prop != null && prop.nFileNameRID == f_miSelected.m_listMember[j].m_nMenuFileRID); } } } if (flag2) { this.m_Panel_GroupSet.gcUIGrid.cellHeight = 127f; Vector3 localPosition = this.m_Panel_GroupSet.goMain.transform.localPosition; localPosition.x = 117f; this.m_Panel_GroupSet.goMain.transform.localPosition = localPosition; } else { this.m_Panel_GroupSet.gcUIGrid.cellHeight = 100f; Vector3 localPosition2 = this.m_Panel_GroupSet.goMain.transform.localPosition; localPosition2.x = 23f; this.m_Panel_GroupSet.goMain.transform.localPosition = localPosition2; } this.m_Panel_GroupSet.ResetScrollPos(0f); } else if (!flag2) { for (int k = 0; k < this.m_listBtnGroupMember.Count; k++) { if (this.modeType == SceneEdit.ModeType.CostumeEdit) { this.m_listBtnGroupMember[k].Selected(prop != null && prop.nTempFileNameRID == this.m_listBtnGroupMember[k].mi.m_nMenuFileRID); } else { this.m_listBtnGroupMember[k].Selected(prop != null && prop.nFileNameRID == this.m_listBtnGroupMember[k].mi.m_nMenuFileRID); } } } } private void UpdatePanel_ColorSet(SceneEdit.SMenuItem f_miSelected) { this.colorPaletteMgr.Close(); if (f_miSelected == null || f_miSelected.m_eColorSetMPN == MPN.null_mpn) { this.m_Panel_ColorSet.SetActive(false); this.m_CheckBoxMayuDrawPriority.gameObject.SetActive(false); return; } if (f_miSelected.m_mpn == MPN.folder_mayu) { this.m_CheckBoxMayuDrawPriority.gameObject.SetActive(true); this.m_CheckBoxMayuDrawPriority.check = this.m_maid.MayuDrawPriority; } if (this.modeType != SceneEdit.ModeType.CostumeEdit) { this.m_Panel_ColorSet.SetActive(true); } for (int i = 0; i < this.m_listBtnColorSet.Count; i++) { this.m_listBtnColorSet[i].Clear(); } this.m_listBtnColorSet.Clear(); for (int j = 0; j < f_miSelected.m_listColorSet.Count; j++) { SceneEdit.SMenuItem f_mi = f_miSelected.m_listColorSet[j]; SceneEdit.ColorItemSet colorItemSet = new SceneEdit.ColorItemSet(this.m_Panel_ColorSet.goGrid, f_mi); EventDelegate.Add(colorItemSet.gcBtn.onClick, new EventDelegate.Callback(this.ClickCallback)); EventDelegate.Add(colorItemSet.gcEvent.onHoverOver, new EventDelegate.Callback(this.HoverOverCallback)); EventDelegate.Add(colorItemSet.gcEvent.onHoverOut, new EventDelegate.Callback(this.HoverOutCallback)); this.m_listBtnColorSet.Add(colorItemSet); } this.m_Panel_ColorSet.ResetScrollPos(0f); this.UpdateSelected_ColorSet(f_miSelected.m_eColorSetMPN); if (this.modeType == SceneEdit.ModeType.CostumeEdit) { this.m_Panel_ColorSet.SetActive(false); } } private void UpdateSelected_ColorSet(MPN f_mpn) { Maid maid = this.m_maid; MaidProp prop = maid.GetProp(f_mpn); NDebug.Assert(prop != null, "指定MPNが不正です。"); SceneEdit.SMenuItem smenuItem = null; if (prop.nFileNameRID != 0) { for (int i = 0; i < this.m_listBtnColorSet.Count; i++) { SceneEdit.ColorItemSet colorItemSet = this.m_listBtnColorSet[i]; SceneEdit.SMenuItem menuItem = colorItemSet.gcBtnEdit.m_MenuItem; colorItemSet.Selected(false); if (menuItem.m_nMenuFileRID == prop.nFileNameRID) { colorItemSet.Selected(true); smenuItem = menuItem; } } if (smenuItem != null) { if (smenuItem.m_pcMultiColorID != MaidParts.PARTS_COLOR.NONE) { if (this.modeType != SceneEdit.ModeType.CostumeEdit) { this.colorPaletteMgr.Call(0, smenuItem.m_pcMultiColorID); } } else { this.colorPaletteMgr.Close(); } } } } public void UpdateSliders() { for (int i = 0; i < this.m_listSliderItem.Count; i++) { SceneEdit.SliderItemSet sliderItemSet = this.m_listSliderItem[i]; Maid maid = this.m_maid; MaidProp prop = maid.GetProp(sliderItemSet.gcBtnEdit.m_SliderItem.m_strCateName); if (sliderItemSet.gcBtnEdit.m_SliderItem.m_strCateName == "MuneL") { MaidProp prop2 = maid.GetProp(MPN.MuneS); int num; if (0 <= prop2.value && prop.value == 0) { num = (int)Math.Round((double)(-30f * ((float)(prop2.value - prop2.min) / (float)(prop2.max - prop2.min))), MidpointRounding.AwayFromZero); } else { num = prop.value; } int num2 = prop.min - 30; sliderItemSet.SetValue((float)(num - num2) / (float)(prop.max - num2), num.ToString()); } else { sliderItemSet.SetValue((float)(prop.value - prop.min) / (float)(prop.max - prop.min), prop.value.ToString()); } } BaseMgr.Instance.UpdateBodyStatus(); } public void CategoryUnSelect() { for (int i = 0; i < this.m_listBtnCate.Count; i++) { GameObject gameObject = this.m_listBtnCate[i]; ButtonEdit buttonEdit = gameObject.GetComponentsInChildren(true)[0]; UISprite component = buttonEdit.m_goFrame.GetComponent(); component.enabled = false; UIButton component2 = buttonEdit.GetComponent(); component2.defaultColor = buttonEdit.m_colBtnDefault; } this.m_Panel_Category.VisibleArrow(false); } public void ProcMenuItem(SceneEdit.SMenuItem f_mi) { } public void PartsTypeWearMode(MPN f_eMpn) { TBody.MaskMode maskMode; if (SceneEditInfo.m_dicPartsTypeWearMode.TryGetValue(f_eMpn, out maskMode)) { Maid maid = this.m_maid; maid.body0.SetMaskMode(maskMode); } } public void PartsTypeCamera(MPN f_eMpn) { SceneEditInfo.CamToBone camToBone; if (this.m_viewreset.GetVisibleAutoCam() && SceneEditInfo.m_dicPartsTypeCamera.TryGetValue(f_eMpn, out camToBone)) { Maid maid = this.m_maid; if (string.IsNullOrEmpty(camToBone.bone)) { this.CameraMoveTo(this.m_cameraMoveSupport.targetPosition, camToBone.distance, camToBone.angle, 0.5f); } else { Transform bone = maid.body0.GetBone(camToBone.bone); if (bone != null) { this.CameraMoveTo(bone.position, camToBone.distance, camToBone.angle, 0.5f); } } } } public void ClickCallbackFromSetGroup() { this.m_bOpenSetGroupPanel = true; this.ClickCallback(); this.m_bOpenSetGroupPanel = false; } public void ClickCallback() { Maid maid = this.m_maid; if (maid.IsBusy) { return; } ButtonEdit componentInChildren = UIButton.current.GetComponentInChildren(); if (componentInChildren.m_MenuItem == null || !componentInChildren.m_MenuItem.m_bColor) { this.customPartsWindowVisibleButton.windowVisible = false; } if (componentInChildren.m_Category != null) { this.customPartsWindowVisibleButton.visible = false; this.m_Panel_Category.VisibleArrow(false); this.CategoryUnSelect(); this.colorPaletteMgr.Close(); UISprite component = componentInChildren.m_goFrame.GetComponent(); component.enabled = true; UIButton component2 = componentInChildren.GetComponent(); component2.defaultColor = new Color(component2.defaultColor.r, component2.defaultColor.g, component2.defaultColor.b, 1f); this.m_maid.OpenMouthLookTooth(false); this.m_Panel_PartsType.SetActive(false); this.m_Panel_MenuItem.SetActive(false); this.m_Panel_SetItem.SetActive(false); this.m_Panel_SliderItem.SetActive(false); this.m_Panel_ColorSet.SetActive(false); this.m_Panel_GroupSet.SetActive(false); this.m_CheckBoxMayuDrawPriority.gameObject.SetActive(false); BaseMgr.Instance.CloseRandomPresetPanel(); BaseMgr.Instance.ClosePresetPanel(); BaseMgr.Instance.CloseProfilePanel(); BaseMgr.Instance.CloseRandomPresetPanel(); if (componentInChildren.m_Category.m_eCategory == SceneEditInfo.EMenuCategory.ランダム) { if (this.m_viewreset.GetVisibleAutoCam()) { this.CameraReset(0.5f); } maid.body0.SetMaskMode(TBody.MaskMode.None); BaseMgr.Instance.OpenRandomPresetPanel(); this.SetCameraOffset(SceneEdit.CAM_OFFS.RIGHT); BaseMgr.Instance.ClosePanel(); } else if (componentInChildren.m_Category.m_eCategory == SceneEditInfo.EMenuCategory.プリセット) { if (this.m_viewreset.GetVisibleAutoCam()) { this.CameraReset(0.5f); } maid.body0.SetMaskMode(TBody.MaskMode.None); BaseMgr.Instance.OpenPresetPanel(); this.SetCameraOffset(SceneEdit.CAM_OFFS.RIGHT); BaseMgr.Instance.ClosePanel(); } else if (componentInChildren.m_Category.m_eCategory == SceneEditInfo.EMenuCategory.プロフィ\u30FCル) { if (this.m_viewreset.GetVisibleAutoCam()) { this.CameraReset(0.5f); } BaseMgr.Instance.OpenProfilePanel(); this.SetCameraOffset(SceneEdit.CAM_OFFS.RIGHT); BaseMgr.Instance.ClosePanel(); } else if (componentInChildren.m_Category.m_eCategory == SceneEditInfo.EMenuCategory.着衣設定) { if (this.m_viewreset.GetVisibleAutoCam()) { this.CameraReset(0.5f); } maid.body0.SetMaskMode(TBody.MaskMode.None); BaseMgr.Instance.OpenRandomPresetPanel(); this.SetCameraOffset(SceneEdit.CAM_OFFS.RIGHT); BaseMgr.Instance.ClosePanel(); } else { this.UpdatePanel_PartsType(componentInChildren.m_Category); } this.m_Panel_Category.VisibleArrow(true); this.m_Panel_Category.MoveArrow(componentInChildren.gameObject); this.m_nNowMPN = MPN.null_mpn; } if (componentInChildren.m_PartsType != null) { for (int k = 0; k < this.m_listBtnPartsType.Count; k++) { GameObject gameObject = this.m_listBtnPartsType[k]; ButtonEdit componentInChildren2 = gameObject.GetComponentInChildren(); UISprite component3 = componentInChildren2.m_goFrame.GetComponent(); component3.enabled = false; UIButton component4 = componentInChildren2.GetComponent(); component4.defaultColor = componentInChildren2.m_colBtnDefault; } UISprite component5 = componentInChildren.m_goFrame.GetComponent(); component5.enabled = true; UIButton component6 = componentInChildren.GetComponent(); component6.defaultColor = new Color(component6.defaultColor.r, component6.defaultColor.g, component6.defaultColor.b, 1f); this.colorPaletteMgr.Close(); this.PartsTypeWearMode(componentInChildren.m_PartsType.m_mpn); this.PartsTypeCamera(componentInChildren.m_PartsType.m_mpn); if (componentInChildren.m_PartsType.m_mpn == MPN.accha) { this.m_maid.OpenMouthLookTooth(true); } else { this.m_maid.OpenMouthLookTooth(false); } this.UpdatePanel_MenuItem(componentInChildren.m_PartsType); this.m_Panel_PartsType.VisibleArrow(true); this.m_Panel_PartsType.MoveArrow(componentInChildren.gameObject); this.m_EditMod.m_mpn = componentInChildren.m_PartsType.m_mpn; this.m_nNowMPN = componentInChildren.m_PartsType.m_mpn; } if (componentInChildren.m_MenuItem != null && !maid.boAllProcPropBUSY) { SceneEdit.SMenuItem smenuItem = null; MaidProp prop = maid.GetProp(componentInChildren.m_MenuItem.m_mpn); if (this.modeType == SceneEdit.ModeType.CostumeEdit) { if (prop != null && this.m_menuRidDic.ContainsKey(prop.nTempFileNameRID)) { smenuItem = this.m_menuRidDic[prop.nTempFileNameRID]; } } else if (prop != null && this.m_menuRidDic.ContainsKey(prop.nFileNameRID)) { smenuItem = this.m_menuRidDic[prop.nFileNameRID]; } if (!this.m_bOpenSetGroupPanel) { if (!componentInChildren.m_MenuItem.m_bColor && this.modeType != SceneEdit.ModeType.CostumeEdit) { this.customPartsWindow.OnExecItemPrev(componentInChildren.m_MenuItem); } bool flag = false; foreach (SceneEdit.SubPropMpnData subPropMpnData in this.subPropDatas) { if (subPropMpnData.mpn == componentInChildren.m_MenuItem.m_mpn) { flag = true; subPropMpnData.manager.SetItem(componentInChildren.m_MenuItem); break; } } if (!flag) { if (this.modeType == SceneEdit.ModeType.CostumeEdit) { maid.SetProp(componentInChildren.m_MenuItem.m_strCateName, componentInChildren.m_MenuItem.m_strMenuFileName, componentInChildren.m_MenuItem.m_nMenuFileRID, true, false); } else { maid.SetProp(componentInChildren.m_MenuItem.m_strCateName, componentInChildren.m_MenuItem.m_strMenuFileName, componentInChildren.m_MenuItem.m_nMenuFileRID, false, false); } } } if (componentInChildren.m_MenuItem.m_eColorSetMPN != MPN.null_mpn) { if (componentInChildren.m_MenuItem.m_eColorSetMPN == MPN.haircolor) { MaidProp prop2 = maid.GetProp(componentInChildren.m_MenuItem.m_eColorSetMPN); if (string.IsNullOrEmpty(prop2.strFileName)) { List listColorSet = componentInChildren.m_MenuItem.m_listColorSet; if (listColorSet.Count != 0) { SceneEdit.SMenuItem smenuItem2 = listColorSet.Find((SceneEdit.SMenuItem i) => i.m_pcMultiColorID != MaidParts.PARTS_COLOR.NONE); if (smenuItem2 == null) { smenuItem2 = listColorSet[0]; } if (this.modeType == SceneEdit.ModeType.CostumeEdit) { maid.SetProp(smenuItem2.m_strCateName, smenuItem2.m_strMenuFileName, smenuItem2.m_nMenuFileRID, true, false); } else { maid.SetProp(smenuItem2.m_strCateName, smenuItem2.m_strMenuFileName, smenuItem2.m_nMenuFileRID, false, false); } } } } else { bool flag2 = false; if (smenuItem != null) { MaidProp prop3 = maid.GetProp(componentInChildren.m_MenuItem.m_eColorSetMPN); int num = 0; foreach (SceneEdit.SMenuItem smenuItem3 in smenuItem.m_listColorSet) { if (smenuItem3.m_nMenuFileRID == prop3.nFileNameRID) { break; } num++; } if (num < componentInChildren.m_MenuItem.m_listColorSet.Count) { SceneEdit.SMenuItem smenuItem4 = componentInChildren.m_MenuItem.m_listColorSet[num]; if (this.modeType == SceneEdit.ModeType.CostumeEdit) { maid.SetProp(smenuItem4.m_strCateName, smenuItem4.m_strMenuFileName, smenuItem4.m_nMenuFileRID, true, false); } else { maid.SetProp(smenuItem4.m_strCateName, smenuItem4.m_strMenuFileName, smenuItem4.m_nMenuFileRID, false, false); } flag2 = true; } } if (!flag2) { List listColorSet2 = componentInChildren.m_MenuItem.m_listColorSet; if (listColorSet2.Count != 0) { SceneEdit.SMenuItem smenuItem5 = listColorSet2[0]; if (componentInChildren.m_MenuItem.m_eColorSetMPN != MPN.eye) { smenuItem5 = listColorSet2.Find((SceneEdit.SMenuItem i) => i.m_pcMultiColorID == MaidParts.PARTS_COLOR.NONE); if (smenuItem5 == null) { smenuItem5 = listColorSet2[0]; } } if (this.modeType == SceneEdit.ModeType.CostumeEdit) { maid.SetProp(smenuItem5.m_strCateName, smenuItem5.m_strMenuFileName, smenuItem5.m_nMenuFileRID, true, false); } else { maid.SetProp(smenuItem5.m_strCateName, smenuItem5.m_strMenuFileName, smenuItem5.m_nMenuFileRID, false, false); } } } } } maid.AllProcPropSeqStart(); if (componentInChildren.m_MenuItem.m_bColor) { this.UpdateSelected_ColorSet(componentInChildren.m_MenuItem.m_mpn); } else if (!this.m_bOpenSetGroupPanel) { this.UpdateSelectedMenuItem(componentInChildren.m_MenuItem.m_ParentPartsType); } else { this.UpdatePanel_GroupSet(componentInChildren.m_MenuItem); } } } public void HoverOverCallback() { ButtonEdit componentInChildren = UIEventTrigger.current.GetComponentInChildren(); SceneEdit.SMenuItem menuItem = componentInChildren.m_MenuItem; Vector3 position = UIEventTrigger.current.transform.parent.position; this.m_info.Open(position, menuItem.m_texIcon, menuItem.menuNameCurrentLanguage, menuItem.infoTextCurrentLanguage, 0); } public void HoverOverCallbackOnGroup() { ButtonEdit componentInChildren = UIEventTrigger.current.GetComponentInChildren(); SceneEdit.SMenuItem menuItem = componentInChildren.m_MenuItem; Vector3 position = UIEventTrigger.current.transform.parent.position; this.m_info.Open(position, menuItem.m_texIcon, menuItem.menuNameCurrentLanguage, menuItem.infoTextCurrentLanguage, (menuItem.m_listMember == null) ? 0 : menuItem.m_listMember.Count); } public void HoverOutCallback() { this.m_info.Close(); } public void OnClickEditItemGroup() { this.m_bUseGroup = !this.m_bUseGroup; this.EditItemGroupSwitch.defaultColor = ((!this.m_bUseGroup) ? new Color(0.4f, 0.4f, 0.4f, 0.85f) : Color.white); } public void OnClickEditTouchJump() { this.m_bUseTouchJump = !this.m_bUseTouchJump; this.EditTouchJumpSwitch.defaultColor = ((!this.m_bUseTouchJump) ? new Color(0.4f, 0.4f, 0.4f, 0.85f) : Color.white); } public void SlideCallback() { Maid maid = this.m_maid; ButtonEdit componentInChildren = UIProgressBar.current.GetComponentInChildren(); MaidProp prop = maid.GetProp(componentInChildren.m_SliderItem.m_strCateName); if (componentInChildren.m_SliderItem.m_strCateName == "MuneL") { int num = prop.min - 30; int num2 = (int)Math.Round((double)((float)num + (float)(prop.max - num) * UIProgressBar.current.value), MidpointRounding.AwayFromZero); if (0 <= num2) { maid.SetProp(componentInChildren.m_SliderItem.m_strCateName, num2, false); maid.SetProp(MPN.MuneS, 0, false); } else { maid.SetProp(componentInChildren.m_SliderItem.m_strCateName, 0, false); maid.SetProp(MPN.MuneS, (int)(100f * ((float)num2 / -30f) + 0.5f), false); } } else { int val = (int)((float)prop.min + (float)(prop.max - prop.min) * UIProgressBar.current.value + 0.5f); maid.SetProp(componentInChildren.m_SliderItem.m_strCateName, val, false); } if (componentInChildren.m_SliderItem.m_mpn == MPN.MuneL) { MaidProp prop2 = maid.GetProp(MPN.MuneL); MaidProp prop3 = maid.GetProp(MPN.MuneTare); prop3.max = prop2.value; if (prop3.max < 1) { prop3.max = 1; prop3.value = 0; } maid.SetProp(MPN.MuneTare, prop3.value, false); } maid.AllProcProp(); this.UpdateSliders(); } public void OpenColorSet(SceneEdit.SMenuItem f_miSelected) { if (f_miSelected.m_eColorSetMPN == MPN.null_mpn) { this.m_Panel_ColorSet.SetActive(false); this.m_CheckBoxMayuDrawPriority.gameObject.SetActive(false); return; } } private IEnumerator CoPoseToCam(string f_lookBone, float f_cameraMoveTime, float f_waitTime = 0.2f) { if (f_waitTime != 0f) { yield return new WaitForSeconds(f_waitTime); } Maid maid = this.m_maid; Transform trBone = maid.body0.GetBone(f_lookBone); if (trBone != null) { this.m_cameraMoveSupport.SaveCameraPosition(trBone.position, 3f, new Vector2(-180f, 11.5528f)); this.CameraReset(f_cameraMoveTime); } yield break; } public void Voice(SceneEdit.PVBInfo f_pvb) { Maid maid = this.m_maid; SceneEdit.VoiceInfo voiceInfo = f_pvb as SceneEdit.VoiceInfo; maid.AudioMan.LoadPlay(voiceInfo.strVoiceFileName, 0f, false, false); maid.FaceAnime(voiceInfo.strFace, 1f, 0); if (string.IsNullOrEmpty(voiceInfo.strFace2)) { maid.FaceBlend("無し"); } else { maid.FaceBlend(voiceInfo.strFace2); } } public void ToView() { if (GameMain.Instance.VRMode && !Input.GetKey(KeyCode.LeftShift)) { Debug.Log("VRモードではViewモードになりません。"); return; } this.m_eCamOffsBack = this.m_eCamOffsNow; this.SetCameraOffset(SceneEdit.CAM_OFFS.CENTER); for (int i = 0; i < this.m_listPanel.Count; i++) { this.m_listPanel[i].alpha = 0f; } this.m_uipViewCancel.gameObject.SetActive(true); this.m_uipViewCancel.alpha = 1f; this.customViewWindow.mgr.gameObject.SetActive(false); this.customPartsWindow.ViewMode(true); } public void FromView() { for (int i = 0; i < this.m_listPanel.Count; i++) { this.m_listPanel[i].alpha = 1f; } this.m_uipViewCancel.alpha = 0f; this.m_uipViewCancel.gameObject.SetActive(false); this.SetCameraOffset(this.m_eCamOffsBack); this.customViewWindow.mgr.gameObject.SetActive(true); this.customPartsWindow.ViewMode(false); } public void ClothesState(SceneEditInfo.ClothesState f_cs) { Maid maid = this.m_maid; if (f_cs == SceneEditInfo.ClothesState.Nude) { maid.body0.SetMaskMode(TBody.MaskMode.Nude); } else if (f_cs == SceneEditInfo.ClothesState.Underwear) { maid.body0.SetMaskMode(TBody.MaskMode.Underwear); } if (f_cs == SceneEditInfo.ClothesState.Wear) { maid.body0.SetMaskMode(TBody.MaskMode.None); } } public void SetCameraOffset(SceneEdit.CAM_OFFS f_eCamOffs) { if (GameMain.Instance.MainCamera == null) { return; } if (f_eCamOffs == SceneEdit.CAM_OFFS.CENTER) { GameMain.Instance.MainCamera.SetTargetOffset(new Vector3(0f, 0f, 0f), true); } else if (f_eCamOffs == SceneEdit.CAM_OFFS.RIGHT) { GameMain.Instance.MainCamera.SetTargetOffset(new Vector3((float)Screen.width / 3f * 2f - (float)Screen.width / 2f, 0f, 0f), true); } else if (f_eCamOffs == SceneEdit.CAM_OFFS.RIGHT_MORE) { GameMain.Instance.MainCamera.SetTargetOffset(new Vector3((float)Screen.width / 256f * 183f - (float)Screen.width / 2f, 0f, 0f), true); } this.m_eCamOffsNow = f_eCamOffs; } public void CallHowToNameDialog() { this.m_FFNameDlg.ShowFromLanguageTerm("Dialog/名前と苗字のどちらで呼びますか?", "Dialog/result/苗字で呼ぶ", delegate { this.m_FFNameDlg.Close(); this.m_maid.status.isFirstNameCall = false; }, "Dialog/result/名前で呼ぶ", delegate { this.m_FFNameDlg.Close(); this.m_maid.status.isFirstNameCall = true; }); } public void CallSettingNamePanel() { GameObject childObject = UTY.GetChildObject(this.m_goUIRoot, "NameSettingPanel", false); if (childObject != null) { SceneEditNameSettingPanel component = childObject.GetComponent(); if (component != null) { component.gameObject.SetActive(true); component.Call(); } } } private void OnEditOk() { if (GameMain.Instance.SysDlg.IsDecided && !GameMain.Instance.CharacterMgr.IsBusy()) { Maid maid = this.m_maid; if (this.customPartsWindowVisibleButton.visible) { this.customPartsWindowVisibleButton.windowVisible = false; } maid.body0.SetMaskMode(TBody.MaskMode.None); if (this.modeType == SceneEdit.ModeType.OriginalChara || this.modeType == SceneEdit.ModeType.MainChara) { this.m_FFNameDlg.ShowFromLanguageTerm("Dialog/名前と苗字のどちらで呼びますか?", "Dialog/result/苗字で呼ぶ", new FFNameDialog.OnClick(this.OnFFNameFamily), "Dialog/result/名前で呼ぶ", new FFNameDialog.OnClick(this.OnFFNameFirst)); } else { this.OnEndDlgOk(); } } } private void OnFFNameFirst() { this.m_FFNameDlg.Close(); this.m_maid.status.isFirstNameCall = true; this.Conform(); } private void OnFFNameFamily() { this.m_FFNameDlg.Close(); this.m_maid.status.isFirstNameCall = false; this.Conform(); } private void Conform() { this.m_maid.boMabataki = false; GameMain.Instance.SysDlg.ShowFromLanguageTerm("Dialog/このメイドにしますか?", SystemDialog.TYPE.OK_CANCEL, new SystemDialog.OnClick(this.OnEndDlgOk), new SystemDialog.OnClick(this.OnEndDlgCancel)); } private void OnEndDlgOk() { BaseMgr.Instance.UpdateProfileData(true); GameMain.Instance.SysDlg.Close(); UICamera.InputEnable = false; this.m_maid.ThumShotCamMove(); this.m_maid.body0.trsLookTarget = GameMain.Instance.ThumCamera.transform; this.m_maid.boMabataki = false; if (this.modeType == SceneEdit.ModeType.CostumeEdit) { for (int i = 53; i <= 52; i++) { this.maid.ResetProp((MPN)i, true); } } base.StartCoroutine(this.CoWaitPutCloth()); } private IEnumerator CoWaitPutCloth() { if (this.modeType == SceneEdit.ModeType.CostumeEdit) { while (GameMain.Instance.CharacterMgr.IsBusy()) { yield return null; } } for (int nF = 0; nF < 90; nF++) { yield return null; } GameMain.Instance.SoundMgr.PlaySe("SE022.ogg", false); if (this.modeType == SceneEdit.ModeType.CostumeEdit) { this.m_maid.ThumShotCustom(GameMain.Instance.FacilityMgr.tempSelectFacility.GetFacilityEditCostumeThumbnailName(), true); } else { this.m_maid.ThumShot(); } this.m_maid.boMabataki = true; this.m_maid.body0.trsLookTarget = null; this.m_currentScriptFile = GameMain.Instance.ScriptMgr.adv_kag.kag.GetCurrentFileName(); GameMain.Instance.MainCamera.FadeOut(1f, false, new CameraMain.dgOnCompleteFade(this.CreateKasizukiThumShot), true, default(Color)); yield break; } private void OnEndDlgCancel() { GameMain.Instance.SysDlg.Close(); this.m_maid.boMabataki = true; } private void OnEditCancel() { } private void CreateKasizukiThumShot() { GameMain.Instance.MainCamera.SetTargetOffset(Vector3.zero, false); if (this.modeType == SceneEdit.ModeType.CostumeEdit) { this.OnEndScene(); return; } ScriptManager scriptMgr = GameMain.Instance.ScriptMgr; scriptMgr.adv_kag.LoadScriptFile("KasizukiThumShot.ks", string.Empty); scriptMgr.adv_kag.Exec(); base.StartCoroutine(this.CoroutineKasizukiThumShot()); } private IEnumerator CoroutineKasizukiThumShot() { for (int nF = 0; nF < 30; nF++) { yield return null; } Camera thumCamera = GameMain.Instance.ThumCamera; CameraMain mainCamera = GameMain.Instance.MainCamera; thumCamera.transform.position = mainCamera.transform.position; thumCamera.transform.rotation = mainCamera.transform.rotation; float backup = thumCamera.fieldOfView; thumCamera.fieldOfView = mainCamera.camera.fieldOfView; this.m_maid.body0.trsLookTarget = thumCamera.transform; for (int nF2 = 0; nF2 < 30; nF2++) { yield return null; } this.m_maid.ThumShotCustom(KasizukiManager.CreateMaidTmpThumbName(this.m_maid), false); thumCamera.fieldOfView = backup; this.OnEndScene(); yield break; } private void OnEndScene() { if (GameMain.Instance.VRMode) { GameMain.Instance.CharacterMgr.ResetCharaPosAll(); } UICamera.InputEnable = true; if (!string.IsNullOrEmpty(this.m_strScriptArg)) { Debug.Log("OnEndScene JumpTo " + this.m_strScriptArg); GameMain.Instance.ScriptMgr.adv_kag.LoadScriptFile(this.m_currentScriptFile, this.m_strScriptArg); GameMain.Instance.ScriptMgr.adv_kag.Exec(); } } public bool ClickEmulate(SceneEditInfo.EMenuCategory category, bool forceViewOff = false) { UIButton current = UIButton.current; for (int i = 0; i < this.m_listCategory.Count; i++) { if (this.m_listCategory[i].m_eCategory == category && i < this.m_listBtnCate.Count) { UIButton componentInChildren = this.m_listBtnCate[i].GetComponentInChildren(); if (componentInChildren != null) { UIButton.current = componentInChildren; bool visibleAutoCam = this.m_viewreset.GetVisibleAutoCam(); if (forceViewOff && visibleAutoCam) { this.m_viewreset.SetVisibleAutoCam(false); } this.ClickCallback(); if (visibleAutoCam != this.m_viewreset.GetVisibleAutoCam()) { this.m_viewreset.SetVisibleAutoCam(false); } UIButton.current = current; return true; } } } return false; } public bool isEnabledButton(MPN mpn) { switch (mpn) { case MPN.skin: mpn = MPN.folder_skin; break; case MPN.underhair: mpn = MPN.folder_underhair; break; case MPN.mayu: mpn = MPN.folder_mayu; break; case MPN.eye: mpn = MPN.folder_eye; break; } if (!SceneEditInfo.m_dicPartsTypePair.ContainsKey(mpn)) { return false; } SceneEditInfo.CCateNameType ccateNameType = SceneEditInfo.m_dicPartsTypePair[mpn]; SceneEditInfo.EMenuCategory eMenuCate = ccateNameType.m_eMenuCate; string ePartsType = ccateNameType.m_ePartsType; SceneEdit.SCategory scategory = null; int num = 0; while (num < this.m_listCategory.Count && scategory == null) { if (this.m_listCategory[num].m_eCategory == eMenuCate) { scategory = this.m_listCategory[num]; } num++; } for (int i = 0; i < scategory.m_listPartsType.Count; i++) { if (scategory.m_listPartsType[i].m_ePartsType == ePartsType) { return scategory.m_listPartsType[i].m_isEnabled; } } return false; } public bool ClickEmulate(MPN mpn, bool forceViewOff = false) { switch (mpn) { case MPN.skin: mpn = MPN.folder_skin; break; case MPN.underhair: mpn = MPN.folder_underhair; break; case MPN.mayu: mpn = MPN.folder_mayu; break; case MPN.eye: mpn = MPN.folder_eye; break; } if (!SceneEditInfo.m_dicPartsTypePair.ContainsKey(mpn)) { return false; } SceneEditInfo.CCateNameType ccateNameType = SceneEditInfo.m_dicPartsTypePair[mpn]; return this.ClickEmulate(ccateNameType.m_eMenuCate, ccateNameType.m_ePartsType, forceViewOff); } public bool ClickEmulate(SceneEditInfo.EMenuCategory category, string partsType, bool forceViewOff = false) { if (!this.ClickEmulate(category, false) || category == SceneEditInfo.EMenuCategory.プリセット || category == SceneEditInfo.EMenuCategory.ランダム || category == SceneEditInfo.EMenuCategory.プロフィ\u30FCル) { return false; } UIButton current = UIButton.current; SceneEdit.SCategory scategory = null; int num = 0; while (num < this.m_listCategory.Count && scategory == null) { if (this.m_listCategory[num].m_eCategory == category) { scategory = this.m_listCategory[num]; } num++; } for (int i = 0; i < scategory.m_listPartsType.Count; i++) { if (scategory.m_listPartsType[i].m_ePartsType == partsType && i < this.m_listBtnPartsType.Count) { UIButton componentInChildren = this.m_listBtnPartsType[i].GetComponentInChildren(); if (componentInChildren != null) { UIButton.current = componentInChildren; bool visibleAutoCam = this.m_viewreset.GetVisibleAutoCam(); if (forceViewOff && visibleAutoCam) { this.m_viewreset.SetVisibleAutoCam(false); } this.ClickCallback(); if (visibleAutoCam != this.m_viewreset.GetVisibleAutoCam()) { this.m_viewreset.SetVisibleAutoCam(false); } UIButton.current = current; return true; } } } return false; } private void OnClickViewReset() { this.CameraReset(0.5f); } private void OnTouchJump(SceneEdit.TouchType type) { if (GameMain.Instance.VRMode || this.customPartsWindowVisibleButton.windowVisible || this.colorPaletteMgr.gameObject.activeSelf || !UICamera.InputEnable || this.m_uipViewCancel.gameObject.activeSelf) { return; } if (UICamera.Raycast(Input.mousePosition)) { return; } MPN mpn = MPN.HeadX; switch (type) { case SceneEdit.TouchType.Head: mpn = MPN.HeadX; break; case SceneEdit.TouchType.Bust: mpn = MPN.MuneL; break; case SceneEdit.TouchType.UpperBody: mpn = MPN.west; break; case SceneEdit.TouchType.LowerBody: mpn = MPN.koshi; break; case SceneEdit.TouchType.Leg: mpn = MPN.DouPer; break; } if (this.isEnabledButton(mpn)) { this.ClickEmulate(mpn, false); } } private void OnClickAutoCam() { this.m_viewreset.SetVisibleAutoCam(!this.m_viewreset.GetVisibleAutoCam()); } private void OnClickEyeToCam() { Maid maid = this.m_maid; this.m_viewreset.SetVisibleEyeToCam(!this.m_viewreset.GetVisibleEyeToCam()); if (this.m_viewreset.GetVisibleEyeToCam()) { maid.EyeToCamera(Maid.EyeMoveType.目と顔を向ける, 0.8f); } else { maid.EyeToCamera(Maid.EyeMoveType.無視する, 0.8f); } } private void CameraReset(float f_fTime = 0.5f) { this.m_cameraMoveSupport.moveTime = f_fTime; this.m_cameraMoveSupport.ResetCamera(); } private void CameraMoveTo(Vector3 f_vTarget, float f_fDistance, Vector2 f_vAngle, float f_fTime = 0.5f) { this.m_cameraMoveSupport.moveTime = f_fTime; this.m_cameraMoveSupport.StartCameraPosition(f_vTarget, f_fDistance, f_vAngle); } public void OnDestroy() { if (GameMain.Instance.isQuitting) { return; } iTween.Stop(base.gameObject); foreach (KeyValuePair> keyValuePair in this.m_dicVoice) { foreach (SceneEdit.PVBInfo pvbinfo in keyValuePair.Value) { UnityEngine.Object.Destroy(pvbinfo.texIcon); } } CharacterMgr.EditModeLookHaveItem = false; GameMain.Instance.ScriptMgr.StopMotionScript(); Maid maid = this.m_maid; if (maid != null) { MaidColliderCollect.RemoveColliderAll(maid); maid.body0.SetMaskMode(TBody.MaskMode.None); maid.OpenMouthLookTooth(false); maid.IKTargetToBone("左手", null, "無し", Vector3.zero, IKCtrlData.IKAttachType.Point, false, false, false); maid.IKTargetToBone("右手", null, "無し", Vector3.zero, IKCtrlData.IKAttachType.Point, false, false, false); maid.Visible = false; } this.SetCameraOffset(SceneEdit.CAM_OFFS.CENTER); if (!this.m_bVRComMode) { GameMain.Instance.BgMgr.DeleteBg(); } NUty.GCFree(); } public void UpdateCurrentItemPanel(bool resetScrollBar) { if (this.m_Panel_PartsType.goMain.activeSelf && (this.m_Panel_MenuItem.goMain.activeSelf || this.m_Panel_SetItem.goMain.activeSelf)) { ButtonEdit[] componentsInChildren = this.m_Panel_PartsType.goGrid.GetComponentsInChildren(); foreach (ButtonEdit buttonEdit in componentsInChildren) { if (buttonEdit.m_goFrame.GetComponent().enabled) { if (buttonEdit.m_PartsType != null) { UIButton component = buttonEdit.GetComponent(); UIButton current = UIButton.current; UIButton.current = component; bool visibleAutoCam = this.m_viewreset.GetVisibleAutoCam(); this.m_viewreset.SetVisibleAutoCam(false); this.ClickCallback(); this.m_viewreset.SetVisibleAutoCam(visibleAutoCam); UIButton.current = current; if (resetScrollBar && this.m_Panel_MenuItem.goMain.activeSelf) { this.m_Panel_MenuItem.gcScrollBar.value = 0f; } else if (resetScrollBar && this.m_Panel_SetItem.goMain.activeSelf) { this.m_Panel_SetItem.gcScrollBar.value = 0f; } break; } } } } } public void Update() { if (GameMain.Instance.VRMode) { if (!this.m_bVRComMode) { if (Input.GetKeyUp(KeyCode.B)) { this.bgIconWindow.NextBG(); } if (Input.GetKeyUp(KeyCode.P)) { this.pauseIconWindow.NextPose(); } if (Input.GetKeyUp(KeyCode.F5) || Input.GetKeyUp(KeyCode.R)) { GameMain.Instance.CharacterMgr.ResetCharaPosAll(); } } if (Input.GetKey(KeyCode.LeftArrow)) { Maid maid = GameMain.Instance.CharacterMgr.GetMaid(0); if (maid != null) { maid.gameObject.transform.Rotate(new Vector3(0f, 60f, 0f) * Time.deltaTime); } } if (Input.GetKey(KeyCode.RightArrow)) { Maid maid2 = GameMain.Instance.CharacterMgr.GetMaid(0); if (maid2 != null) { maid2.gameObject.transform.Rotate(new Vector3(0f, -60f, 0f) * Time.deltaTime); } } } if (GameMain.Instance.CharacterMgr.IsBusy()) { this.updateCustomViewFlag = true; return; } if (this.updateCustomViewFlag) { this.updateCustomViewFlag = false; this.customViewWindow.UpdateAllItem(); } } private bool updateCustomViewFlag; private List touchJumpColliderList = new List(); private List m_listCategory = new List(); private List m_listBtnCate = new List(); private List m_listBtnPartsType = new List(); private List m_listBtnMenuItem = new List(); private List m_listSliderItem = new List(); private List m_listBtnColorSet = new List(); private List m_listBtnGroupMember = new List(); public bool m_bOpenSetGroupPanel; public UIButton EditItemGroupSwitch; public UIButton EditTouchJumpSwitch; [SerializeField] public ColorPaletteManager colorPaletteMgr; [SerializeField] private WindowPartsWindowVisible customPartsWindowVisibleButton; [SerializeField] public SceneEdit.SubPropMpnData[] subPropDatas; private SceneEdit.UIPanelSet m_Panel_Category; private SceneEdit.UIPanelSet m_Panel_PartsType; private SceneEdit.UIPanelSet m_Panel_MenuItem; private SceneEdit.UIPanelSet m_Panel_SetItem; private SceneEdit.UIPanelSet m_Panel_SliderItem; private SceneEdit.UIPanelSet m_Panel_ColorSet; private SceneEdit.UIPanelSet m_Panel_GroupSet; private WFCheckBox m_CheckBoxMayuDrawPriority; public BetterList m_listNg2Cate = new BetterList(); public BetterList m_listNg2PartsType = new BetterList(); public BetterList m_listNg2MenuItem = new BetterList(); public TextMesh m_tmDebugText; private SceneEdit.MenuItemSet m_misDelOnly; public Dictionary> m_dicColor = new Dictionary>(); public Dictionary m_menuRidDic; public Dictionary> m_dicVoice = new Dictionary>(); public GameObject m_goUIRoot; private ItemInfoWnd m_info; private EditOkCancel m_okcancel; private EditViewReset m_viewreset; public List m_listPanel = new List(); private UIPanel m_uipViewCancel; private WfCameraMoveSupport m_cameraMoveSupport; private Maid m_maid; private string m_strScriptArg; private string m_currentScriptFile; private bool m_bVRComMode; private FFNameDialog m_FFNameDlg; private EditMod m_EditMod; private string last_select_category_name_ = string.Empty; private Dictionary backup_category_scroll_pos_ = new Dictionary(); private int m_nDemoBgNo; private MPN m_nNowMPN; private static byte[] m_byItemFileBuffer; private SceneEdit.CAM_OFFS m_eCamOffsNow; private SceneEdit.CAM_OFFS m_eCamOffsBack; public enum ModeType { OriginalChara, MainChara, AfterEdit, CostumeEdit } private enum TouchType { Head, Bust, UpperBody, LowerBody, Leg } public class SMenuItem : IDisposable { public string menuNameCurrentLanguage { get { return this.m_strMenuName; } } public string infoTextCurrentLanguage { get { return this.m_strInfo; } } public void Dispose() { UnityEngine.Object.DestroyImmediate(this.m_goButton); UnityEngine.Object.DestroyImmediate(this.m_texIcon); UnityEngine.Object.DestroyImmediate(this.m_texIconRandomColor); this.m_texIcon = null; } public void SortColorItem() { this.m_listColorSet.Sort(delegate(SceneEdit.SMenuItem x, SceneEdit.SMenuItem y) { if (x.m_fPriority == y.m_fPriority) { return 0; } if (x.m_fPriority < y.m_fPriority) { return -1; } if (x.m_fPriority > y.m_fPriority) { return 1; } return 0; }); } public bool Compare(SceneEdit.SMenuItem item) { bool flag = true; flag |= (this.m_strMenuName == item.m_strMenuName); flag |= (this.m_strInfo == item.m_strInfo); flag |= (this.m_mpn == item.m_mpn); flag |= (this.m_strCateName == item.m_strCateName); flag |= (this.m_eColorSetMPN == item.m_eColorSetMPN); flag |= (this.m_strMenuNameInColorSet == item.m_strMenuNameInColorSet); flag |= (this.m_pcMultiColorID == item.m_pcMultiColorID); flag |= (this.m_boDelOnly == item.m_boDelOnly); flag |= (this.m_fPriority == item.m_fPriority); flag |= (this.m_bMan == item.m_bMan); return flag | this.m_bOld == item.m_bOld; } public SceneEdit.SPartsType m_ParentPartsType; public string m_strCateName; public string m_strMenuName = string.Empty; public MPN m_mpn; public bool m_bColor; public MPN m_eColorSetMPN; public string m_strMenuNameInColorSet; public List m_listColorSet = new List(); public MaidParts.PARTS_COLOR m_pcMultiColorID = MaidParts.PARTS_COLOR.NONE; public float m_fPriority; public bool m_bMan; public bool m_bOld; public bool m_boDelOnly; public string m_strInfo = string.Empty; public Texture2D m_texIcon; public Texture2D m_texIconRandomColor; public string m_strMenuFileName; public int m_nMenuFileRID; public int m_nSliderValue; public GameObject m_goButton; public bool m_bMod; public bool m_bGroupLeader; public List m_listMember; public bool m_bMember; public SceneEdit.SMenuItem m_leaderMenu; } public class SPartsType : IDisposable { public SPartsType(SceneEditInfo.CCateNameType.EType f_eType, MPN f_mpn, string f_strPartsTypeName, string f_ePartsType) { this.m_nIdx = SceneEditInfo.m_dicPartsTypePair[f_mpn].m_nIdx; this.m_eType = f_eType; this.m_mpn = f_mpn; this.m_strPartsTypeName = f_strPartsTypeName; this.m_ePartsType = f_ePartsType; this.m_isEnabled = true; } public void Dispose() { for (int i = 0; i < this.m_listMenu.Count; i++) { this.m_listMenu[i].Dispose(); } UnityEngine.Object.DestroyImmediate(this.m_goButton); UnityEngine.Object.DestroyImmediate(this.m_goPanelMenu); } public void SortItem() { this.m_listMenu.Sort(delegate(SceneEdit.SMenuItem x, SceneEdit.SMenuItem y) { if (x.m_fPriority == y.m_fPriority) { int num = x.m_strMenuName.CompareTo(y.m_strMenuName); if (num == 0) { return 0; } if (num > 0) { return 1; } if (num < 0) { return -1; } return 0; } else { if (x.m_fPriority > y.m_fPriority) { return 1; } if (x.m_fPriority < y.m_fPriority) { return -1; } return 0; } }); for (int i = 0; i < this.m_listMenu.Count; i++) { this.m_listMenu[i].SortColorItem(); } } public SceneEditInfo.CCateNameType.EType m_eType; public int m_nIdx; public string m_strPartsTypeName; public MPN m_mpn; public string m_ePartsType; public bool m_isEnabled; public List m_listMenu = new List(); public GameObject m_goButton; public GameObject m_goPanelMenu; } public class SCategory : IDisposable { public SCategory(string f_strCateName, SceneEditInfo.EMenuCategory f_eCategory) { this.m_strCateName = f_strCateName; this.m_eCategory = f_eCategory; this.m_isEnabled = true; } public void Dispose() { foreach (SceneEdit.SPartsType spartsType in this.m_listPartsType) { spartsType.Dispose(); } UnityEngine.Object.DestroyImmediate(this.m_goButton); UnityEngine.Object.DestroyImmediate(this.m_goPanelPartsType); } public void SortPartsType() { this.m_listPartsType.Sort(delegate(SceneEdit.SPartsType x, SceneEdit.SPartsType y) { if (x.m_nIdx == y.m_nIdx) { return 0; } if (x.m_nIdx < y.m_nIdx) { return -1; } if (x.m_nIdx > y.m_nIdx) { return 1; } return 0; }); } public void SortItem() { foreach (SceneEdit.SPartsType spartsType in this.m_listPartsType) { spartsType.SortItem(); } } public SceneEditInfo.EMenuCategory m_eCategory; public string m_strCateName; public GameObject m_goButton; public GameObject m_goPanelPartsType; public bool m_isEnabled; public List m_listPartsType = new List(); } private class UIPanelSet { public UIPanelSet(GameObject f_goUIRoot, string f_strPath) { this.goMain = UTY.GetChildObject(f_goUIRoot, f_strPath, false); GameObject childObject = UTY.GetChildObject(this.goMain, "Scroll View", false); this.gcScrollView = childObject.GetComponent(); this.goGrid = UTY.GetChildObject(childObject, "UIGrid", false); this.gcUIGrid = this.goGrid.GetComponentsInChildren(true)[0]; this.goScrollBar = UTY.GetChildObject(this.goMain, "Scroll Bar", false); this.gcScrollBar = this.goScrollBar.GetComponent(); this.goDragMat = UTY.GetChildObject(this.goMain, "DragMat", false); this.goArrow = UTY.GetChildObject(this.goMain, "Arrow", false); this.goArrow.SetActive(false); } public void SetActive(bool f_bActive) { this.goMain.SetActive(f_bActive); } public void ResetScrollPos(float f_fPos = 0.5f) { this.gcUIGrid.Reposition(); this.gcScrollView.ResetPosition(); this.gcScrollBar.value = f_fPos; } public void VisibleArrow(bool f_bActive) { this.goArrow.SetActive(f_bActive); } public void MoveArrow(GameObject f_goCurrentBtn) { if (this.goArrow == null) { return; } Transform parent = f_goCurrentBtn.transform.parent; Vector3 position = parent.TransformPoint(new Vector3(0f, 0f, 0f)); Vector3 localPosition = this.goMain.transform.InverseTransformPoint(position); localPosition.x = this.goArrow.transform.localPosition.x; localPosition.y += 18f; this.goArrow.transform.localPosition = localPosition; } public GameObject goMain; public GameObject goGrid; public UIGrid gcUIGrid; public GameObject goScrollBar; public UIScrollView gcScrollView; public UIScrollBar gcScrollBar; public GameObject goDragMat; private GameObject goArrow; } private class MenuItemSet { public MenuItemSet(GameObject f_goParentGrid, SceneEdit.SMenuItem f_mi, string f_strPrefabName, bool f_bSelectedFrame) { this.mi = f_mi; this.m_bSelectedFrame = f_bSelectedFrame; UnityEngine.Object @object = Resources.Load("SceneEdit/MainMenu/Prefab/" + f_strPrefabName); this.goItem = NGUITools.AddChild(f_goParentGrid, @object as GameObject); this.gcBtnEdit = this.goItem.GetComponentsInChildren(true)[0]; this.gcBtnEdit.m_MenuItem = f_mi; this.goFrame = UTY.GetChildObject(this.goItem, "Frame", false); this.goFrame.SetActive(false); this.goOld = UTY.GetChildObject(this.goItem, "Old", false); this.goOld.SetActive(f_mi.m_bOld); this.gcBtn = this.goItem.GetComponentsInChildren(true)[0]; this.gcEvent = this.goItem.GetComponentsInChildren(true)[0]; if (f_mi.m_texIcon != null) { Sprite normalSprite2D = Sprite.Create(f_mi.m_texIcon, new Rect(0f, 0f, (float)f_mi.m_texIcon.width, (float)f_mi.m_texIcon.height), default(Vector2)); this.gcBtn.normalSprite2D = normalSprite2D; } } public void ToSmall() { if (this.gcBtnEdit.m_MenuItem.m_texIcon.width == 138 && this.gcBtnEdit.m_MenuItem.m_texIcon.height == 200) { this.gcBtn.GetComponent().SetDimensions(80, 116); this.gcBtn.GetComponent().size = new Vector3(80f, 116f, 0f); this.goOld.GetComponent().ResetAnchors(); } } public void Clear() { if (this.goItem != null) { UnityEngine.Object.DestroyImmediate(this.goItem); } } public void Selected(bool f_bSelect) { if (this.m_bSelectedFrame) { this.goFrame.SetActive(f_bSelect); } } public GameObject goItem; public ButtonEdit gcBtnEdit; private GameObject goFrame; private GameObject goOld; public UIButton gcBtn; public UIEventTrigger gcEvent; public SceneEdit.SMenuItem mi; private bool m_bSelectedFrame = true; } private class ColorItemSet { public ColorItemSet(GameObject f_goParentGrid, SceneEdit.SMenuItem f_mi) { this.mi = f_mi; UnityEngine.Object @object = Resources.Load("SceneEdit/MainMenu/Prefab/ButtonColor"); this.goItem = NGUITools.AddChild(f_goParentGrid, @object as GameObject); this.goFrame = UTY.GetChildObject(this.goItem, "Frame", false); this.gcBtnEdit = this.goItem.GetComponentsInChildren(true)[0]; this.gcBtnEdit.m_MenuItem = f_mi; this.gcBtn = this.goItem.GetComponentsInChildren(true)[0]; this.gcEvent = this.goItem.GetComponentsInChildren(true)[0]; NDebug.Assert(f_mi.m_texIcon != null, "アイコンテクスチャがありません。" + f_mi.m_strMenuFileName); if (f_mi.m_texIcon != null) { Sprite normalSprite2D = Sprite.Create(f_mi.m_texIcon, new Rect(0f, 0f, (float)f_mi.m_texIcon.width, (float)f_mi.m_texIcon.height), default(Vector2)); this.gcBtn.normalSprite2D = normalSprite2D; } } public void Clear() { if (this.goItem != null) { UnityEngine.Object.DestroyImmediate(this.goItem); } } public void Selected(bool f_bSelect) { this.goFrame.SetActive(f_bSelect); } public GameObject goItem; public ButtonEdit gcBtnEdit; private GameObject goFrame; public UIButton gcBtn; public UIEventTrigger gcEvent; public SceneEdit.SMenuItem mi; } private class SliderItemSet { public SliderItemSet(GameObject f_goParentGrid, SceneEdit.SMenuItem f_mi) { this.mpn = f_mi.m_mpn; UnityEngine.Object @object = Resources.Load("SceneEdit/MainMenu/Prefab/Slider"); this.goMain = NGUITools.AddChild(f_goParentGrid, @object as GameObject); this.gcSlider = this.goMain.GetComponentsInChildren(true)[0]; GameObject childObject = UTY.GetChildObject(this.goMain, "CategoryTitle/Name", false); this.gcLabel = childObject.GetComponent(); Localize localize = this.gcLabel.gameObject.AddComponent(); localize.SetTerm("SceneEdit/カテゴリー/スライダー/" + f_mi.m_strMenuName); GameObject childObject2 = UTY.GetChildObject(this.goMain, "CategoryTitle/Number/Value", false); this.gcValue = childObject2.GetComponent(); this.gcValue.text = "000"; this.goMain.name = this.goMain.name + f_mi.m_strMenuName; this.gcBtnEdit = this.goMain.GetComponentsInChildren(true)[0]; this.gcBtnEdit.m_SliderItem = f_mi; } public void Clear() { if (this.goMain != null) { UnityEngine.Object.DestroyImmediate(this.goMain); } } public void SetValue(float f_fValue, string f_strValue = null) { this.gcSlider.value = f_fValue; if (f_strValue == null) { this.gcValue.text = f_fValue.ToString(); } else { this.gcValue.text = f_strValue; } } public GameObject goMain; public UISlider gcSlider; public UILabel gcLabel; public UILabel gcValue; public ButtonEdit gcBtnEdit; private MPN mpn; } [Serializable] public struct SubPropMpnData { public MPN mpn { get { return this.manager.targetMpn; } } public SubSlotEditManager manager; } public class PVBInfo { public string strIconName; public Texture2D texIcon; } public class VoiceInfo : SceneEdit.PVBInfo { public string strVoiceFileName; public Personal.Data personal; public string strFace; public string strFace2; } public enum CAM_OFFS { CENTER, RIGHT, RIGHT_MORE } }