Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/FishingLine.cs
2026-03-04 09:37:33 +08:00

94 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Obi;
using Obvious.Soap;
using UnityEngine;
public class FishingLine : MonoBehaviour
{
[SerializeField]
private ObiParticleAttachment startParticleAttachment;
[SerializeField]
private bool isLureConnect;
[SerializeField]
private Lure lure;
[SerializeField]
private BobberController bobberController;
[SerializeField]
private ScriptableEventGameObject onLureInit;
[SerializeField]
private RodLine rodLine;
[SerializeField]
private BoolVariable isFloatingMethodUsed;
[SerializeField]
private Rope fishingRope;
public float LineLength = 0.5f;
private float _groundSetting = 0.5f;
private float _LineOnSpool = 100f;
private float _LineThickness = 0.0007f;
public event Action OnLinePulled;
public void SetUnrolledLineValue(float lentgth)
{
LineLength = lentgth;
LineLength = Mathf.Clamp(LineLength, _groundSetting, _LineOnSpool);
if (LineLength == _groundSetting)
{
this.OnLinePulled?.Invoke();
}
}
public void EnableLineRenderers()
{
foreach (ObiRopeExtrudedRenderer item in GetComponentsInChildren<ObiRopeExtrudedRenderer>().ToList())
{
item.enabled = true;
}
}
public void SetObiRopeStretch(float value)
{
fishingRope.LineLength_OnValueChanged(value);
}
public void Initialize(Transform rodTarget, Rigidbody tipRb, List<Transform> guides)
{
startParticleAttachment.target = tipRb.transform;
base.transform.position = rodTarget.position;
if (isLureConnect)
{
lure.SetJoint(tipRb);
lure.EnableCollision(enable: false);
isFloatingMethodUsed.Value = false;
}
else
{
bobberController.SetJoint(tipRb);
bobberController.gameObject.SetActive(value: true);
lure.gameObject.SetActive(value: true);
lure.EnableCollision(enable: false);
isFloatingMethodUsed.Value = true;
GetComponentInChildren<Buoyancy>().targetSurface = MonoBehaviourSingleton<GameWater>.Instance.WaterSurface;
}
onLureInit.Raise(lure.gameObject);
GetComponentsInChildren<Transform>(includeInactive: true).ToList().ForEach(delegate(Transform i)
{
i.gameObject.SetActive(value: true);
});
rodLine.GenerateLineRendererRope(guides.ToArray(), _LineThickness);
}
}