static void HoushiCumFix(Houshi __instance, HSceneSprite ___sprite) { if (Singleton <HSceneFlagCtrl> .Instance.initiative >= 1 && Singleton <HSceneFlagCtrl> .Instance.feel_m >= 1f) { // Roll random in/out if (___sprite.IsFinishVisible(3) || ___sprite.IsFinishVisible(4)) { float finishRoll = UnityEngine.Random.value; if (___sprite.IsFinishVisible(3) && finishRoll <= .33f) { Singleton <HSceneFlagCtrl> .Instance.click = HSceneFlagCtrl.ClickKind.FinishDrink; } else if (___sprite.IsFinishVisible(4) && (finishRoll > .33f && finishRoll <= .66f)) { Singleton <HSceneFlagCtrl> .Instance.click = HSceneFlagCtrl.ClickKind.FinishVomit; } else { Singleton <HSceneFlagCtrl> .Instance.click = HSceneFlagCtrl.ClickKind.FinishOutSide; } } else { Singleton <HSceneFlagCtrl> .Instance.click = HSceneFlagCtrl.ClickKind.FinishOutSide; } } }
private static void CheckMotionLimitHook(ref HSceneSprite __instance, ref bool __result, HScene.AnimationListInfo lstAnimInfo) { if (__result == false && unlockAll.Value) { bool realyFalse = false; if (!realyFalse) { __result = true; } } }
public static void HScene_EndProc_Patch() { activeDraggerUI = false; activeAnimationUI = false; if (characters != null) { characters.Clear(); characters = null; } hScene = null; hSprite = null; hFlagCtrl = null; }
public ProcBase(DeliveryMember _delivery) { this.ctrlFlag = _delivery.ctrlFlag; this.chaMales = _delivery.chaMales; this.chaFemales = _delivery.chaFemales; this.fade = _delivery.fade; this.ctrlMeta = _delivery.ctrlMeta; this.sprite = _delivery.sprite; this.item = _delivery.item; this.feelHit = _delivery.feelHit; this.auto = _delivery.auto; this.voice = _delivery.voice; this.particle = _delivery.particle; this.se = _delivery.se; this.lstMotionIK = _delivery.lstMotionIK; this.AtariEffect = _delivery.AtariEffect; this.FeelHitEffect3D = _delivery.FeelHitEffect3D; this.Hitem = (HSceneSpriteHitem)this.sprite.objHItem.GetComponent <HSceneSpriteHitem>(); if (Object.op_Equality((Object)ProcBase.hSceneManager, (Object)null)) { ProcBase.hSceneManager = Singleton <HSceneManager> .Instance; } for (int index = 0; index < 2; ++index) { this.randVoicePlays[index] = new ShuffleRand(-1); this.randVoicePlays[index].Init(index != 0 ? 2 : 3); } ObservableExtensions.Subscribe <bool>(Observable.Where <bool>((IObservable <M0>) this.isAtariHit, (Func <M0, bool>)(x => this.isAtariHitOld != x && this.CatID != 1)), (Action <M0>)(x => { if (this.CatID == 7 && Singleton <HSceneFlagCtrl> .Instance.nowAnimationInfo.ActionCtrl.Item2 == 1 || Singleton <HSceneFlagCtrl> .Instance.nowAnimationInfo.ActionCtrl.Item2 == 2) { return; } this.isAtariHitOld = x; if (x) { this.AtariEffect.Play(); if (!Singleton <HSceneManager> .Instance.isParticle) { return; } this.FeelHitEffect3D.Play(); } else { this.AtariEffect.Stop(); this.FeelHitEffect3D.Stop(); } })); }
public static bool Prefix_HSceneSprite_SetVisibleLeaveItToYou(HSceneSprite __instance, bool _visible, bool _judgeLeaveItToYou = false) { if (!VisibleAutoH.Value) { return(true); } // Force auto H toggle to be visible. __instance.tglLeaveItToYou.gameObject.SetActive(true); return(false); }
public static bool Prefix_HSceneSprite_SetAnimationMenu(HSceneSprite __instance, ref bool __result) { if (!AllHPos.Value) { return(true); } // Activate all H categories. __result = true; __instance.categoryMain.SetActive(true, -1); return(false); }
void UpdateVisibility() { if (_Canvas) { _Canvas.gameObject.SetActive(Singleton <HScene> .Instance); var newSprite = FindObjectOfType <HSceneSprite>(); if (IsVisible && newSprite != _Sprite) { _Sprite = newSprite; _CachedActiveButtons.Clear(); _CurrentVisibleButtons.Clear(); _Buttons.Clear(); _LastSync = 0; foreach (var stopControl in FindObjectsOfType <SpriteGaugeStopCtrl>()) { var button = new PlayButton(); var toggle = stopControl.GetComponent <Toggle>(); button.OnSelect.AddListener(delegate { toggle.OnPointerEnter(null); }); button.OnUnselect.AddListener(delegate { toggle.OnPointerExit(null); }); button.OnActivate.AddListener(delegate { toggle.isOn = !toggle.isOn; stopControl.OnChangeValueStopFeel(toggle.isOn); }); button.Degrees = 45; if (stopControl.name.Contains("Female")) { button.StartAngle = 270 - 10 - button.Degrees; } else { button.StartAngle = 270 + 10; } _Buttons.Add(button); } if (_Sprite) { PrepareButtons(_Sprite); } } } }
public static HSceneSpriteDummy Create(HSceneSprite realSprite) { var sprite = new GameObject().CopyComponentFrom <HSceneSprite, HSceneSpriteDummy>(realSprite); if (!sprite.categoryFinish) { if (realSprite.categoryFinish) { VRLog.Warn("This ain't good man!"); } } sprite._Base = realSprite; if (!realSprite) { throw new ArgumentNullException(); } return(sprite); }
private static void CheckMotionLimitHook(ref HSceneSprite __instance, ref bool __result, HScene.AnimationListInfo lstAnimInfo) { if (__result == false && unlockAll.Value) { bool realyFalse = false; if (__instance.chaFemales.Length > 1 && __instance.chaFemales[1] == null && (lstAnimInfo.ActionCtrl.Item1 == 4 || lstAnimInfo.ActionCtrl.Item1 == 5)) { realyFalse = true; } if (__instance.chaMales.Length > 1 && __instance.chaMales[1] == null && lstAnimInfo.ActionCtrl.Item1 == 6) { realyFalse = true; } if (__instance.EventNo == 19) { if (lstAnimInfo.ActionCtrl.Item1 == 4 || lstAnimInfo.ActionCtrl.Item1 == 5 || lstAnimInfo.ActionCtrl.Item1 == 6) { realyFalse = true; } if (lstAnimInfo.ActionCtrl.Item1 == 3 && lstAnimInfo.id == 0) { realyFalse = true; } } if (!__instance.CheckEventLimit(lstAnimInfo.Event)) { realyFalse = true; } if (!__instance.CheckPlace(lstAnimInfo)) { realyFalse = true; } if (!realyFalse) { __result = true; } } }
public static bool Prefix_HSceneSprite_MainCategoryOfLeaveItToYou(HSceneSprite __instance, bool _isLeaveItToYou) { if (AllHPos.Value) { if (_isLeaveItToYou) { __instance.MainCategoryOfLeaveItToYou(false); return(false); } } else if (VisibleAutoH.Value) { if (!_isLeaveItToYou) { __instance.MainCategoryOfLeaveItToYou(true); return(false); } } return(true); }
protected override void OnUpdate() { base.OnUpdate(); var device = this.Controller; var touchpad_position = device.GetAxis(); var touchpad_direction = GetTouchpadDirection(touchpad_position); var touchpad_click_up = device.GetPressUp(EVRButtonId.k_EButton_SteamVR_Touchpad); var touchpad_touch = device.GetTouch(EVRButtonId.k_EButton_SteamVR_Touchpad); var touchpad_click_down = device.GetPress(EVRButtonId.k_EButton_SteamVR_Touchpad); var tGrip = device.GetPressUp(EVRButtonId.k_EButton_Grip); var tTriggerClicked = device.GetPressUp(EVRButtonId.k_EButton_SteamVR_Trigger); if ((VR.Interpreter as HS2Interpreter).isHScene) { var scene = ((VR.Interpreter as HS2Interpreter).currentSceneInterpreter as HSceneInterpreter)._HScene; HSceneSprite scene_sprite_instance = Singleton <HSceneSprite> .Instance; //VRLog.Info("Touchpad direction: {0}", touchpad_direction); if (touchpad_direction == TouchpadDirection.Up && touchpad_touch) { // Up //VRLog.Info("Scroll up."); SendInputHandler.MouseWheel(10); } else if (touchpad_direction == TouchpadDirection.Down && touchpad_touch) { // Down //VRLog.Info("Scroll down."); SendInputHandler.MouseWheel(-10); } if (touchpad_click_down) { //VRLog.Info("Pressed touchpad."); scene_sprite_instance.categoryFinish.onEnter = true; if (!_was_touchpad_click_down) { if (touchpad_direction == TouchpadDirection.Left) { // Left //VRLog.Info("Scroll up."); SendInputHandler.MouseWheel(-10); } else if (touchpad_direction == TouchpadDirection.Right) { // Right //VRLog.Info("Scroll down."); SendInputHandler.MouseWheel(10); } } //VRLog.Info("Active finish option: {0}", scene_sprite_instance.categoryFinish.GetlstActive()); _was_touchpad_click_down = true; } if (touchpad_click_up) { //VRLog.Info("Unpressed touchpad."); //VRLog.Info("Got {0} buttons", scene_sprite_instance.categoryFinish.lstButton.Count); if (touchpad_direction == TouchpadDirection.Center && _was_touchpad_click_down) { for (int i = 0; i < scene_sprite_instance.categoryFinish.lstButton.Count; i++) { if (scene_sprite_instance.categoryFinish.GetEnable(i) && scene_sprite_instance.categoryFinish.lstButton[i].gameObject.activeSelf) { //VRLog.Info("Pressing button {0}", i); scene_sprite_instance.categoryFinish.lstButton[i].onClick.Invoke(); break; } } } _was_touchpad_click_down = false; } } }
public static void HScene_SetStartAnimationInfo_Patch(HScene __instance, HSceneSprite ___sprite) { hScene = __instance; hSprite = ___sprite; if (hScene == null || hSprite == null) { return; } hFlagCtrl = hScene.ctrlFlag; if (hFlagCtrl == null) { return; } cameraCtrl = hFlagCtrl.cameraCtrl; if (cameraCtrl == null) { return; } hSceneTrav = Traverse.Create(hScene); Tools.hFlagCtrlTrav = Traverse.Create(hFlagCtrl); listTrav = Traverse.Create(hScene.ctrlEyeNeckMale[0]); maleMotionList = listTrav?.Field("lstEyeNeck").GetValue <List <HMotionEyeNeckMale.EyeNeck> >(); if (unlockCamera.Value) { cameraCtrl.isLimitDir = false; cameraCtrl.isLimitPos = false; } cameraShouldLock = true; characters = new List <ChaControl>(); maleCharacters = new List <ChaControl>(); ChaControl[] males = __instance.GetMales(); foreach (var male in males.Where(male => male != null)) { maleCharacters.Add(male); characters.Add(male); } femaleCharacters = new List <ChaControl>(); ChaControl[] females = __instance.GetFemales(); foreach (var female in females.Where(female => female != null)) { femaleCharacters.Add(female); characters.Add(female); } if (characters == null) { return; } obiSolver = GameObject.Find("SiruObiMgr").GetComponentInChildren <Obi.ObiSolver>(true); if (obiSolver != null) { obiSolver.UpdateOrder = obiUpdateMode.Value; } Tools.SetGotoWeaknessCount(countToWeakness.Value); SliderUI.InitDraggersUI(); }
public static void HSceneSprite_SetLightInfo_CreateButtons(HSceneSprite __instance) { sprite = __instance; if (created) { return; } var UI = GameObject.Find("UI"); if (UI == null) { return; } var back = UI.transform.Find("Light/back"); if (back == null) { return; } var orig = UI.transform.Find("Light/SubLight"); if (orig == null) { return; } toggles = new List <Toggle>(); lights = Resources.FindObjectsOfTypeAll <Light>(); resolutions = new int[lights.Length]; for (var i = 0; i < lights.Length; i++) { resolutions[i] = lights[i] != null ? lights[i].shadowCustomResolution : -1; } foreach (var light in lights) { var parent = light.transform; switch (parent.name) { case "Directional Light Key": camLightTr = parent; break; case "Directional Light Back": backLight = light; break; } } var text = orig.GetComponentInChildren <Text>(); text.alignment = TextAnchor.MiddleLeft; // Make textbox wider and move to the right var textRect = text.gameObject.GetComponent <RectTransform>(); var oldTeMin = textRect.offsetMin; var oldTeMax = textRect.offsetMax; textRect.offsetMin = new Vector2(128, oldTeMin.y); textRect.offsetMax = new Vector2(348, oldTeMax.y); textRect.sizeDelta = new Vector2(220, 30); var toggleComp = orig.GetComponentInChildren <Toggle>(); // Move toggle to the left var toggleRect = toggleComp.gameObject.GetComponent <RectTransform>(); var oldToMin = toggleRect.offsetMin; var oldToMax = toggleRect.offsetMax; toggleRect.offsetMin = new Vector2(98, oldToMin.y); toggleRect.offsetMax = new Vector2(128, oldToMax.y); toggleRect.sizeDelta = new Vector2(30, 30); foreach (var toggle in toggleInfo) { AddBtn(back, orig, toggle.name, toggle.resize, toggle.clickEvent); } var sub = UI.transform.Find("Light/SubLight"); if (sub != null) { auxiliaryLightToggle = sub.GetComponentInChildren <Toggle>(); } if (auxiliaryLightToggle != null) { auxiliaryLightToggle.isOn = auxiliaryLight.Value; } created = true; }
static bool SpankingAutoProc(int _state, Spnking __instance) { HSceneFlagCtrl ctrlFlag = Singleton <HSceneFlagCtrl> .Instance; if (ctrlFlag.initiative == 0) { return(true); } HVoiceCtrl voice = (HVoiceCtrl)voiceFieldInfo.GetValue(__instance); HSceneSprite sprite = (HSceneSprite)spriteFieldInfo.GetValue(__instance); ChaControl[] chaFemales = (ChaControl[])chaFemalesFieldInfo.GetValue(__instance); ShuffleRand[] randVoicePlays = (ShuffleRand[])randVoicePlaysFieldInfo.GetValue(__instance); if (!ctrlFlag.stopFeelFemale) { ctrlFlag.feel_f = Mathf.Clamp01(ctrlFlag.feel_f - ctrlFlag.guageDecreaseRate * Time.deltaTime); } if (_state == 1 && ctrlFlag.feel_f < 0.5f) { playMethodInfo.Invoke(__instance, new object[] { "WIdle", false }); voice.HouchiTime = 0f; return(true); } if (!GeneralHooks.SpankTimer.IsTime()) { return(false); } else { GeneralHooks.SpankTimer.Reset(); } if (voice.nowVoices[0].state == HVoiceCtrl.VoiceKind.voice || voice.nowVoices[0].state == HVoiceCtrl.VoiceKind.startVoice) { Voice.Stop(ctrlFlag.voice.voiceTrs[0]); voice.ResetVoice(); } string scene = "D_Action"; switch (_state) { case 1: scene = "SAction"; break; case 0: scene = "WAction"; break; } playMethodInfo.Invoke(__instance, new object[] { scene, false }); upFeelFieldInfo.SetValue(__instance, true); float value = Mathf.Clamp01(chaFemales[0].siriAkaRate + ctrlFlag.siriakaAddRate); chaFemales[0].ChangeSiriAkaRate(value); timeFeelUpFieldInfo.SetValue(__instance, 0f); backupFieldInfo.SetValue(__instance, ctrlFlag.feel_f); backupFeelFieldInfo.SetValue(__instance, ctrlFlag.feelPain); ctrlFlag.isNotCtrl = false; if (randVoicePlays[0].Get() == 0) { ctrlFlag.voice.playVoices[0] = true; } ctrlFlag.voice.playShorts[0] = 0; bool isAddFeel = (bool)isAddFieldInfo.GetValue(__instance); if (!isAddFeel && ctrlFlag.feel_f >= 0.70f) { SpankingAfterWaitingAnimationAutoSelector(); } return(false); }
private void PrepareButtons(HSceneSprite sprite) { _CurrentVisibleButtons = _LstFinishVisibleField.GetValue(_Sprite) as List <int>; }
public static void HSceneSprite_SetLightInfo_CreateButtons(HSceneSprite __instance) { sprite = __instance; created = Content != null; if (created) { for (var i = 0; i < toggleInfo.Count; i++) { foreach (var b in btn.Where(b => b.Definition.Key == toggleInfo[i].name)) { toggles[i].isOn = b.Value; } } return; } oldParents = new GameObject[2]; newParents = new GameObject[2]; toggles?.Clear(); toggles = new List <Toggle>(); var UI = GameObject.Find("CommonSpace/HSceneUISet"); var Btn = UI.transform.Find("Canvas/CanvasGroup/Panel/CoordinatesCard/SortPanel/SortCategory/Name"); var LightAdj = UI.transform.Find("Canvas/CanvasGroup/LightCategory/BG/LightAdjustment"); // Lights camLightTrs = new Transform[2]; backLights = new List <Light>(); auxLights = new List <Light>(); lights = Resources.FindObjectsOfTypeAll <Light>(); resolutions = new int[lights.Length]; for (var i = 0; i < lights.Length; i++) { resolutions[i] = lights[i] != null ? lights[i].shadowCustomResolution : -1; } foreach (var light in lights) { var parent = light.transform; switch (parent.name) { case "Directional Light Key": camLightTrs[0] = parent; break; case "Cam Light": camLightTrs[1] = parent; break; case "Directional Light Back": case "Back Light": backLights.Add(light); break; case "Directional Light Fill": case "Directional Light Top": auxLights.Add(light); break; } } // Set up panel for new buttons and insert them Content = new GameObject("Content", typeof(RectTransform)); Content.transform.SetParent(LightAdj, false); var vlg = Content.AddComponent <VerticalLayoutGroup>(); vlg.childControlHeight = false; vlg.childControlWidth = false; vlg.childForceExpandWidth = false; vlg.enabled = false; LightAdj.Find("DirectionHorizontal").SetParent(Content.transform, false); LightAdj.Find("DirectionVertical").SetParent(Content.transform, false); LightAdj.Find("Power").SetParent(Content.transform, false); var ScrollView = new GameObject("ScrollView", typeof(RectTransform)); ScrollView.transform.SetParent(LightAdj.transform, false); var svScrollRect = ScrollView.AddComponent <ScrollRect>(); var ViewPort = new GameObject("ViewPort", typeof(RectTransform)); ViewPort.transform.SetParent(ScrollView.transform, false); ViewPort.AddComponent <RectMask2D>(); var vpRectTransform = ViewPort.GetComponent <RectTransform>(); vpRectTransform.offsetMin = new Vector2(-80, -100); vpRectTransform.offsetMax = new Vector2(90, 70); vpRectTransform.sizeDelta = new Vector2(170, 170); Content.transform.SetParent(ViewPort.transform, false); var crt = Content.GetComponent <RectTransform>(); crt.pivot = new Vector2(0.5f, 1); svScrollRect.content = crt; svScrollRect.viewport = vpRectTransform; svScrollRect.horizontal = false; svScrollRect.scrollSensitivity = 40; crt.offsetMin = new Vector2(-85, 15); crt.offsetMax = new Vector2(85, 15); crt.sizeDelta = new Vector2(170, 0); foreach (var toggle in toggleInfo) { AddBtn(Content.transform, Btn, toggle.name, toggle.resize, toggle.clickEvent); } var csf = Content.AddComponent <ContentSizeFitter>(); csf.verticalFit = ContentSizeFitter.FitMode.PreferredSize; vlg.enabled = true; created = true; }