| Fight/Stage/Dungeon/ClientPersonalBossDungeonStage.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/Stage/StageLoadProcessor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/DungeonSuppliesLackWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/FindPrecious/PersonalBossModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Fight/Stage/Dungeon/ClientPersonalBossDungeonStage.cs
@@ -1,15 +1,143 @@ using System.Collections; using Snxxz.UI; using System.Collections; using System.Collections.Generic; using UnityEngine; public class ClientPersonalBossDungeonStage : DungeonStage { static readonly Vector3 s_PlayerPosition = new Vector3(16.19f, 0.825f, 7.62f); static readonly Vector3 s_NpcPosition = new Vector3(11.9f, 0.825f, 9.64f); static readonly float s_PlayerAngle = -70.925f; static int[] s_StepTimes = null; static Clock s_StepClock = null; Step m_Step = Step.None; Step step { get { return m_Step; } set { if (m_Step != value) { m_Step = value; switch (m_Step) { case Step.Prepare: OnEnterPrepare(); break; case Step.Fight: OnEnterFight(); break; case Step.Over: break; } } } } static PersonalBossModel model { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } } static DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } public override void Initialize() { base.Initialize(); step = Step.None; var config = PersonalBossConfig.Get(model.clientBossNpcId); if (config != null) { var dungeonId = dungeonModel.GetDungeonId(PersonalBossModel.PERSONALBOSS_MAPID, config.lineId); var dungeonConfig = DungeonConfig.Get(dungeonId); if (dungeonConfig != null) { s_StepTimes = LitJson.JsonMapper.ToObject<int[]>(dungeonConfig.StepTime); } } } protected override void OnStageLoadFinish() { base.OnStageLoadFinish(); InitializePlayer(); step = Step.Prepare; InitializeNpc(); } void InitializePlayer() { var hero = PlayerDatas.Instance.hero; if (hero != null) { hero.Pos = s_PlayerPosition; hero.Rotation = Quaternion.Euler(0, s_PlayerAngle, 0); } } void OnEnterPrepare() { var seconds = s_StepTimes[0]; dungeonModel.UpdateCoolDown(DungeonCoolDownType.WaitStart, (uint)seconds * 1000); s_StepClock = Clock.AlarmAfter(seconds, () => { step = Step.Fight; }); } void OnEnterFight() { if (s_StepClock != null) { Clock.Stop(s_StepClock); } var seconds = s_StepTimes[0]; dungeonModel.UpdateCoolDown(DungeonCoolDownType.WaitStart, (uint)seconds * 1000); s_StepClock = Clock.AlarmAfter(seconds, () => { step = Step.Fight; }); } void InitializeNpc() { PersonalEnemy.Create((uint)model.clientBossNpcId, E_ActorGroup.Enemy, s_NpcPosition); } public override void UnInitialize() { base.UnInitialize(); if (s_StepClock != null) { Clock.Stop(s_StepClock); s_StepClock = null; } } #if UNITY_EDITOR private void OnGUI() { if (GUILayout.Button("Exit")) { ClientDungeonStageUtility.ExitNormalClientDungeon(); } } #endif enum Step { None, Prepare, Fight, Over, } } Fight/Stage/StageLoadProcessor.cs
@@ -415,6 +415,9 @@ case 4000: stage = stageGameObject.AddComponent<ClientTreasureDungeonStage>(); break; case PersonalBossModel.PERSONALBOSS_MAPID: stage = stageGameObject.AddComponent<ClientPersonalBossDungeonStage>(); break; default: stage = stageGameObject.AddComponent<DungeonStage>(); break; System/Dungeon/DungeonSuppliesLackWin.cs
@@ -31,6 +31,7 @@ DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } } ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } } PersonalBossModel personalBossModel { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } } #region Built-in protected override void BindController() @@ -243,6 +244,8 @@ switch (_lackType) { case LackType.PersonalBoss: personalBossModel.RequestGotoDungeon(personalBossModel.selectedBoss); break; case LackType.ElderGodArea: dungeonModel.SingleChallenge(GetDungeon(_lackType)); break; System/FindPrecious/PersonalBossModel.cs
@@ -32,6 +32,18 @@ } } public int clientBossNpcId { get { return LocalSave.GetInt("PersonalBossClient_" + PlayerDatas.Instance.PlayerId); } private set { LocalSave.SetInt("PersonalBossClient_" + PlayerDatas.Instance.PlayerId, value); } } public event Action<int> bossSelectedEvent; List<int> sortedBossIds = new List<int>(); Dictionary<int, PersonalBossData> personalBosses = new Dictionary<int, PersonalBossData>(); @@ -179,24 +191,25 @@ public void RequestGotoDungeon(int _bossId) { var config = PersonalBossConfig.Get(_bossId); clientBossNpcId = _bossId; ClientDungeonStageUtility.GotoNormalClientDungeon(PERSONALBOSS_MAPID, PERSONALBOSS_MAPID, config.lineId); } public void OnMapInitOk() { var dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>(); var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); switch (dataMapId) { case PERSONALBOSS_MAPID: var sendInfo = new CA508_tagCMDoFBAction(); sendInfo.ActionType = 0; sendInfo.ActionInfo = (uint)selectedBoss; GameNetSystem.Instance.SendInfo(sendInfo); MapTransferUtility.Instance.MoveToNPC(selectedBoss); break; } //var dungeonModel = ModelCenter.Instance.GetModel<DungeonModel>(); //var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); // //switch (dataMapId) //{ // case PERSONALBOSS_MAPID: // var sendInfo = new CA508_tagCMDoFBAction(); // sendInfo.ActionType = 0; // sendInfo.ActionInfo = (uint)selectedBoss; // GameNetSystem.Instance.SendInfo(sendInfo); // MapTransferUtility.Instance.MoveToNPC(selectedBoss); // break; //} } }