Merge branch 'master' of https://git.bobsong.cn/Game/Fishing2
This commit is contained in:
8
Assets/Scripts/Fishing/Data/States.meta
Normal file
8
Assets/Scripts/Fishing/Data/States.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8a7d330458276bb4ca48095942cc62da
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
3
Assets/Scripts/Fishing/New/Data/Item.meta
Normal file
3
Assets/Scripts/Fishing/New/Data/Item.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c67e0c4e3e30462d88970a3c0b4569e8
|
||||
timeCreated: 1773123725
|
||||
70
Assets/Scripts/Fishing/New/Data/Item/PlayerItem.cs
Normal file
70
Assets/Scripts/Fishing/New/Data/Item/PlayerItem.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using System.Collections.Generic;
|
||||
using Fantasy;
|
||||
using Fantasy.Entitas;
|
||||
using NBF.Utils;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
/// <summary>
|
||||
/// 玩家物品
|
||||
/// </summary>
|
||||
public class PlayerItem : Entity
|
||||
{
|
||||
public Player Owner;
|
||||
|
||||
/// <summary>
|
||||
/// 配置id
|
||||
/// </summary>
|
||||
public int ConfigID;
|
||||
|
||||
public List<int> BindItems = new List<int>();
|
||||
|
||||
#region Rod专属
|
||||
|
||||
/// <summary>
|
||||
/// 线长度
|
||||
/// </summary>
|
||||
public float LineLength = 1.5f;
|
||||
|
||||
/// <summary>
|
||||
/// 浮漂线长度
|
||||
/// </summary>
|
||||
public float FloatLength = 0.5f;
|
||||
|
||||
private float _tension;
|
||||
|
||||
/// <summary>
|
||||
/// 拉力
|
||||
/// </summary>
|
||||
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<int> bindItems)
|
||||
{
|
||||
Owner = player;
|
||||
ConfigID = configId;
|
||||
BindItems.Clear();
|
||||
BindItems.AddRange(bindItems);
|
||||
// var itemType = bindInfo.Item.GetItemType();
|
||||
// if (itemType == ItemType.Rod)
|
||||
// {
|
||||
// var rod = AddComponent<PlayerItemRod>();
|
||||
// rod.Init(bindInfo);
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,17 +2,24 @@
|
||||
using System.Collections.Generic;
|
||||
using Fantasy;
|
||||
using Fantasy.Entitas;
|
||||
using NBF.Utils;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public class Player : Entity
|
||||
{
|
||||
// ========== 本地状态 ==========
|
||||
/// <summary>
|
||||
/// 是否本地玩家
|
||||
/// </summary>
|
||||
public bool IsLocalPlayer;
|
||||
|
||||
/// <summary>
|
||||
/// 是否切换物品中
|
||||
/// </summary>
|
||||
public bool IsChangeItemIng;
|
||||
|
||||
public bool IsLureRod => false;
|
||||
|
||||
public bool IsSelf => RoleModel.Instance.Id == Id;
|
||||
@@ -61,18 +68,20 @@ namespace NBF
|
||||
/// <summary>
|
||||
/// 当前手持物品
|
||||
/// </summary>
|
||||
public PlayerItem HandItem => Items[HandItemId];
|
||||
public PlayerItem HandItem => Items.GetValueOrDefault(HandItemId);
|
||||
|
||||
#region 初始化
|
||||
|
||||
public void InitPlayer(MapUnitInfo unitInfo)
|
||||
{
|
||||
AddComponent<PlayerViewComponent>();
|
||||
AddComponent<PlayerStateViewComponent>();
|
||||
PreviousState = PlayerState.None;
|
||||
State = PlayerState.Idle;
|
||||
AddComponent<PlayerView>();
|
||||
AddComponent<PlayerStateView>();
|
||||
if (unitInfo.Id == RoleModel.Instance.Id)
|
||||
{
|
||||
//自己
|
||||
AddComponent<PlayerInputComponent>();
|
||||
AddComponent<PlayerInput>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,29 +89,39 @@ namespace NBF
|
||||
|
||||
#region 物品
|
||||
|
||||
public void UnUseItem()
|
||||
public void ReleaseItem(PlayerItem item)
|
||||
{
|
||||
if (Items.TryGetValue(HandItemId, out var item))
|
||||
if (Items.ContainsValue(item))
|
||||
{
|
||||
Items.Remove(item.Id);
|
||||
item.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public void UnUseItem()
|
||||
{
|
||||
var prevItem = HandItem;
|
||||
HandItemId = 0;
|
||||
ItemChangeEvent();
|
||||
ItemChangeEvent(prevItem);
|
||||
}
|
||||
|
||||
public void UseItem(ItemBindInfo item)
|
||||
public void UseItem(int configId, List<int> bindItems)
|
||||
{
|
||||
var playerItem = Create<PlayerItem>(Scene);
|
||||
playerItem.Init(item);
|
||||
ItemChangeEvent();
|
||||
var prevItem = HandItem;
|
||||
var playerItemRod = Create<PlayerItem>(Scene);
|
||||
playerItemRod.Init(this, configId, bindItems);
|
||||
Items[playerItemRod.Id] = playerItemRod;
|
||||
HandItemId = playerItemRod.Id;
|
||||
ItemChangeEvent(prevItem);
|
||||
}
|
||||
|
||||
private void ItemChangeEvent()
|
||||
private void ItemChangeEvent(PlayerItem prevItem)
|
||||
{
|
||||
Scene.EventComponent.Publish(new PlayerStateChangeEvent
|
||||
Scene.EventComponent.Publish(new PlayerItemChangeEvent
|
||||
{
|
||||
Player = this
|
||||
Player = this,
|
||||
Item = HandItem,
|
||||
PrevItem = prevItem
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using Fantasy;
|
||||
using Fantasy.Entitas;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public class PlayerItem : Entity
|
||||
{
|
||||
/// <summary>
|
||||
/// 配置id
|
||||
/// </summary>
|
||||
public int ConfigID;
|
||||
|
||||
/// <summary>
|
||||
/// 绑定的子物体
|
||||
/// </summary>
|
||||
public List<int> BindItems = new List<int>();
|
||||
|
||||
public void Init(ItemBindInfo bindInfo)
|
||||
{
|
||||
ConfigID = bindInfo.Item;
|
||||
BindItems.AddRange(bindInfo.BindItems);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 172aa8a5a1444ccbad1647479739c232
|
||||
timeCreated: 1773060255
|
||||
guid: a348fcaa64274862baa542a3dc1ffc62
|
||||
timeCreated: 1773117606
|
||||
@@ -1,12 +1,15 @@
|
||||
namespace NBF
|
||||
namespace NBF
|
||||
{
|
||||
public struct PlayerStateChangeEvent
|
||||
{
|
||||
public Player Player;
|
||||
}
|
||||
|
||||
public struct PlayerItemChangeEvent
|
||||
|
||||
public struct PlayerItemChangeEvent
|
||||
{
|
||||
public Player Player;
|
||||
public PlayerItem Item;
|
||||
public PlayerItem PrevItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
using Fantasy.Event;
|
||||
|
||||
namespace NBF.Handle
|
||||
{
|
||||
public class OnPlayerStateChangeEvent : EventSystem<PlayerStateChangeEvent>
|
||||
{
|
||||
protected override void Handler(PlayerStateChangeEvent self)
|
||||
{
|
||||
var view = self.Player.GetOrAddComponent<PlayerItemViewComponent>();
|
||||
view.ShowItem();
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Scripts/Fishing/New/View/Player.meta
Normal file
3
Assets/Scripts/Fishing/New/View/Player.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7a71b6539c547fcaab2b89279530aef
|
||||
timeCreated: 1773116602
|
||||
@@ -0,0 +1,13 @@
|
||||
using Fantasy.Event;
|
||||
|
||||
namespace NBF.Handle
|
||||
{
|
||||
public class OnPlayerStateChangeEvent : EventSystem<PlayerItemChangeEvent>
|
||||
{
|
||||
protected override void Handler(PlayerItemChangeEvent self)
|
||||
{
|
||||
var view = self.Player.GetOrAddComponent<PlayerView>();
|
||||
view.ChangeItem(self).Coroutine();
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Scripts/Fishing/New/View/Player/Item.meta
Normal file
3
Assets/Scripts/Fishing/New/View/Player/Item.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1f9c361f2958454abb43724693a2157a
|
||||
timeCreated: 1773116527
|
||||
@@ -0,0 +1,28 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Entitas;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
/// <summary>
|
||||
/// 玩家物品视图组件
|
||||
/// </summary>
|
||||
public class PlayerItemView : Entity
|
||||
{
|
||||
public PlayerItem Item { get; protected set; }
|
||||
|
||||
/// <summary>
|
||||
/// 竿子
|
||||
/// </summary>
|
||||
public FRod Rod { get; private set; }
|
||||
|
||||
public async FTask InitShow(PlayerItem item)
|
||||
{
|
||||
Item = item;
|
||||
var itemConfig = Game.Tables.TbItem.Get(Item.ConfigID);
|
||||
Rod = itemConfig.InstantiateAndComponent<FRod>(SceneSettings.Instance.GearNode, Vector3.zero,
|
||||
Quaternion.identity);
|
||||
await Rod.InitRod(Item);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 98838cf2cf934b8aaaf97f4d58544055
|
||||
timeCreated: 1773116536
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using KINEMATION.MagicBlend.Runtime;
|
||||
using NBC;
|
||||
using NBF.Utils;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
@@ -83,35 +84,23 @@ namespace NBF
|
||||
_Animator.keepAnimatorStateOnDisable = true;
|
||||
_IK = GetComponent<PlayerIK>();
|
||||
_isInit = true;
|
||||
// Player.OnFishingSetEquiped += OnFishingSetEquiped_OnRaised;
|
||||
// Player.OnFishingSetUnequip += OnFishingSetUnequip;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
// Player.OnFishingSetEquiped -= OnFishingSetEquiped_OnRaised;
|
||||
// Player.OnFishingSetUnequip -= OnFishingSetUnequip;
|
||||
}
|
||||
|
||||
|
||||
private void OnFishingSetUnequip()
|
||||
public void OnUnUseItem()
|
||||
{
|
||||
_isRodLayerEnabled = false;
|
||||
}
|
||||
|
||||
|
||||
private void OnFishingSetEquiped_OnRaised(FHandItem item)
|
||||
public void OnUseItem(PlayerItemView item)
|
||||
{
|
||||
if (item is FRod rod)
|
||||
var itemType = item.Item.ConfigID.GetItemType();
|
||||
if (itemType == ItemType.Rod)
|
||||
{
|
||||
_isRodLayerEnabled = true;
|
||||
// var reel = Player.Rod.Reel;
|
||||
// _IK.SetBipedLeftHandIK(enabled: false, reel.FingersIKAnchor);
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using Fantasy;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Fantasy;
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Entitas.Interface;
|
||||
using UnityEngine;
|
||||
@@ -7,34 +9,34 @@ using Log = NBC.Log;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public class PlayerInputComponent : Entity
|
||||
public class PlayerInput : Entity
|
||||
{
|
||||
public Player Player { get; private set; }
|
||||
public PlayerViewComponent View { get; private set; }
|
||||
public PlayerView View { get; private set; }
|
||||
|
||||
#region 生命周期
|
||||
|
||||
public class PlayerViewAwakeSystem : AwakeSystem<PlayerInputComponent>
|
||||
public class PlayerViewAwakeSystem : AwakeSystem<PlayerInput>
|
||||
{
|
||||
protected override void Awake(PlayerInputComponent self)
|
||||
protected override void Awake(PlayerInput self)
|
||||
{
|
||||
self.Player = self.GetParent<Player>();
|
||||
self.View = self.Player.GetComponent<PlayerViewComponent>();
|
||||
self.View = self.Player.GetComponent<PlayerView>();
|
||||
self.AddInputEvent();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewUpdateSystem : UpdateSystem<PlayerInputComponent>
|
||||
public class PlayerViewUpdateSystem : UpdateSystem<PlayerInput>
|
||||
{
|
||||
protected override void Update(PlayerInputComponent self)
|
||||
protected override void Update(PlayerInput self)
|
||||
{
|
||||
self.UpdateMove();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewDestroySystem : DestroySystem<PlayerInputComponent>
|
||||
public class PlayerViewDestroySystem : DestroySystem<PlayerInput>
|
||||
{
|
||||
protected override void Destroy(PlayerInputComponent self)
|
||||
protected override void Destroy(PlayerInput self)
|
||||
{
|
||||
self.RemoveInputEvent();
|
||||
}
|
||||
@@ -90,15 +92,9 @@ namespace NBF
|
||||
var item = RoleModel.Instance.GetSlotItem(index - 1);
|
||||
if (item != null)
|
||||
{
|
||||
var itemBindInfo = ItemBindInfo.Create();
|
||||
itemBindInfo.Item = item.ConfigId;
|
||||
var binds = RoleModel.Instance.GetBindItems(item.Id);
|
||||
foreach (var itemInfo in binds)
|
||||
{
|
||||
itemBindInfo.BindItems.Add(itemInfo.ConfigId);
|
||||
}
|
||||
|
||||
Player.UseItem(itemBindInfo);
|
||||
List<ItemInfo> children = RoleModel.Instance.GetBindItems(item.Id);
|
||||
List<int> bindItems = children.Select(itemInfo => itemInfo.ConfigId).ToList();
|
||||
Player.UseItem(item.ConfigId, bindItems);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ namespace NBF
|
||||
/// <summary>
|
||||
/// 状态显示层组件
|
||||
/// </summary>
|
||||
public class PlayerStateViewComponent : Entity
|
||||
public class PlayerStateView : Entity
|
||||
{
|
||||
private readonly Dictionary<PlayerState, PlayerStageViewBase> _stageViews =
|
||||
new Dictionary<PlayerState, PlayerStageViewBase>();
|
||||
@@ -28,6 +28,8 @@ namespace NBF
|
||||
{
|
||||
playerStageView.Init(_player);
|
||||
}
|
||||
|
||||
OnStageChange();
|
||||
}
|
||||
|
||||
public void Update()
|
||||
@@ -43,21 +45,21 @@ namespace NBF
|
||||
}
|
||||
|
||||
_currentStateView = _stageViews.GetValueOrDefault(_player.State);
|
||||
_currentStateView.Enter(_player.StateParams, _player.PreviousState);
|
||||
_currentStateView?.Enter(_player.StateParams, _player.PreviousState);
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerStateViewComponentAwakeSystem : AwakeSystem<PlayerStateViewComponent>
|
||||
public class PlayerStateViewComponentAwakeSystem : AwakeSystem<PlayerStateView>
|
||||
{
|
||||
protected override void Awake(PlayerStateViewComponent self)
|
||||
protected override void Awake(PlayerStateView self)
|
||||
{
|
||||
self.Awake();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerStateViewComponentUpdateSystem : UpdateSystem<PlayerStateViewComponent>
|
||||
public class PlayerStateViewComponentUpdateSystem : UpdateSystem<PlayerStateView>
|
||||
{
|
||||
protected override void Update(PlayerStateViewComponent self)
|
||||
protected override void Update(PlayerStateView self)
|
||||
{
|
||||
self.Update();
|
||||
}
|
||||
@@ -67,7 +69,7 @@ namespace NBF
|
||||
{
|
||||
protected override void Handler(PlayerStateChangeEvent self)
|
||||
{
|
||||
var stateView = self.Player.GetComponent<PlayerStateViewComponent>();
|
||||
var stateView = self.Player.GetComponent<PlayerStateView>();
|
||||
if (stateView != null)
|
||||
{
|
||||
stateView.OnStageChange();
|
||||
150
Assets/Scripts/Fishing/New/View/Player/PlayerView.cs
Normal file
150
Assets/Scripts/Fishing/New/View/Player/PlayerView.cs
Normal file
@@ -0,0 +1,150 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Entitas.Interface;
|
||||
using NBF.Fishing2;
|
||||
using NBF.Utils;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public class PlayerView : Entity
|
||||
{
|
||||
public Player Player { get; private set; }
|
||||
|
||||
public PlayerUnityComponent Unity { get; private set; }
|
||||
|
||||
#region 生命周期
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
Player = GetParent<Player>();
|
||||
var gameObject = PrefabsHelper.CreatePlayer(SceneSettings.Instance.Node);
|
||||
Unity = gameObject.GetComponent<PlayerUnityComponent>();
|
||||
Unity.Player = Player;
|
||||
CreatePlayerModel();
|
||||
if (Player.IsSelf)
|
||||
{
|
||||
CameraManager.Instance.SetFppLook(Unity);
|
||||
}
|
||||
|
||||
Unity.transform.localPosition = new Vector3(484, 1, 422);
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
}
|
||||
|
||||
public void LateUpdate()
|
||||
{
|
||||
Player.EyeAngle = GameUtils.GetVerticalAngle(Unity.transform, Unity.FppLook);
|
||||
}
|
||||
|
||||
public void Destroy()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 模型创建
|
||||
|
||||
private void CreatePlayerModel()
|
||||
{
|
||||
var modelObject = PrefabsHelper.CreatePlayer(Unity.Root, "Human_Male");
|
||||
modelObject.transform.localPosition = new Vector3(0, 1, 0);
|
||||
Unity.ModelAsset = modelObject.GetComponent<PlayerModelAsset>();
|
||||
Unity.ModelAsset.SetPlayer(Unity.FppLook);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 物品切换
|
||||
|
||||
public async FTask ChangeItem(PlayerItemChangeEvent playerStateChangeEvent)
|
||||
{
|
||||
var prevItem = playerStateChangeEvent.PrevItem;
|
||||
var currItem = playerStateChangeEvent.Item;
|
||||
if (Player.IsChangeItemIng) return;
|
||||
Player.IsChangeItemIng = true;
|
||||
if (currItem == null)
|
||||
{
|
||||
//收起物品
|
||||
await UnUseItem(prevItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 先收起旧的物品
|
||||
await UnUseItemConfirm(prevItem);
|
||||
var handItem = Player.HandItem;
|
||||
//拿起新物品
|
||||
var itemType = handItem.ConfigID.GetItemType();
|
||||
if (itemType == ItemType.Rod)
|
||||
{
|
||||
var itemView = handItem.GetOrAddComponent<PlayerItemView>();
|
||||
await itemView.InitShow(handItem);
|
||||
Unity.ModelAsset.PlayerAnimator.OnUseItem(itemView);
|
||||
}
|
||||
}
|
||||
|
||||
Player.IsChangeItemIng = false;
|
||||
}
|
||||
|
||||
#region 使用物品
|
||||
|
||||
public async FTask UnUseItem(PlayerItem item)
|
||||
{
|
||||
if (item == null) return;
|
||||
if (Player.IsChangeItemIng) return;
|
||||
Player.IsChangeItemIng = true;
|
||||
await UnUseItemConfirm(item);
|
||||
Player.IsChangeItemIng = false;
|
||||
}
|
||||
|
||||
private async FTask UnUseItemConfirm(PlayerItem item)
|
||||
{
|
||||
if (item != null)
|
||||
{
|
||||
Unity.ModelAsset.PlayerAnimator.OnUnUseItem();
|
||||
await FTask.Wait(Scene, 100);
|
||||
}
|
||||
|
||||
Player.ReleaseItem(item);
|
||||
await FTask.Wait(Scene, 450);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PlayerViewAwakeSystem : AwakeSystem<PlayerView>
|
||||
{
|
||||
protected override void Awake(PlayerView self)
|
||||
{
|
||||
self.Awake();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewDestroySystem : DestroySystem<PlayerView>
|
||||
{
|
||||
protected override void Destroy(PlayerView self)
|
||||
{
|
||||
self.Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewUpdateSystem : UpdateSystem<PlayerView>
|
||||
{
|
||||
protected override void Update(PlayerView self)
|
||||
{
|
||||
self.Update();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewLateUpdateSystem : LateUpdateSystem<PlayerView>
|
||||
{
|
||||
protected override void LateUpdate(PlayerView self)
|
||||
{
|
||||
self.LateUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,12 @@
|
||||
using UnityEngine;
|
||||
using NBC;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public abstract class PlayerStageViewBase
|
||||
{
|
||||
public Player Player { get; private set; }
|
||||
public PlayerViewComponent PlayerView { get; private set; }
|
||||
public PlayerView PlayerView { get; private set; }
|
||||
protected float EnterTime { get; set; }
|
||||
|
||||
protected PlayerState PreviousState { get; private set; }
|
||||
@@ -14,7 +15,7 @@ namespace NBF
|
||||
public void Init(Player player)
|
||||
{
|
||||
Player = player;
|
||||
PlayerView = player.GetComponent<PlayerViewComponent>();
|
||||
PlayerView = player.GetComponent<PlayerView>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -30,6 +31,7 @@ namespace NBF
|
||||
|
||||
public void Enter(StateEnterParams par = null, PlayerState prevState = PlayerState.None)
|
||||
{
|
||||
Log.Info($"进入状态={GetType()}");
|
||||
Params = par;
|
||||
PreviousState = prevState;
|
||||
EnterTime = Time.time;
|
||||
@@ -0,0 +1,9 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public abstract class FHandItem : MonoBehaviour
|
||||
{
|
||||
public abstract int ConfigId { get; }
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Fantasy;
|
||||
using Fantasy.Async;
|
||||
using NBC.Asset;
|
||||
using NBF.Utils;
|
||||
using UnityEngine;
|
||||
@@ -13,6 +14,10 @@ namespace NBF
|
||||
{
|
||||
private float _tension;
|
||||
|
||||
public PlayerItem PlayerItem;
|
||||
|
||||
public override int ConfigId => PlayerItem?.ConfigID ?? 0;
|
||||
|
||||
/// <summary>
|
||||
/// 可用的
|
||||
/// </summary>
|
||||
@@ -122,12 +127,11 @@ namespace NBF
|
||||
yield return 1;
|
||||
}
|
||||
|
||||
public IEnumerator InitRod(Player player, ItemBindInfo itemBindInfo)
|
||||
public async FTask InitRod(PlayerItem playerItem)
|
||||
{
|
||||
ConfigId = itemBindInfo.Item;
|
||||
// Player = player;
|
||||
PlayerItem = playerItem;
|
||||
|
||||
var playerView = player.GetComponent<PlayerViewComponent>();
|
||||
var playerView = playerItem.Owner.GetComponent<PlayerView>();
|
||||
|
||||
var playerViewUnity = playerView.Unity;
|
||||
|
||||
@@ -135,7 +139,8 @@ namespace NBF
|
||||
transform.localRotation = Quaternion.identity;
|
||||
transform.localScale = Vector3.one;
|
||||
SceneSettings.Instance.GearNode.position = playerViewUnity.transform.position;
|
||||
yield return 1;
|
||||
await FTask.WaitFrame(playerView.Scene); //等待1帧
|
||||
|
||||
var obj = new GameObject($"rod_{ConfigId}");
|
||||
obj.transform.SetParent(SceneSettings.Instance.GearNode);
|
||||
// obj.transform.SetParent(player.transform);
|
||||
@@ -149,11 +154,10 @@ namespace NBF
|
||||
|
||||
// List<ItemInfo> children = RoleModel.Instance.GetBindItems(itemInfo.Id);
|
||||
|
||||
|
||||
CreateFishingHandler();
|
||||
yield return 1; //等待1帧
|
||||
await FTask.WaitFrame(playerView.Scene); //等待1帧
|
||||
// children.Sort();
|
||||
foreach (var childConfigId in itemBindInfo.BindItems)
|
||||
foreach (var childConfigId in playerItem.BindItems)
|
||||
{
|
||||
var itemType = childConfigId.GetItemType();
|
||||
var config = Game.Tables.TbItem.Get(childConfigId);
|
||||
@@ -199,7 +203,7 @@ namespace NBF
|
||||
}
|
||||
}
|
||||
|
||||
yield return 1;
|
||||
await FTask.WaitFrame(playerView.Scene); //等待1帧
|
||||
if (Reel)
|
||||
{
|
||||
Reel.reelingDrag = 0.699f;
|
||||
@@ -234,7 +238,7 @@ namespace NBF
|
||||
Weight.Init(this);
|
||||
}
|
||||
|
||||
yield return 1; //等待1帧
|
||||
await FTask.WaitFrame(playerView.Scene); //等待1帧
|
||||
|
||||
transform.SetParent(playerViewUnity.ModelAsset.RodRoot);
|
||||
transform.localPosition = Vector3.zero;
|
||||
@@ -284,11 +288,6 @@ namespace NBF
|
||||
Line = obj.GetComponent<FLine>();
|
||||
Line.transform.position = Asset.lineConnector.position;
|
||||
Line.Init(this);
|
||||
|
||||
// var obiSolver = solver.GetComponent<ObiSolver>();
|
||||
// obiSolver.parameters.ambientWind = Vector3.zero;
|
||||
// obiSolver.wind.
|
||||
// obiSolver.simulateWhenInvisible
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
using System.Collections;
|
||||
using Fantasy.Entitas;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public class PlayerItemViewComponent : Entity
|
||||
{
|
||||
public void ShowItem()
|
||||
{
|
||||
// Game.Instance.StartCoroutine()
|
||||
}
|
||||
|
||||
#region 使用物品
|
||||
|
||||
// public IEnumerator UseItem(ItemInfo item)
|
||||
// {
|
||||
// if (Data.ChangeItem) yield break;
|
||||
// Data.ChangeItem = true;
|
||||
// var itemType = item?.ConfigId.GetItemType();
|
||||
// if (itemType == ItemType.Rod)
|
||||
// {
|
||||
// //判断旧的是否要收回
|
||||
// yield return UnUseItemConfirm();
|
||||
//
|
||||
// Data.IsLureRod = true;
|
||||
// var rodType = (ItemSubType)item.Config.Type;
|
||||
// if (rodType == ItemSubType.RodTele)
|
||||
// {
|
||||
// Data.IsLureRod = false;
|
||||
// }
|
||||
//
|
||||
// Rod =
|
||||
// item.Config.InstantiateAndComponent<FRod>(SceneSettings.Instance.GearNode, Vector3.zero,
|
||||
// Quaternion.identity);
|
||||
// yield return Rod.InitRod(this, item);
|
||||
// Tackles.Add(Rod);
|
||||
// OnFishingSetEquiped?.Invoke(Rod);
|
||||
// }
|
||||
//
|
||||
// Data.ChangeItem = false;
|
||||
// }
|
||||
//
|
||||
// public IEnumerator UnUseItem()
|
||||
// {
|
||||
// if (Data.ChangeItem) yield break;
|
||||
// Data.ChangeItem = true;
|
||||
// yield return UnUseItemConfirm();
|
||||
// Data.ChangeItem = false;
|
||||
// }
|
||||
//
|
||||
// private IEnumerator UnUseItemConfirm()
|
||||
// {
|
||||
// if (Rod != null)
|
||||
// {
|
||||
// OnFishingSetUnequip?.Invoke();
|
||||
// yield return Rod.Destroy();
|
||||
// yield return new WaitForSeconds(0.35f);
|
||||
// Destroy(Rod.gameObject);
|
||||
// Tackles.Remove(Rod);
|
||||
// Rod = null;
|
||||
// yield return new WaitForSeconds(0.15f);
|
||||
// }
|
||||
// }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cf5f405feb8f431ea52d8f33b3cb2e29
|
||||
timeCreated: 1773069665
|
||||
@@ -1,90 +0,0 @@
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Entitas.Interface;
|
||||
using NBF.Fishing2;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public class PlayerViewComponent : Entity
|
||||
{
|
||||
public Player Player { get; private set; }
|
||||
|
||||
public PlayerUnityComponent Unity { get; private set; }
|
||||
|
||||
#region 生命周期
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
Player = GetParent<Player>();
|
||||
var gameObject = PrefabsHelper.CreatePlayer(SceneSettings.Instance.Node);
|
||||
Unity = gameObject.GetComponent<PlayerUnityComponent>();
|
||||
Unity.Player = Player;
|
||||
CreatePlayerModel();
|
||||
if (Player.IsSelf)
|
||||
{
|
||||
CameraManager.Instance.SetFppLook(Unity);
|
||||
}
|
||||
|
||||
Unity.transform.localPosition = new Vector3(484, 1, 422);
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
}
|
||||
|
||||
public void LateUpdate()
|
||||
{
|
||||
Player.EyeAngle = GameUtils.GetVerticalAngle(Unity.transform, Unity.FppLook);
|
||||
}
|
||||
|
||||
public void Destroy()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 模型创建
|
||||
|
||||
private void CreatePlayerModel()
|
||||
{
|
||||
var modelObject = PrefabsHelper.CreatePlayer(Unity.Root, "Human_Male");
|
||||
modelObject.transform.localPosition = new Vector3(0, 1, 0);
|
||||
Unity.ModelAsset = modelObject.GetComponent<PlayerModelAsset>();
|
||||
Unity.ModelAsset.SetPlayer(Unity.FppLook);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PlayerViewAwakeSystem : AwakeSystem<PlayerViewComponent>
|
||||
{
|
||||
protected override void Awake(PlayerViewComponent self)
|
||||
{
|
||||
self.Awake();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewDestroySystem : DestroySystem<PlayerViewComponent>
|
||||
{
|
||||
protected override void Destroy(PlayerViewComponent self)
|
||||
{
|
||||
self.Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewUpdateSystem : UpdateSystem<PlayerViewComponent>
|
||||
{
|
||||
protected override void Update(PlayerViewComponent self)
|
||||
{
|
||||
self.Update();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewLateUpdateSystem : LateUpdateSystem<PlayerViewComponent>
|
||||
{
|
||||
protected override void LateUpdate(PlayerViewComponent self)
|
||||
{
|
||||
self.LateUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public class FHandItem : MonoBehaviour
|
||||
{
|
||||
public int ConfigId;
|
||||
}
|
||||
}
|
||||
@@ -4922,9 +4922,9 @@ namespace Fantasy
|
||||
MessageObjectPool<ItemBindInfo>.Return(this);
|
||||
}
|
||||
[ProtoMember(1)]
|
||||
public int Item { get; set; }
|
||||
public long Item { get; set; }
|
||||
[ProtoMember(2)]
|
||||
public List<int> BindItems { get; set; } = new List<int>();
|
||||
public List<long> BindItems { get; set; } = new List<long>();
|
||||
}
|
||||
/// <summary>
|
||||
/// 物品信息
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIMGUIContainer_002Ecs_002Fl_003AC_0021_003FUsers_003F60527_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb4f75f0eb2d14004826911645c6175d61fbe00_003F49_003F22dd7281_003FIMGUIContainer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIMGUIContainer_002Ecs_002Fl_003AC_0021_003FUsers_003F60527_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F348ed09ed1634d388253e20b5aab3fcf223400_003Ff5_003F8f871742_003FIMGUIContainer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIMGUIContainer_002Ecs_002Fl_003AC_0021_003FUsers_003F60527_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F348ed09ed1634d388253e20b5aab3fcf223400_003Ff5_003F8f871742_003FIMGUIContainer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AInt32_002Ecs_002Fl_003AC_0021_003FUsers_003FFIREBAT_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fee16c2cb688d4766af955c0ec92acd90573638_003Fa4_003Fca01585e_003FInt32_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonSerializerInternalWriter_002Ecs_002Fl_003AC_0021_003FUsers_003FFIREBAT_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fe2e3d26278e439d44964729238a685ad58d3189abf8fb84cdfe34b893a290a2_003FJsonSerializerInternalWriter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonSerializer_002Ecs_002Fl_003AC_0021_003FUsers_003FFIREBAT_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F761cf2a144514d2291a678c334d49e9baa000_003F17_003F2f6d958d_003FJsonSerializer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonUtility_002Ecs_002Fl_003AC_0021_003FUsers_003FFIREBAT_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fbd535c51a50047bd8847b8df6bc5f2a44600_003F57_003F2ada4d31_003FJsonUtility_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 12 KiB |
Reference in New Issue
Block a user