355 lines
9.3 KiB
C#
355 lines
9.3 KiB
C#
using Framework;
|
|
using Gameplay.Level;
|
|
using System.Linq;
|
|
|
|
namespace Gameplay.FirstTimeFlow
|
|
{
|
|
/// <summary>
|
|
/// 强制流程步骤基类
|
|
/// </summary>
|
|
public abstract class FirstTimeFlowStep
|
|
{
|
|
public E_FirstTimeFlow FirstTimeFlow { get; private set; }
|
|
|
|
public FirstTimeFlowStep(E_FirstTimeFlow firstTimeFlow)
|
|
{
|
|
FirstTimeFlow = firstTimeFlow;
|
|
}
|
|
|
|
public abstract void Run();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 播放开始PV
|
|
/// </summary>
|
|
public sealed class PlayStartVideoStep : FirstTimeFlowStep
|
|
{
|
|
/// <summary>
|
|
/// 创建播放PV步骤
|
|
/// </summary>
|
|
/// <param name="videoPath">视频路径</param>
|
|
/// <returns></returns>
|
|
public static PlayStartVideoStep Create()
|
|
{
|
|
return new PlayStartVideoStep();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 开始PV路径
|
|
/// </summary>
|
|
private const string START_PV_PATH = "Assets/Video/PV/First_PV.mp4";
|
|
|
|
private PlayStartVideoStep() : base(E_FirstTimeFlow.StarVideo)
|
|
{
|
|
|
|
}
|
|
|
|
public override async void Run()
|
|
{
|
|
await UI_PVAnimaPlayController.Open(START_PV_PATH, () => { FirstTimeFlowManager.Instance.StartNextStep(); });
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 进入剧情1关卡
|
|
/// </summary>
|
|
public sealed class EnterStoryLevel1Step : FirstTimeFlowStep
|
|
{
|
|
/// <summary>
|
|
/// 创建进入剧情关卡步骤
|
|
/// </summary>
|
|
/// <param name="videoPath">视频路径</param>
|
|
/// <returns></returns>
|
|
public static EnterStoryLevel1Step Create()
|
|
{
|
|
return new EnterStoryLevel1Step();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 剧情关卡1id
|
|
/// </summary>
|
|
private const int LEVEL_ID = 300001;
|
|
|
|
private EnterStoryLevel1Step() : base(E_FirstTimeFlow.StoryLevel_1)
|
|
{
|
|
|
|
}
|
|
|
|
public override void Run()
|
|
{
|
|
LevelManager.Instance.TryEnterLevel(LEVEL_ID, null, null, true);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 进入战斗关卡1
|
|
/// </summary>
|
|
public sealed class EnterFightLevel1Step : FirstTimeFlowStep
|
|
{
|
|
/// <summary>
|
|
/// 创建进入战斗关卡步骤
|
|
/// </summary>
|
|
/// <param name="videoPath">视频路径</param>
|
|
/// <returns></returns>
|
|
public static EnterFightLevel1Step Create()
|
|
{
|
|
return new EnterFightLevel1Step();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 上阵的卡露拉角色id
|
|
/// </summary>
|
|
private const int CHARACTER_ID = 100011;
|
|
|
|
private EnterFightLevel1Step() : base(E_FirstTimeFlow.FightLevel_1)
|
|
{
|
|
|
|
}
|
|
|
|
public override void Run()
|
|
{
|
|
#region 保存一个默认编队
|
|
Team team = TeamEditManager.Instance.GetTeamByIndex(0); // 获取第一个队伍
|
|
if (null == team)
|
|
{
|
|
DebugUtil.LogError("队伍信息空");
|
|
return;
|
|
}
|
|
|
|
team.ClearTeam();
|
|
uint[] characters = new uint[] { 0, 0, 0, 0, 0 };
|
|
|
|
Team newTeam = new(team.TeamIndex,
|
|
team.Name,
|
|
team.IconNumber,
|
|
CHARACTER_ID,
|
|
characters.ToList(),
|
|
team.GetPlayerSkillIDs());
|
|
|
|
TeamEditManager.Instance.SaveTeam(newTeam);
|
|
#endregion
|
|
|
|
LevelManager.Instance.EnterLevelDirectly(TableManager.Instance.Tables.GlobalConfig.FirstTimeFlowFight1Id, null, null, false);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 进入剧情2关卡
|
|
/// </summary>
|
|
public sealed class EnterStoryLevel2Step : FirstTimeFlowStep
|
|
{
|
|
/// <summary>
|
|
/// 创建进入剧情关卡步骤
|
|
/// </summary>
|
|
/// <param name="videoPath">视频路径</param>
|
|
/// <returns></returns>
|
|
public static EnterStoryLevel2Step Create()
|
|
{
|
|
return new EnterStoryLevel2Step();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 剧情关卡1id
|
|
/// </summary>
|
|
private const int LEVEL_ID = 300002;
|
|
|
|
private EnterStoryLevel2Step() : base(E_FirstTimeFlow.StoryLevel_2)
|
|
{
|
|
|
|
}
|
|
|
|
public override void Run()
|
|
{
|
|
LevelManager.Instance.TryEnterLevel(LEVEL_ID, null, null, true);
|
|
}
|
|
}
|
|
|
|
/// <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()
|
|
{
|
|
LevelManager.Instance.TryEnterLevel(LEVEL_ID, null, null, true);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 战斗关卡2编队
|
|
/// </summary>
|
|
public sealed class FightLevel2EditTeamStep : FirstTimeFlowStep
|
|
{
|
|
/// <summary>
|
|
/// 创建进入战斗关卡步骤
|
|
/// </summary>
|
|
/// <param name="videoPath">视频路径</param>
|
|
/// <returns></returns>
|
|
public static FightLevel2EditTeamStep Create()
|
|
{
|
|
return new FightLevel2EditTeamStep();
|
|
}
|
|
|
|
private FightLevel2EditTeamStep() : base(E_FirstTimeFlow.FightLevel_2_EditTeam)
|
|
{
|
|
|
|
}
|
|
|
|
public override void Run()
|
|
{
|
|
#region 保存一个默认编队
|
|
Team team = TeamEditManager.Instance.GetTeamByIndex(0); // 获取第一个队伍
|
|
if (null == team)
|
|
{
|
|
DebugUtil.LogError("队伍信息空");
|
|
return;
|
|
}
|
|
|
|
team.ClearTeam();
|
|
uint[] characters = new uint[] { 0, 0, 0, 0, 0 };
|
|
|
|
Team newTeam = new(team.TeamIndex,
|
|
team.Name,
|
|
team.IconNumber,
|
|
0,
|
|
characters.ToList(),
|
|
team.GetPlayerSkillIDs());
|
|
|
|
TeamEditManager.Instance.SaveTeam(newTeam);
|
|
#endregion
|
|
|
|
GameStateManager.Instance.ChangeState(new GameStateMainScene(false, false, async () =>
|
|
{
|
|
await JumpToManager.JumpFuncAsync(cfg.JumpFuncType.TeamInfoByGuide, TableManager.Instance.Tables.GlobalConfig.FirstTimeFlowFight2Id);
|
|
}));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 进入战斗关卡2
|
|
/// </summary>
|
|
public sealed class EnterFightLevel2Step : FirstTimeFlowStep
|
|
{
|
|
/// <summary>
|
|
/// 创建进入战斗关卡2步骤
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static EnterFightLevel2Step Create()
|
|
{
|
|
return new EnterFightLevel2Step();
|
|
}
|
|
|
|
private EnterFightLevel2Step() : base(E_FirstTimeFlow.FightLevel_2)
|
|
{
|
|
|
|
}
|
|
|
|
public override void Run()
|
|
{
|
|
LevelManager.Instance.EnterLevelDirectly(TableManager.Instance.Tables.GlobalConfig.FirstTimeFlowFight2Id, null, null, false);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 进入剧情4关卡
|
|
/// </summary>
|
|
public sealed class EnterStoryLevel4Step : FirstTimeFlowStep
|
|
{
|
|
/// <summary>
|
|
/// 创建进入剧情关卡4步骤
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public static EnterStoryLevel4Step Create()
|
|
{
|
|
return new EnterStoryLevel4Step();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 剧情关卡1id
|
|
/// </summary>
|
|
private const int LEVEL_ID = 300004;
|
|
|
|
private EnterStoryLevel4Step() : base(E_FirstTimeFlow.StoryLevel_4)
|
|
{
|
|
|
|
}
|
|
|
|
public override void Run()
|
|
{
|
|
LevelManager.Instance.TryEnterLevel(LEVEL_ID, null, null, true);
|
|
}
|
|
}
|
|
|
|
/// <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/PV/Second_PV.mp4";
|
|
|
|
private PlayEndVideoStep() : base(E_FirstTimeFlow.EndVideo)
|
|
{
|
|
|
|
}
|
|
|
|
public override async void Run()
|
|
{
|
|
await UI_PVAnimaPlayController.Open(END_PV_PATH, () => { FirstTimeFlowManager.Instance.StartNextStep(); });
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 结束强制流程步骤
|
|
/// </summary>
|
|
public sealed class EndFirstTimeFlowStep : FirstTimeFlowStep
|
|
{
|
|
public static EndFirstTimeFlowStep Create()
|
|
{
|
|
return new EndFirstTimeFlowStep();
|
|
}
|
|
|
|
private EndFirstTimeFlowStep() : base(E_FirstTimeFlow.EndFirstTimeFlow)
|
|
{
|
|
|
|
}
|
|
|
|
public override void Run()
|
|
{
|
|
GameStateManager.Instance.ChangeState(new GameStateMainScene());
|
|
FirstTimeFlowManager.Instance.EndFirstTimeFlow();
|
|
}
|
|
}
|
|
} |