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

246 lines
6.0 KiB
C#
Raw Normal View History

2025-04-02 14:06:27 +08:00
using Gameplay.Level;
using System;
2025-03-27 14:46:41 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Gameplay.FirstTimeFlow
{
/// <summary>
/// 强制流程步骤基类
/// </summary>
public abstract class FirstTimeFlowStep
{
protected Action callbackAction;
2025-03-27 14:46:41 +08:00
public E_FirstTimeFlow FirstTimeFlow { get; private set; }
public FirstTimeFlowStep(E_FirstTimeFlow firstTimeFlow)
{
FirstTimeFlow = firstTimeFlow;
callbackAction = FirstTimeFlowManager.Instance.StartNextStep;
}
public abstract void Run();
2025-03-27 14:46:41 +08:00
}
/// <summary>
/// 播放开始PV
2025-03-27 14:46:41 +08:00
/// </summary>
public sealed class PlayStartVideoStep : FirstTimeFlowStep
2025-03-27 14:46:41 +08:00
{
/// <summary>
/// 创建播放PV步骤
/// </summary>
/// <param name="videoPath">视频路径</param>
/// <returns></returns>
public static PlayStartVideoStep Create()
2025-03-27 14:46:41 +08:00
{
return new PlayStartVideoStep();
2025-03-27 16:47:05 +08:00
}
/// <summary>
/// 开始PV路径
2025-03-27 16:47:05 +08:00
/// </summary>
private const string START_PV_PATH = "Assets/Video/LevelIntro/LevelIntro_PV.mp4";
2025-03-27 16:47:05 +08:00
private PlayStartVideoStep():base(E_FirstTimeFlow.StarVideo)
2025-03-27 16:47:05 +08:00
{
}
public override async void Run()
2025-03-27 16:47:05 +08:00
{
await UI_PVAnimaPlayController.Open(START_PV_PATH, callbackAction);
2025-03-27 16:47:05 +08:00
}
}
2025-03-27 16:47:05 +08:00
/// <summary>
/// 进入剧情1关卡
/// </summary>
public sealed class EnterStoryLevel1Step : FirstTimeFlowStep
{
/// <summary>
/// 创建进入剧情关卡步骤
/// </summary>
/// <param name="videoPath">视频路径</param>
/// <returns></returns>
public static EnterStoryLevel1Step Create()
2025-03-27 16:47:05 +08:00
{
return new EnterStoryLevel1Step();
}
/// <summary>
/// 剧情关卡1id
/// </summary>
private const int LEVEL_ID = 300001;
private EnterStoryLevel1Step() : base(E_FirstTimeFlow.StoryLevel_1)
{
}
public override void Run()
{
2025-04-02 14:06:27 +08:00
LevelManager.Instance.TryEnterLevel(LEVEL_ID, null, null, true);
2025-03-27 16:47:05 +08:00
}
}
/// <summary>
/// 进入剧情2关卡
2025-03-27 16:47:05 +08:00
/// </summary>
public sealed class EnterStoryLevel2Step : FirstTimeFlowStep
2025-03-27 16:47:05 +08:00
{
/// <summary>
/// 创建进入剧情关卡步骤
/// </summary>
/// <param name="videoPath">视频路径</param>
/// <returns></returns>
public static EnterStoryLevel2Step Create()
2025-03-27 16:47:05 +08:00
{
return new EnterStoryLevel2Step();
2025-03-27 16:47:05 +08:00
}
/// <summary>
/// 剧情关卡1id
2025-03-27 16:47:05 +08:00
/// </summary>
private const int LEVEL_ID = 300002;
2025-03-27 16:47:05 +08:00
private EnterStoryLevel2Step() : base(E_FirstTimeFlow.StoryLevel_2)
2025-03-27 16:47:05 +08:00
{
}
public override void Run()
2025-03-27 16:47:05 +08:00
{
2025-03-27 16:47:05 +08:00
}
}
/// <summary>
/// 进入战斗关卡1
2025-03-27 16:47:05 +08:00
/// </summary>
public sealed class EnterFightLevel1Step : FirstTimeFlowStep
2025-03-27 16:47:05 +08:00
{
/// <summary>
/// 创建进入战斗关卡步骤
/// </summary>
/// <param name="videoPath">视频路径</param>
/// <returns></returns>
public static EnterFightLevel1Step Create()
2025-03-27 16:47:05 +08:00
{
return new EnterFightLevel1Step();
2025-03-27 16:47:05 +08:00
}
/// <summary>
/// 战斗关卡1id
2025-03-27 16:47:05 +08:00
/// </summary>
private const int LEVEL_ID = 100001;
2025-03-27 16:47:05 +08:00
private EnterFightLevel1Step() : base(E_FirstTimeFlow.FightLevel_1)
2025-03-27 16:47:05 +08:00
{
}
public override void Run()
2025-03-27 16:47:05 +08:00
{
}
}
/// <summary>
/// 战斗关卡2编队
2025-03-27 16:47:05 +08:00
/// </summary>
public sealed class FightLevel2EditTeamStep : FirstTimeFlowStep
2025-03-27 16:47:05 +08:00
{
/// <summary>
/// 创建进入战斗关卡步骤
/// </summary>
/// <param name="videoPath">视频路径</param>
/// <returns></returns>
public static FightLevel2EditTeamStep Create()
2025-03-27 16:47:05 +08:00
{
return new FightLevel2EditTeamStep();
2025-03-27 16:47:05 +08:00
}
/// <summary>
/// 关卡id
/// </summary>
private const int LEVEL_ID = 100002;
private FightLevel2EditTeamStep():base( E_FirstTimeFlow.FightLevel_2_EditTeam)
{
}
public override void Run()
{
2025-04-02 14:06:27 +08:00
GameStateManager.Instance.ChangeState(new GameStateMainScene(false, false, async () =>
{
await JumpToManager.JumpFuncAsync(cfg.JumpFuncType.TeamInfoByGuide, LEVEL_ID);
}));
}
}
/// <summary>
/// 进入剧情3关卡
/// </summary>
public sealed class EnterStoryLevel3Step : FirstTimeFlowStep
{
/// <summary>
/// 创建进入剧情关卡步骤
/// </summary>
/// <param name="videoPath">视频路径</param>
/// <returns></returns>
public static EnterStoryLevel3Step Create()
{
return new EnterStoryLevel3Step();
}
/// <summary>
/// 剧情关卡1id
/// </summary>
private const int LEVEL_ID = 300003;
private EnterStoryLevel3Step() : base(E_FirstTimeFlow.StoryLevel_3)
{
}
public override void Run()
{
}
}
/// <summary>
/// 播放结束PV
/// </summary>
public sealed class PlayEndVideoStep : FirstTimeFlowStep
{
/// <summary>
/// 创建播放PV步骤
/// </summary>
/// <param name="videoPath">视频路径</param>
/// <returns></returns>
public static PlayEndVideoStep Create()
{
return new PlayEndVideoStep();
}
/// <summary>
/// 结束PV路径
/// </summary>
private const string END_PV_PATH = "Assets/Video/LevelIntro/LevelIntro_PV.mp4";
2025-03-27 16:47:05 +08:00
private PlayEndVideoStep() : base(E_FirstTimeFlow.EndVideo)
2025-03-27 16:47:05 +08:00
{
}
public override async void Run()
2025-03-27 16:47:05 +08:00
{
await UI_PVAnimaPlayController.Open(END_PV_PATH, callbackAction);
2025-03-27 14:46:41 +08:00
}
}
}