少年修仙传客户端代码仓库
client_linchunjie
2019-05-21 9368c1e3f83be8cf1ea38192430de0568f9e6a18
3335 缥缈仙域优化
4个文件已修改
175 ■■■■■ 已修改文件
Fight/Stage/Dungeon/ClientPersonalBossDungeonStage.cs 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Stage/StageLoadProcessor.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dungeon/DungeonSuppliesLackWin.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FindPrecious/PersonalBossModel.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | 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;
            //}
        }
    }