修改
This commit is contained in:
@@ -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
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user