93 lines
2.3 KiB
C#
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();
|
|
}
|
|
|
|
}
|