diff --git a/Assets/Scripts/Fishing/New/Data/Item/PlayerItem.cs b/Assets/Scripts/Fishing/New/Data/Item/PlayerItem.cs
index f2cddc2a0..14e2ad757 100644
--- a/Assets/Scripts/Fishing/New/Data/Item/PlayerItem.cs
+++ b/Assets/Scripts/Fishing/New/Data/Item/PlayerItem.cs
@@ -2,13 +2,14 @@
using Fantasy;
using Fantasy.Entitas;
using NBF.Utils;
+using UnityEngine;
namespace NBF
{
///
/// 玩家物品
///
- public abstract class PlayerItem : Entity
+ public class PlayerItem : Entity
{
public Player Owner;
@@ -17,11 +18,47 @@ namespace NBF
///
public int ConfigID;
+ public List BindItems = new List();
- public virtual void Init(Player player, ItemInfo bindInfo)
+ #region Rod专属
+
+ ///
+ /// 线长度
+ ///
+ public float LineLength = 1.5f;
+
+ ///
+ /// 浮漂线长度
+ ///
+ public float FloatLength = 0.5f;
+
+ private float _tension;
+
+ ///
+ /// 拉力
+ ///
+ public float Tension
+ {
+ get => _tension;
+ private set
+ {
+ if (!Mathf.Approximately(_tension, value))
+ {
+ _tension = value;
+ // OnTensionChanged?.Invoke(_tension);
+ }
+ }
+ }
+
+ #endregion
+
+
+ public void Init(Player player, int configId, List bindItems)
{
Owner = player;
- ConfigID = bindInfo.ConfigId;
+ ConfigID = configId;
+ BindItems.Clear();
+ BindItems.AddRange(bindItems);
// var itemType = bindInfo.Item.GetItemType();
// if (itemType == ItemType.Rod)
// {
diff --git a/Assets/Scripts/Fishing/New/Data/Item/PlayerItemRod.cs b/Assets/Scripts/Fishing/New/Data/Item/PlayerItemRod.cs
deleted file mode 100644
index 6bb33c0c7..000000000
--- a/Assets/Scripts/Fishing/New/Data/Item/PlayerItemRod.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System.Collections.Generic;
-using Fantasy;
-using Fantasy.Entitas;
-
-namespace NBF
-{
- public class PlayerItemRod : PlayerItem
- {
- public override void Init(Player player, ItemInfo bindInfo)
- {
- //var binds = RoleModel.Instance.GetBindItems(item.Id);
- base.Init(player, bindInfo);
- }
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Fishing/New/Data/Item/PlayerItemRod.cs.meta b/Assets/Scripts/Fishing/New/Data/Item/PlayerItemRod.cs.meta
deleted file mode 100644
index 05a2ff96b..000000000
--- a/Assets/Scripts/Fishing/New/Data/Item/PlayerItemRod.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 9e0846296bef4505868010bfe1eee1e3
-timeCreated: 1773124278
\ No newline at end of file
diff --git a/Assets/Scripts/Fishing/New/Data/Player.cs b/Assets/Scripts/Fishing/New/Data/Player.cs
index f1824cbba..5a9a85a5e 100644
--- a/Assets/Scripts/Fishing/New/Data/Player.cs
+++ b/Assets/Scripts/Fishing/New/Data/Player.cs
@@ -103,18 +103,13 @@ namespace NBF
ItemChangeEvent(prevItem);
}
- public void UseItem(ItemInfo item)
+ public void UseItem(int configId, List bindItems)
{
var prevItem = HandItem;
- var itemType = item.ConfigId.GetItemType();
- if (itemType == ItemType.Rod)
- {
- var playerItemRod = Create(Scene);
- playerItemRod.Init(this, item);
- Items[playerItemRod.Id] = playerItemRod;
- HandItemId = playerItemRod.Id;
- }
-
+ var playerItemRod = Create(Scene);
+ playerItemRod.Init(this, configId, bindItems);
+ Items[playerItemRod.Id] = playerItemRod;
+ HandItemId = playerItemRod.Id;
ItemChangeEvent(prevItem);
}
diff --git a/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemRodView.cs b/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemRodView.cs
deleted file mode 100644
index 2504634e6..000000000
--- a/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemRodView.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Fantasy.Async;
-using UnityEngine;
-
-namespace NBF
-{
- public class PlayerItemRodView : PlayerItemView
- {
- public RodAsset RodAsset;
-
- public override async FTask InitShow(PlayerItem item)
- {
- Item = item;
- var itemConfig = Game.Tables.TbItem.Get(Item.ConfigID);
- RodAsset = itemConfig.InstantiateAndComponent(SceneSettings.Instance.GearNode, Vector3.zero,
- Quaternion.identity);
-
- // await Rod.InitRod(Item);
- }
- }
-}
\ No newline at end of file
diff --git a/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemRodView.cs.meta b/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemRodView.cs.meta
deleted file mode 100644
index 331fb3a0c..000000000
--- a/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemRodView.cs.meta
+++ /dev/null
@@ -1,3 +0,0 @@
-fileFormatVersion: 2
-guid: 77390e0ed53847f3b190ffc0d9f1319a
-timeCreated: 1773124629
\ No newline at end of file
diff --git a/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemView.cs b/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemView.cs
index 918da1040..5b951ba87 100644
--- a/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemView.cs
+++ b/Assets/Scripts/Fishing/New/View/Player/Item/PlayerItemView.cs
@@ -7,21 +7,22 @@ namespace NBF
///
/// 玩家物品视图组件
///
- public abstract class PlayerItemView : Entity
+ public class PlayerItemView : Entity
{
public PlayerItem Item { get; protected set; }
+ ///
+ /// 竿子
+ ///
+ public FRod Rod { get; private set; }
- public abstract FTask InitShow(PlayerItem item);
-
- // public async FTask InitShow()
- // {
- // // Item = GetParent();
- // var itemConfig = Game.Tables.TbItem.Get(Item.ConfigID);
- // // Rod = itemConfig.InstantiateAndComponent(SceneSettings.Instance.GearNode, Vector3.zero,
- // // Quaternion.identity);
- //
- // // await Rod.InitRod(Item);
- // }
+ public async FTask InitShow(PlayerItem item)
+ {
+ Item = item;
+ var itemConfig = Game.Tables.TbItem.Get(Item.ConfigID);
+ Rod = itemConfig.InstantiateAndComponent(SceneSettings.Instance.GearNode, Vector3.zero,
+ Quaternion.identity);
+ await Rod.InitRod(Item);
+ }
}
}
\ No newline at end of file
diff --git a/Assets/Scripts/Fishing/New/View/Player/PlayerInput.cs b/Assets/Scripts/Fishing/New/View/Player/PlayerInput.cs
index 55b08f399..aaf6d63c1 100644
--- a/Assets/Scripts/Fishing/New/View/Player/PlayerInput.cs
+++ b/Assets/Scripts/Fishing/New/View/Player/PlayerInput.cs
@@ -1,4 +1,6 @@
-using Fantasy;
+using System.Collections.Generic;
+using System.Linq;
+using Fantasy;
using Fantasy.Entitas;
using Fantasy.Entitas.Interface;
using UnityEngine;
@@ -90,7 +92,9 @@ namespace NBF
var item = RoleModel.Instance.GetSlotItem(index - 1);
if (item != null)
{
- Player.UseItem(item);
+ List children = RoleModel.Instance.GetBindItems(item.Id);
+ List bindItems = children.Select(itemInfo => itemInfo.ConfigId).ToList();
+ Player.UseItem(item.ConfigId, bindItems);
}
}
}
diff --git a/Assets/Scripts/Fishing/New/View/Player/PlayerView.cs b/Assets/Scripts/Fishing/New/View/Player/PlayerView.cs
index 78bcc8f11..33e188c0d 100644
--- a/Assets/Scripts/Fishing/New/View/Player/PlayerView.cs
+++ b/Assets/Scripts/Fishing/New/View/Player/PlayerView.cs
@@ -79,7 +79,7 @@ namespace NBF
var itemType = handItem.ConfigID.GetItemType();
if (itemType == ItemType.Rod)
{
- var itemView = handItem.GetOrAddComponent();
+ var itemView = handItem.GetOrAddComponent();
await itemView.InitShow(handItem);
Unity.ModelAsset.PlayerAnimator.OnUseItem(itemView);
}
diff --git a/Assets/Scripts/Fishing/New/View/Player/Tackle/FHandItem.cs b/Assets/Scripts/Fishing/New/View/Player/Tackle/FHandItem.cs
index 1b6920cb7..0e8a5a1ad 100644
--- a/Assets/Scripts/Fishing/New/View/Player/Tackle/FHandItem.cs
+++ b/Assets/Scripts/Fishing/New/View/Player/Tackle/FHandItem.cs
@@ -2,8 +2,8 @@
namespace NBF
{
- public class FHandItem : MonoBehaviour
+ public abstract class FHandItem : MonoBehaviour
{
- public int ConfigId;
+ public abstract int ConfigId { get; }
}
}
\ No newline at end of file
diff --git a/Assets/Scripts/Fishing/New/View/Player/Tackle/FRod.cs b/Assets/Scripts/Fishing/New/View/Player/Tackle/FRod.cs
index 996d86404..2295455dd 100644
--- a/Assets/Scripts/Fishing/New/View/Player/Tackle/FRod.cs
+++ b/Assets/Scripts/Fishing/New/View/Player/Tackle/FRod.cs
@@ -14,7 +14,10 @@ namespace NBF
{
private float _tension;
-
+ public PlayerItem PlayerItem;
+
+ public override int ConfigId => PlayerItem?.ConfigID ?? 0;
+
///
/// 可用的
///
@@ -126,123 +129,122 @@ namespace NBF
public async FTask InitRod(PlayerItem playerItem)
{
- // ConfigId = itemBindInfo.Item;
- // // Player = player;
- //
- // var playerView = player.GetComponent();
- //
- // var playerViewUnity = playerView.Unity;
- //
- // transform.localPosition = Vector3.zero;
- // transform.localRotation = Quaternion.identity;
- // transform.localScale = Vector3.one;
- // SceneSettings.Instance.GearNode.position = playerViewUnity.transform.position;
- // yield return 1;
- // var obj = new GameObject($"rod_{ConfigId}");
- // obj.transform.SetParent(SceneSettings.Instance.GearNode);
- // // obj.transform.SetParent(player.transform);
- // // obj.transform.localPosition = Vector3.zero;
- // obj.transform.position = playerViewUnity.transform.position;
- // obj.transform.rotation = playerViewUnity.transform.rotation;
- // obj.transform.localScale = Vector3.one;
- // GearRoot = obj.transform;
- //
- // var parent = GearRoot;
- //
- // // List children = RoleModel.Instance.GetBindItems(itemInfo.Id);
- //
- //
- // CreateFishingHandler();
- // yield return 1; //等待1帧
- // // children.Sort();
- // foreach (var childConfigId in itemBindInfo.BindItems)
- // {
- // var itemType = childConfigId.GetItemType();
- // var config = Game.Tables.TbItem.Get(childConfigId);
- // if (itemType == ItemType.Reel)
- // {
- // Reel = config.InstantiateAndComponent(Asset.ReelConnector, Vector3.zero,
- // Quaternion.identity);
- // Reel.SetItemConfigId(childConfigId);
- // }
- // else if (itemType == ItemType.Bobber)
- // {
- // Bobber = config.InstantiateAndComponent(parent, Vector3.zero,
- // Quaternion.identity);
- // Bobber.SetItemConfigId(childConfigId);
- // }
- // else if (itemType == ItemType.Hook)
- // {
- // Hook = config.InstantiateAndComponent(parent, Vector3.zero,
- // Quaternion.identity);
- // Hook.SetItemConfigId(childConfigId);
- // }
- // else if (itemType == ItemType.Bait)
- // {
- // Bait = config.InstantiateAndComponent(parent, Vector3.zero,
- // Quaternion.identity);
- // Bait.SetItemConfigId(childConfigId);
- // }
- // else if (itemType == ItemType.Lure)
- // {
- // Lure = config.InstantiateAndComponent(parent, Vector3.zero,
- // Quaternion.identity);
- // Lure.SetItemConfigId(childConfigId);
- // }
- // else if (itemType == ItemType.Weight)
- // {
- // Weight = config.InstantiateAndComponent(parent, Vector3.zero,
- // Quaternion.identity);
- // Weight.SetItemConfigId(childConfigId);
- // }
- // else if (itemType == ItemType.Line)
- // {
- // // lineItemInfo = child;
- // }
- // }
- //
- // yield return 1;
- // if (Reel)
- // {
- // Reel.reelingDrag = 0.699f;
- // Reel.transform.SetParent(Asset.ReelConnector);
- // Reel.transform.localPosition = Vector3.zero;
- // Reel.transform.localEulerAngles = Vector3.zero;
- // Reel.Init(this);
- // }
- //
- // if (Bobber)
- // {
- // Bobber.Init(this);
- // }
- //
- // if (Hook)
- // {
- // Hook.Init(this);
- // }
- //
- // if (Bait)
- // {
- // Bait.Init(this);
- // }
- //
- // if (Lure)
- // {
- // Lure.Init(this);
- // }
- //
- // if (Weight)
- // {
- // Weight.Init(this);
- // }
- //
- // yield return 1; //等待1帧
- //
- // transform.SetParent(playerViewUnity.ModelAsset.RodRoot);
- // transform.localPosition = Vector3.zero;
- // transform.rotation = playerViewUnity.ModelAsset.RodRoot.rotation;
- //
- // Usable = true;
+ PlayerItem = playerItem;
+
+ var playerView = playerItem.Owner.GetComponent();
+
+ var playerViewUnity = playerView.Unity;
+
+ transform.localPosition = Vector3.zero;
+ transform.localRotation = Quaternion.identity;
+ transform.localScale = Vector3.one;
+ SceneSettings.Instance.GearNode.position = playerViewUnity.transform.position;
+ await FTask.WaitFrame(playerView.Scene); //等待1帧
+
+ var obj = new GameObject($"rod_{ConfigId}");
+ obj.transform.SetParent(SceneSettings.Instance.GearNode);
+ // obj.transform.SetParent(player.transform);
+ // obj.transform.localPosition = Vector3.zero;
+ obj.transform.position = playerViewUnity.transform.position;
+ obj.transform.rotation = playerViewUnity.transform.rotation;
+ obj.transform.localScale = Vector3.one;
+ GearRoot = obj.transform;
+
+ var parent = GearRoot;
+
+ // List children = RoleModel.Instance.GetBindItems(itemInfo.Id);
+
+ CreateFishingHandler();
+ await FTask.WaitFrame(playerView.Scene); //等待1帧
+ // children.Sort();
+ foreach (var childConfigId in playerItem.BindItems)
+ {
+ var itemType = childConfigId.GetItemType();
+ var config = Game.Tables.TbItem.Get(childConfigId);
+ if (itemType == ItemType.Reel)
+ {
+ Reel = config.InstantiateAndComponent(Asset.ReelConnector, Vector3.zero,
+ Quaternion.identity);
+ Reel.SetItemConfigId(childConfigId);
+ }
+ else if (itemType == ItemType.Bobber)
+ {
+ Bobber = config.InstantiateAndComponent(parent, Vector3.zero,
+ Quaternion.identity);
+ Bobber.SetItemConfigId(childConfigId);
+ }
+ else if (itemType == ItemType.Hook)
+ {
+ Hook = config.InstantiateAndComponent(parent, Vector3.zero,
+ Quaternion.identity);
+ Hook.SetItemConfigId(childConfigId);
+ }
+ else if (itemType == ItemType.Bait)
+ {
+ Bait = config.InstantiateAndComponent(parent, Vector3.zero,
+ Quaternion.identity);
+ Bait.SetItemConfigId(childConfigId);
+ }
+ else if (itemType == ItemType.Lure)
+ {
+ Lure = config.InstantiateAndComponent(parent, Vector3.zero,
+ Quaternion.identity);
+ Lure.SetItemConfigId(childConfigId);
+ }
+ else if (itemType == ItemType.Weight)
+ {
+ Weight = config.InstantiateAndComponent(parent, Vector3.zero,
+ Quaternion.identity);
+ Weight.SetItemConfigId(childConfigId);
+ }
+ else if (itemType == ItemType.Line)
+ {
+ // lineItemInfo = child;
+ }
+ }
+
+ await FTask.WaitFrame(playerView.Scene); //等待1帧
+ if (Reel)
+ {
+ Reel.reelingDrag = 0.699f;
+ Reel.transform.SetParent(Asset.ReelConnector);
+ Reel.transform.localPosition = Vector3.zero;
+ Reel.transform.localEulerAngles = Vector3.zero;
+ Reel.Init(this);
+ }
+
+ if (Bobber)
+ {
+ Bobber.Init(this);
+ }
+
+ if (Hook)
+ {
+ Hook.Init(this);
+ }
+
+ if (Bait)
+ {
+ Bait.Init(this);
+ }
+
+ if (Lure)
+ {
+ Lure.Init(this);
+ }
+
+ if (Weight)
+ {
+ Weight.Init(this);
+ }
+
+ await FTask.WaitFrame(playerView.Scene); //等待1帧
+
+ transform.SetParent(playerViewUnity.ModelAsset.RodRoot);
+ transform.localPosition = Vector3.zero;
+ transform.rotation = playerViewUnity.ModelAsset.RodRoot.rotation;
+
+ Usable = true;
}
@@ -286,11 +288,6 @@ namespace NBF
Line = obj.GetComponent();
Line.transform.position = Asset.lineConnector.position;
Line.Init(this);
-
- // var obiSolver = solver.GetComponent();
- // obiSolver.parameters.ambientWind = Vector3.zero;
- // obiSolver.wind.
- // obiSolver.simulateWhenInvisible
}
}