NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/FirstTimeFlow/FirstTimeFlowManager.cs

85 lines
2.6 KiB
C#
Raw Normal View History

2025-03-27 14:46:41 +08:00
using Gameplay.Net;
using PhxhSDK;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Gameplay.FirstTimeFlow
{
/// <summary>
/// 新号强制流程管理器
/// </summary>
2025-03-27 14:46:41 +08:00
public sealed class FirstTimeFlowManager : Singlenton<FirstTimeFlowManager>, IInitable
{
2025-03-27 14:46:41 +08:00
/// <summary>
/// 强制流程步骤链表
/// </summary>
private LinkedList<FirstTimeFlowStep> linkStep;
/// <summary>
2025-03-27 15:26:49 +08:00
/// 是否强制流程中
/// </summary>
public bool IsFlowing { get; private set; }
2025-03-27 14:46:41 +08:00
public void Init()
{
linkStep = new LinkedList<FirstTimeFlowStep>();
}
public void Release()
{
}
/// <summary>
/// 开始强制流程
/// </summary>
public void StartFirstTimeFlow()
{
int severFlowId = (int)Actor.Instance.Logic.GetCount((uint)NLDPB.LogicID.NoviceProcessId); // 服务器所在强制流程步骤id
2025-03-27 14:46:41 +08:00
if (severFlowId < (int)E_FirstTimeFlow.StarVideo)
linkStep.AddLast(PlayStartVideoStep.Create()); // 开始PV
2025-03-27 14:46:41 +08:00
if (severFlowId < (int)E_FirstTimeFlow.StoryLevel_1)
linkStep.AddLast(EnterStoryLevel1Step.Create()); // 剧情1
2025-03-27 16:47:05 +08:00
if (severFlowId < (int)E_FirstTimeFlow.FightLevel_1)
linkStep.AddLast(EnterFightLevel1Step.Create()); // 特殊战斗1
2025-03-27 16:47:05 +08:00
if (severFlowId < (int)E_FirstTimeFlow.StoryLevel_2)
linkStep.AddLast(EnterStoryLevel2Step.Create()); // 剧情2
2025-03-27 16:47:05 +08:00
if (severFlowId < (int)E_FirstTimeFlow.FightLevel_2_EditTeam)
linkStep.AddLast(FightLevel2EditTeamStep.Create()); // 特殊战斗2编队
2025-03-27 16:47:05 +08:00
if (severFlowId < (int)E_FirstTimeFlow.StoryLevel_3)
linkStep.AddLast(EnterStoryLevel3Step.Create()); // 剧情3
2025-03-27 16:47:05 +08:00
if (severFlowId < (int)E_FirstTimeFlow.EndVideo)
linkStep.AddLast(PlayEndVideoStep.Create()); // 结束PV
if (linkStep.Count > 0)
StartNextStep();
}
/// <summary>
/// 开始下一个步骤
/// </summary>
public void StartNextStep()
{
if (linkStep.Count <= 0)
{
IsFlowing = false;
return;
}
IsFlowing = true;
FirstTimeFlowStep step = linkStep.First.Value;
linkStep.RemoveFirst();
step.Run();
//NetHelper.SaveGuideProgress(NLDPB.LogicID.NoviceProcessId, (int)step.FirstTimeFlow);
2025-03-27 14:46:41 +08:00
}
}
}