Add auto move, navigate when click target link

This commit is contained in:
HungDK
2026-01-09 15:15:25 +07:00
parent 70104db9e2
commit 57fa8ff8fa
@@ -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)
{