Files
AliceBall/Assets/_Alice/Scripts/Task/GemTask/BubblesGemTask.cs
2025-12-12 17:52:07 +08:00

93 lines
2.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using DragonLi.Core;
using UnityEngine;
public class BubblesGemTask : Task
{
private bool hasCompleted = false; // 添加完成状态标志
public override void Init()
{
base.Init();
}
public override void StartTask()
{
base.StartTask();
winTaskTime = Random.Range(40, 61);
endTaskTime = 60;
GameManager.Ins.playerRightHand._isOpenLine = false;
hasCompleted = false; // 重置完成状态
}
public override void EndTask()
{
base.EndTask();
GameManager.Ins.playerRightHand._isOpenLine = true;
if(hasCompleted || GameManager.Ins.taskManager.isGetGem)
return;
foreach (var item in curGems)
{
if (item != null)
{
var bg = item.GetComponent<BubblesGem>();
// ✅ 打断 ShowGem 协程,避免冲突
bg.StopAllCoroutines();
// 强制拿到真实宝石
bg.gemType = SeekGemType.Real;
bg.GetGem(3);
// 标记已经拿到
GameManager.Ins.taskManager.isGetGem = true;
break;
}
}
}
public override void CompleteTask()
{
// 防止重复调用
if (hasCompleted)
{
Debug.LogWarning("BubblesGemTask 已经完成,跳过重复调用");
return;
}
// 验证当前任务ID
int currentTaskId = GameManager.Ins.taskManager.curTaskId;
if (currentTaskId != 1)
{
Debug.LogWarning($"当前任务索引 {currentTaskId} 不是预期的第二个任务,跳过完成");
return;
}
hasCompleted = true;
base.CompleteTask();
Debug.Log("删除泡泡宝石");
foreach (var item in curGems)
{
if (item != null)
{
Destroy(item);
}
}
MonoSingleton<CoroutineTaskManager>.Instance.WaitSecondTodo(() =>
{
GameManager.Ins.enemy.Show();
GameManager.Ins.enemy.SetState(2);
}, 2);
}
public override void Update()
{
base.Update();
}
}