using Framework; using Gameplay.Level; using System.Linq; namespace Gameplay.FirstTimeFlow { /// /// 强制流程步骤基类 /// public abstract class FirstTimeFlowStep { public E_FirstTimeFlow FirstTimeFlow { get; private set; } public FirstTimeFlowStep(E_FirstTimeFlow firstTimeFlow) { FirstTimeFlow = firstTimeFlow; } public abstract void Run(); } /// /// 播放开始PV /// public sealed class PlayStartVideoStep : FirstTimeFlowStep { /// /// 创建播放PV步骤 /// /// 视频路径 /// public static PlayStartVideoStep Create() { return new PlayStartVideoStep(); } /// /// 开始PV路径 /// 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(); }); } } /// /// 进入剧情1关卡 /// public sealed class EnterStoryLevel1Step : FirstTimeFlowStep { /// /// 创建进入剧情关卡步骤 /// /// 视频路径 /// public static EnterStoryLevel1Step Create() { return new EnterStoryLevel1Step(); } /// /// 剧情关卡1id /// 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); } } /// /// 进入战斗关卡1 /// public sealed class EnterFightLevel1Step : FirstTimeFlowStep { /// /// 创建进入战斗关卡步骤 /// /// 视频路径 /// public static EnterFightLevel1Step Create() { return new EnterFightLevel1Step(); } /// /// 上阵的卡露拉角色id /// 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); } } /// /// 进入剧情2关卡 /// public sealed class EnterStoryLevel2Step : FirstTimeFlowStep { /// /// 创建进入剧情关卡步骤 /// /// 视频路径 /// public static EnterStoryLevel2Step Create() { return new EnterStoryLevel2Step(); } /// /// 剧情关卡1id /// 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); } } /// /// 进入剧情3关卡 /// public sealed class EnterStoryLevel3Step : FirstTimeFlowStep { /// /// 创建进入剧情关卡步骤 /// /// 视频路径 /// public static EnterStoryLevel3Step Create() { return new EnterStoryLevel3Step(); } /// /// 剧情关卡1id /// 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); } } /// /// 战斗关卡2编队 /// public sealed class FightLevel2EditTeamStep : FirstTimeFlowStep { /// /// 创建进入战斗关卡步骤 /// /// 视频路径 /// 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); })); } } /// /// 进入剧情4关卡 /// public sealed class EnterStoryLevel4Step : FirstTimeFlowStep { /// /// 创建进入剧情关卡4步骤 /// /// public static EnterStoryLevel4Step Create() { return new EnterStoryLevel4Step(); } /// /// 剧情关卡1id /// 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); } } /// /// 播放结束PV /// public sealed class PlayEndVideoStep : FirstTimeFlowStep { /// /// 创建播放PV步骤 /// /// 视频路径 /// public static PlayEndVideoStep Create() { return new PlayEndVideoStep(); } /// /// 结束PV路径 /// 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(); }); } } /// /// 结束强制流程步骤 /// 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(); } } }