189 lines
5.9 KiB
C#
189 lines
5.9 KiB
C#
using BrewMonster.Scripts;
|
|
using BrewMonster.Scripts.Managers;
|
|
using CSNetwork.GPDataType;
|
|
using UnityEngine;
|
|
|
|
namespace BrewMonster.Scripts
|
|
{
|
|
/// <summary>
|
|
/// Host player work: Use item
|
|
/// 主角玩家工作:使用物品
|
|
/// </summary>
|
|
public class CECHPWorkUse : CECHPWork
|
|
{
|
|
// Fields / 字段
|
|
private int m_idItem; // Item template ID / 物品模板ID
|
|
private int m_idTarget; // Target object ID / 目标对象ID
|
|
private bool m_bWorkForMonsterSpirit; // Is this work for monster spirit gathering? / 是否为命轮采集工作
|
|
private CECCounter m_UseTimeCnt; // Use time counter / 使用时间计数器
|
|
|
|
/// <summary>
|
|
/// Constructor / 构造函数
|
|
/// </summary>
|
|
public CECHPWorkUse(CECHPWorkMan pWorkMan) : base(Host_work_ID.WORK_USEITEM, pWorkMan)
|
|
{
|
|
m_dwMask = Work_mask.MASK_USEITEM;
|
|
m_dwTransMask = Work_mask.MASK_STAND | Work_mask.MASK_MOVETOPOS;
|
|
Reset();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reset work / 重置工作
|
|
/// </summary>
|
|
public override void Reset()
|
|
{
|
|
base.Reset();
|
|
|
|
m_idItem = 0;
|
|
m_idTarget = 0;
|
|
m_bWorkForMonsterSpirit = false;
|
|
|
|
if (m_UseTimeCnt == null)
|
|
m_UseTimeCnt = new CECCounter();
|
|
|
|
m_UseTimeCnt.SetPeriod(100);
|
|
m_UseTimeCnt.Reset();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Copy work data / 复制工作数据
|
|
/// </summary>
|
|
public override bool CopyData(CECHPWork pWork)
|
|
{
|
|
if (!base.CopyData(pWork))
|
|
return false;
|
|
|
|
CECHPWorkUse pSrc = pWork as CECHPWorkUse;
|
|
if (pSrc == null)
|
|
return false;
|
|
|
|
m_idItem = pSrc.m_idItem;
|
|
m_idTarget = pSrc.m_idTarget;
|
|
m_bWorkForMonsterSpirit = pSrc.m_bWorkForMonsterSpirit;
|
|
|
|
m_UseTimeCnt.SetPeriod(pSrc.m_UseTimeCnt.GetPeriod());
|
|
m_UseTimeCnt.SetCounter(pSrc.m_UseTimeCnt.GetCounter());
|
|
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// On first tick / 第一帧执行
|
|
/// </summary>
|
|
protected override void OnFirstTick()
|
|
{
|
|
if (m_pHost == null)
|
|
return;
|
|
|
|
m_pHost.m_iMoveMode = (int)MoveMode.MOVE_STAND;
|
|
|
|
EC_IvtrItem pItem = EC_IvtrItem.CreateItem(m_idItem, 0, 1);
|
|
if (pItem == null)
|
|
return;
|
|
|
|
if (m_bWorkForMonsterSpirit)
|
|
{
|
|
// Play gather monster spirit action / 播放采集命轮动作
|
|
// TODO: Implement PlayGatherMonsterSpiritAction if needed
|
|
// m_pHost.PlayGatherMonsterSpiritAction();
|
|
Debug.Log($"[CECHPWorkUse] Playing gather monster spirit action for item {m_idItem}");
|
|
}
|
|
else
|
|
{
|
|
// Play start use item action / 播放开始使用物品动作
|
|
// TODO: Implement PlayStartUseItemAction if needed
|
|
// m_pHost.PlayStartUseItemAction(m_idItem);
|
|
Debug.Log($"[CECHPWorkUse] Playing start use item action for item {m_idItem}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Work is cancelled / 工作被取消
|
|
/// </summary>
|
|
public override void Cancel()
|
|
{
|
|
if (m_idTarget != 0 && m_pHost != null)
|
|
{
|
|
m_pHost.TurnFaceTo(0);
|
|
}
|
|
|
|
base.Cancel();
|
|
|
|
// TODO: Implement AP_ActionEvent if needed
|
|
// AP_ActionEvent(AP_EVENT_STOPUSEITEM);
|
|
Debug.Log("[CECHPWorkUse] Work cancelled - STOPUSEITEM event");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Set parameters / 设置参数
|
|
/// </summary>
|
|
/// <param name="idItem">Item template ID / 物品模板ID</param>
|
|
/// <param name="dwUseTime">Use time in milliseconds / 使用时间(毫秒)</param>
|
|
/// <param name="idTarget">Target object ID / 目标对象ID</param>
|
|
/// <param name="bWorkForMonsterSpirit">Is for monster spirit gathering / 是否为命轮采集</param>
|
|
public void SetParams(int idItem, float dwUseTime, int idTarget, bool bWorkForMonsterSpirit)
|
|
{
|
|
m_idItem = idItem;
|
|
m_idTarget = idTarget;
|
|
m_bWorkForMonsterSpirit = bWorkForMonsterSpirit;
|
|
|
|
m_UseTimeCnt.SetPeriod(dwUseTime);
|
|
m_UseTimeCnt.Reset();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tick routine / 每帧更新
|
|
/// </summary>
|
|
public override bool Tick(float dwDeltaTime)
|
|
{
|
|
base.Tick(dwDeltaTime);
|
|
|
|
// Update use time counter / 更新使用时间计数器
|
|
if (m_UseTimeCnt.IncCounter(dwDeltaTime))
|
|
{
|
|
m_UseTimeCnt.Reset(true);
|
|
m_bFinished = true;
|
|
}
|
|
|
|
// Turn face to target if needed / 如果有目标则面向目标
|
|
if (m_idTarget != 0 && m_pHost != null)
|
|
{
|
|
m_pHost.TurnFaceTo(m_idTarget);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get item template ID / 获取物品模板ID
|
|
/// </summary>
|
|
public int GetItem()
|
|
{
|
|
return m_idItem;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get target object ID / 获取目标对象ID
|
|
/// </summary>
|
|
public int GetTarget()
|
|
{
|
|
return m_idTarget;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Is this work for monster spirit gathering? / 是否为命轮采集工作
|
|
/// </summary>
|
|
public bool IsWorkForMonsterSpirit()
|
|
{
|
|
return m_bWorkForMonsterSpirit;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get use time counter / 获取使用时间计数器
|
|
/// </summary>
|
|
public CECCounter GetUseTimeCnt()
|
|
{
|
|
return m_UseTimeCnt;
|
|
}
|
|
}
|
|
} |