コード例 #1
0
ファイル: Main.cs プロジェクト: aedenthorn/mytimeatportia
            private static IEnumerator FishJump(FishingSystem_t instance)
            {
                for (; ;)
                {
                    Fish_t fish = (Fish_t)instance.GetType().GetField("curFish", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(instance);

                    flatPos = Vector3.MoveTowards(flatPos, Module <Player> .Self.actor.gamePos, settings.JumpSpeed);

                    Vector3 playerPos = Module <Player> .Self.actor.gamePos;

                    float travelled = Vector3.Distance(flatPos, origPos);
                    float total     = Vector3.Distance(playerPos, origPos);

                    float height = (float)Math.Sin(travelled * Math.PI / total) * settings.JumpHeight;

                    try
                    {
                        fish.gameObject.transform.position = new Vector3(flatPos.x, flatPos.y + height, flatPos.z);
                    }
                    catch
                    {
                        break;
                    }


                    if (Vector3.Distance(Module <Player> .Self.actor.gamePos, fish.gameObject.transform.position) < settings.JumpSpeed * 20)
                    {
                        Module <Player> .Self.actor.TryDoAction(ACType.Animation, ACTAnimationPara.Construct("Throw_2", null, null, false));
                    }

                    if (Vector3.Distance(Module <Player> .Self.actor.gamePos, fish.gameObject.transform.position) < settings.JumpSpeed)
                    {
                        typeof(FishingSystem_t).GetMethod("FishingEnd", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(instance, new object[] { true, false });
                        break;
                    }
                    yield return(null);
                }
            }
コード例 #2
0
ファイル: Main.cs プロジェクト: aedenthorn/mytimeatportia
            static bool Prefix(FishingSystem_t __instance, FishInfo ___fishInfo, Transform ___shoal, IFishingMan ___fishingMan, ref MoveArea ___area, FishingInfo ___fishingAreaInfo, float ___fishSpeedBaseFactor, float ___fishDashBaseFactor, float ___fishWaitBaseFactor, FishingUI_t ___hud)
            {
                if (!enabled)
                {
                    if (origBaitID != -1)
                    {
                        OtherConfig.Self.BaitID = origBaitID;
                    }
                    return(true);
                }
                Dbgl("Wait for fish");

                if (OtherConfig.Self.BaitID != -1)
                {
                    origBaitID = OtherConfig.Self.BaitID;
                    OtherConfig.Self.BaitID = -1;
                }

                Fish_t fish = null;

                if (string.IsNullOrEmpty(___fishInfo.fishPrefabPath))
                {
                    UnityEngine.Debug.LogError("fishPrefabPath = is null!");
                }
                else
                {
                    GameObject original = Singleton <ResMgr> .Instance.LoadSync <GameObject>(___fishInfo.fishPrefabPath, false, false);

                    GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(original, ___fishInfo.FishBornTrans.position, Quaternion.identity);
                    gameObject.transform.parent     = ___shoal;
                    gameObject.transform.localScale = Vector3.one;
                    gameObject.SetActive(true);
                    fish = gameObject.GetComponent <Fish_t>();
                }
                if (fish != null)
                {
                    Vector3 vector = ___fishInfo.FishBornTrans.position - ___fishingMan.Pos;
                    ___area               = new MoveArea();
                    ___area.angle         = ___fishingAreaInfo.angleLimit / 2f;
                    ___area.dir           = vector.normalized;
                    ___area.fishingManPos = ___fishingMan.Pos;
                    ___fishInfo.GenPowerFactor(fish.PowerValue);
                    ___fishInfo.GenSpeedFactor(fish.SpeedValue, ___fishSpeedBaseFactor);
                    ___fishInfo.GenAngerFactor(fish.AngerValue, ___fishDashBaseFactor);
                    ___fishInfo.GenTenacityFactor(fish.TenacityValue);
                    ___fishInfo.SetBaseWaitTime(___fishWaitBaseFactor);
                    fish.SetFishInfo(___fishInfo);
                }

                if (settings.PlayHereFishy && fishyClip != null)
                {
                    PlayClip(fishyClip, settings.HereFishyVolume, false);
                }

                Singleton <TaskRunner> .Self.RunDelayTask(fishyClip.length, true, delegate
                {
                    if (___hud == null)
                    {
                        return;
                    }

                    if (fish != null)
                    {
                        if (settings.PlayWee && weeClip != null)
                        {
                            PlayClip(weeClip, settings.WeeVolume, true, fish.transform);
                        }
                        __instance.GetType().GetField("curFish", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(__instance, fish);
                        origPos = (__instance.GetType().GetField("curFish", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(__instance) as Fish_t).gameObject.transform.position;
                        flatPos = origPos;
                        Singleton <TaskRunner> .Self.StartCoroutine(FishJump(__instance));
                    }
                    else
                    {
                        Module <Player> .Self.actor.TryDoAction(ACType.Animation, ACTAnimationPara.Construct("Throw_2", null, null, false));

                        typeof(FishingSystem_t).GetMethod("FishingEnd", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { true, false });
                    }
                    //__instance.GetType().GetField("curFish", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(__instance, __instance.GetType().GetMethod("CreateFish", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[0]));
                    //typeof(FishingSystem_t).GetMethod("FishingBegin", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { });
                });

                return(false);
            }