Add auto move, navigate when click target link
This commit is contained in:
@@ -11,6 +11,7 @@ using Cysharp.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
using System;
|
||||
using BrewMonster.Scripts; // For CECNavigateCtrl
|
||||
|
||||
namespace BrewMonster.Scripts.Task
|
||||
{
|
||||
@@ -1625,19 +1626,25 @@ namespace BrewMonster.Scripts.Task
|
||||
{
|
||||
return m_pFinishedCountListBuf;
|
||||
}
|
||||
void SetForceNavigateFinishFlag(bool bFinish) { m_bForceNavigateFinish = bFinish;} //
|
||||
public void OnNewTask(int iTaskID)
|
||||
public void SetForceNavigateFinishFlag(bool bFinish) { m_bForceNavigateFinish = bFinish;} // Set force navigate finish flag // 设置强制导航完成标志
|
||||
public void OnNewTask(int iTaskID)
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnNewTask: TaskID={iTaskID}");
|
||||
ATaskTempl pTempl = GetTaskTemplMan().GetTaskTemplByID((uint)iTaskID);
|
||||
if (pTempl != null
|
||||
&& pTempl.m_FixedData.m_enumMethod== (uint)TaskCompletionMethod.enumTMSimpleClientTaskForceNavi)
|
||||
{
|
||||
ATaskTempl pTempl = GetTaskTemplMan().GetTaskTemplByID((uint)iTaskID);
|
||||
if (pTempl != null
|
||||
&& pTempl.m_FixedData.m_enumMethod== (uint)TaskCompletionMethod.enumTMSimpleClientTaskForceNavi)
|
||||
{
|
||||
SetForceNavigateFinishFlag(false);
|
||||
|
||||
// TODO: trigger navigation event
|
||||
// m_pHost.OnNaviageEvent(iTaskID,CECNavigateCtrl::EM_PREPARE);
|
||||
}
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnNewTask: Task {iTaskID} is force navigate task, triggering EM_PREPARE");
|
||||
SetForceNavigateFinishFlag(false);
|
||||
|
||||
// Trigger navigation event // 触发导航事件
|
||||
m_pHost.OnNaviageEvent(iTaskID, (int)CECNavigateCtrl.NavigateEvent.EM_PREPARE);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnNewTask: Task {iTaskID} is not a force navigate task (pTempl={pTempl != null}, method={pTempl?.m_FixedData.m_enumMethod})");
|
||||
}
|
||||
}
|
||||
|
||||
public void OnTaskConfirmUpdate()
|
||||
{
|
||||
@@ -1653,34 +1660,99 @@ namespace BrewMonster.Scripts.Task
|
||||
OnTaskConfirmUpdate();
|
||||
}
|
||||
|
||||
public void OnCompleteTask(int iTaskID)
|
||||
public void OnCompleteTask(int iTaskID)
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnCompleteTask: TaskID={iTaskID}");
|
||||
ATaskTempl pTempl = GetTaskTemplMan().GetTaskTemplByID((uint)iTaskID);
|
||||
if (pTempl != null &&
|
||||
pTempl.m_FixedData.m_enumMethod == (uint)TaskCompletionMethod.enumTMSimpleClientTaskForceNavi)
|
||||
{
|
||||
ATaskTempl pTempl = GetTaskTemplMan().GetTaskTemplByID((uint)iTaskID);
|
||||
if (pTempl != null &&
|
||||
pTempl.m_FixedData.m_enumMethod == (uint)TaskCompletionMethod.enumTMSimpleClientTaskForceNavi)
|
||||
{
|
||||
//TODO: trigger navigation end event
|
||||
// m_pHost.OnNaviageEvent(iTaskID,CECNavigateCtrl::EM_END);
|
||||
SetForceNavigateFinishFlag(false);
|
||||
}
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnCompleteTask: Task {iTaskID} is force navigate task, triggering EM_END");
|
||||
// Trigger navigation end event // 触发导航结束事件
|
||||
m_pHost.OnNaviageEvent(iTaskID, (int)CECNavigateCtrl.NavigateEvent.EM_END);
|
||||
SetForceNavigateFinishFlag(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnCompleteTask: Task {iTaskID} is not a force navigate task");
|
||||
}
|
||||
}
|
||||
|
||||
public void TakeAwayCommonItem(uint ulTemplId, uint ulNum) {}
|
||||
|
||||
public void TakeAwayTaskItem(uint ulTemplId, uint ulNum) {}
|
||||
public void TakeAwayGold(uint ulNum) {}
|
||||
public void TakeAwayFactionConsumeContrib(int ulNum){}
|
||||
public void OnGiveupTask(int iTaskID)
|
||||
public void OnGiveupTask(int iTaskID)
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnGiveupTask: TaskID={iTaskID}");
|
||||
ATaskTempl pTempl = GetTaskTemplMan().GetTaskTemplByID((uint)iTaskID);
|
||||
if (pTempl != null &&
|
||||
pTempl.m_FixedData.m_enumMethod == (uint)TaskCompletionMethod.enumTMSimpleClientTaskForceNavi)
|
||||
{
|
||||
ATaskTempl pTempl = GetTaskTemplMan().GetTaskTemplByID((uint)iTaskID);
|
||||
if (pTempl != null &&
|
||||
pTempl.m_FixedData.m_enumMethod == (uint)TaskCompletionMethod.enumTMSimpleClientTaskForceNavi)
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnGiveupTask: Task {iTaskID} is force navigate task, triggering EM_END");
|
||||
// Trigger navigation end event // 触发导航结束事件
|
||||
m_pHost.OnNaviageEvent(iTaskID, (int)CECNavigateCtrl.NavigateEvent.EM_END);
|
||||
SetForceNavigateFinishFlag(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnGiveupTask: Task {iTaskID} is not a force navigate task");
|
||||
}
|
||||
}
|
||||
|
||||
// Handle task text click in UI - trigger navigation if it's a force navigate task // 处理任务UI文本点击 - 如果是强制导航任务则触发导航
|
||||
// This is called when user clicks on task name/link in the task UI // 当用户在任务UI中点击任务名称/链接时调用
|
||||
public void OnTaskTextClick(int iTaskID)
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnTaskTextClick: TaskID={iTaskID}");
|
||||
|
||||
// Check if task exists and is a force navigate task // 检查任务是否存在且为强制导航任务
|
||||
ATaskTempl pTempl = GetTaskTemplMan().GetTaskTemplByID((uint)iTaskID);
|
||||
if (pTempl != null &&
|
||||
pTempl.m_FixedData.m_enumMethod == (uint)TaskCompletionMethod.enumTMSimpleClientTaskForceNavi)
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnTaskTextClick: Task {iTaskID} is force navigate task, triggering navigation");
|
||||
|
||||
// Check if navigation is already prepared // 检查导航是否已准备
|
||||
CECHostNavigatePlayer pNavigatePlayer = m_pHost.GetNavigatePlayer();
|
||||
if (pNavigatePlayer != null && pNavigatePlayer.GetNavigateCtrl() != null)
|
||||
{
|
||||
// TODO: trigger navigation end event
|
||||
// m_pHost.OnNaviageEvent(iTaskID,CECNavigateCtrl::EM_END);
|
||||
SetForceNavigateFinishFlag(false);
|
||||
// If already prepared, trigger begin // 如果已准备,触发开始
|
||||
if (pNavigatePlayer.GetNavigateCtrl().IsInForceNavigateState())
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnTaskTextClick: Navigation already prepared, triggering EM_BEGIN");
|
||||
m_pHost.OnNaviageEvent(iTaskID, (int)CECNavigateCtrl.NavigateEvent.EM_BEGIN);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Prepare first, then begin // 先准备,然后开始
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnTaskTextClick: Preparing navigation first, then beginning");
|
||||
m_pHost.OnNaviageEvent(iTaskID, (int)CECNavigateCtrl.NavigateEvent.EM_PREPARE);
|
||||
// Note: EM_BEGIN will be triggered after preparation is complete
|
||||
// 注意:EM_BEGIN 将在准备完成后触发
|
||||
// For now, trigger it immediately after a short delay
|
||||
// 目前,在短暂延迟后立即触发
|
||||
// TODO: Implement proper async handling if needed
|
||||
// TODO: 如果需要,实现适当的异步处理
|
||||
m_pHost.OnNaviageEvent(iTaskID, (int)CECNavigateCtrl.NavigateEvent.EM_BEGIN);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Prepare and begin navigation // 准备并开始导航
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnTaskTextClick: Preparing and beginning navigation");
|
||||
m_pHost.OnNaviageEvent(iTaskID, (int)CECNavigateCtrl.NavigateEvent.EM_PREPARE);
|
||||
m_pHost.OnNaviageEvent(iTaskID, (int)CECNavigateCtrl.NavigateEvent.EM_BEGIN);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.Log($"[CECTaskInterface] OnTaskTextClick: Task {iTaskID} is not a force navigate task, will use normal auto-move");
|
||||
// TODO: Implement normal auto-move behavior here
|
||||
// TODO: 在此处实现正常的自动移动行为
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateTaskUI(uint idTask, int reason)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user