This commit is contained in:
Bob.Song
2026-03-10 16:03:38 +08:00
parent 228de2445d
commit cf2e374998
86 changed files with 478 additions and 383 deletions

View File

@@ -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,18 @@ 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>();
AddComponent<PlayerView>();
AddComponent<PlayerStateView>();
if (unitInfo.Id == RoleModel.Instance.Id)
{
//自己
AddComponent<PlayerInputComponent>();
AddComponent<PlayerInput>();
}
}
@@ -80,29 +87,44 @@ 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(ItemInfo item)
{
var playerItem = Create<PlayerItem>(Scene);
playerItem.Init(item);
ItemChangeEvent();
}
private void ItemChangeEvent()
{
Scene.EventComponent.Publish(new PlayerStateChangeEvent
var prevItem = HandItem;
var itemType = item.ConfigId.GetItemType();
if (itemType == ItemType.Rod)
{
Player = this
var playerItemRod = Create<PlayerItemRod>(Scene);
playerItemRod.Init(this, item);
Items[playerItemRod.Id] = playerItemRod;
HandItemId = playerItemRod.Id;
}
ItemChangeEvent(prevItem);
}
private void ItemChangeEvent(PlayerItem prevItem)
{
Scene.EventComponent.Publish(new PlayerItemChangeEvent
{
Player = this,
Item = HandItem,
PrevItem = prevItem
});
}