static void MultiPlay_F2M1SpeedGambit(MultiPlay_F2M1 __instance) { if (!HS2TakeChargePlugin.Instance.AnimationOverrideActive() && HS2TakeChargePlugin.Instance.ManualSpeedAdder == 0f) { return; } ChaControl[] chaFemales = (ChaControl[])chaFemalesFieldInfo.GetValue(__instance); ChaControl[] chaMales = (ChaControl[])chaMalesFieldInfo.GetValue(__instance); HItemCtrl item = (HItemCtrl)itemFieldInfo.GetValue(__instance); if (HS2TakeChargePlugin.Instance.AnimationOverrideActive()) { for (int j = 0; j < chaFemales.Length; j++) { if (chaFemales[j].visibleAll && !(chaFemales[j].objTop == null)) { chaFemales[j].setAnimatorParamFloat("speed", AnimationStatus.FemaleSpeed); if (AnimationStatus.FemaleOffset != 0) { chaFemales[j].animBody.Play(AnimationStatus.PlayingAnimation, 0, (chaMales[0].animBody.GetCurrentAnimatorStateInfo(0).normalizedTime + AnimationStatus.FemaleOffset)); } } } if (chaMales[0].objBodyBone != null) { chaMales[0].setAnimatorParamFloat("speed", AnimationStatus.MaleSpeed); } if (item.GetItem() != null) { item.setAnimatorParamFloat("speed", AnimationStatus.FemaleSpeed); } } else { float originalSpeed = (float)speedField.GetValue(animParType.GetValue(__instance)); for (int j = 0; j < chaFemales.Length; j++) { if (chaFemales[j].visibleAll && !(chaFemales[j].objTop == null)) { chaFemales[j].setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } } if (chaMales[0].objBodyBone != null) { chaMales[0].setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } if (item.GetItem() != null) { item.setAnimatorParamFloat("speed", originalSpeed + HS2TakeChargePlugin.Instance.ManualSpeedAdder); } } }
static void MultiPlay_F2M1AnimOffset(MultiPlay_F2M1 __instance, string _playAnimation) { AnimationStatus.PlayingAnimation = _playAnimation; ChaControl[] chaFemales = (ChaControl[])chaFemalesFieldInfo.GetValue(__instance); ChaControl[] chaMales = (ChaControl[])chaMalesFieldInfo.GetValue(__instance); HItemCtrl item = (HItemCtrl)itemFieldInfo.GetValue(__instance); if (AnimationStatus.FemaleSpeedTween != null) { AnimationStatus.AnimSequence.Kill(); for (int j = 0; j < chaFemales.Length; j++) { if (chaFemales[j].visibleAll && !(chaFemales[j].objTop == null)) { chaFemales[j].setAnimatorParamFloat("speed", 0f); } } if (chaMales[0].objBodyBone != null) { chaMales[0].setAnimatorParamFloat("speed", 0f); } if (item.GetItem() != null) { item.setAnimatorParamFloat("speed", 0f); } // HS2TakeChargePlugin.Instance.Log.LogInfo(string.Format("Status: {0} {1} Female Sp: {2} Time: {3} Male Time: {4}", AnimationStatus.AnimSequence.IsPlaying(), AnimationStatus.PlayingAnimation, AnimationStatus.FemaleSpeed, chaFemales[0].animBody.GetCurrentAnimatorStateInfo(0).normalizedTime, chaMales[0].animBody.GetCurrentAnimatorStateInfo(0).normalizedTime)); } TCAnimationTiming timing = HS2TakeChargePlugin.Instance.RuleSet.Timing(Singleton <HSceneFlagCtrl> .Instance.nowAnimationInfo.nameAnimation, PositionCategories.MULTI_F2M1.ToString(), MultiPlay_F2M1StageSwitch()); AnimationStatus.FemaleSpeed = timing.minSpeed; AnimationStatus.MaleSpeed = timing.minSpeed; AnimationStatus.FemaleOffset = timing.minFemaleOffset; AnimationStatus.FemaleSpeedTween = DOTween.To(() => AnimationStatus.FemaleSpeed, newSpeed => AnimationStatus.FemaleSpeed = newSpeed, timing.maxSpeed, timing.speedLoopTime).SetEase(timing.SpeedEaseEnum()); AnimationStatus.MaleSpeedTween = DOTween.To(() => AnimationStatus.MaleSpeed, newSpeed => AnimationStatus.MaleSpeed = newSpeed, timing.maxSpeed, timing.speedLoopTime).SetEase(timing.SpeedEaseEnum()); AnimationStatus.FemaleOffsetTween = DOTween.To(() => AnimationStatus.FemaleOffset, newOffset => AnimationStatus.FemaleOffset = newOffset, timing.maxFemaleOffset, timing.femaleOffsetLoopTime).SetEase(timing.FemaleOffsetEaseEnum()); AnimationStatus.AnimSequence = DOTween.Sequence(); AnimationStatus.AnimSequence.Insert(0, AnimationStatus.FemaleSpeedTween); AnimationStatus.AnimSequence.Insert(0, AnimationStatus.MaleSpeedTween); AnimationStatus.AnimSequence.Insert(0, AnimationStatus.FemaleOffsetTween); AnimationStatus.AnimSequence.SetLoops(-1, timing.LoopTypeEnum()); }