少年修仙传客户端代码仓库
client_Hale
2019-07-08 b9885c49f34e6b697dca9cc2b268640d112df8da
System/CrossServerOneVsOneClient/ClientCrossServerOneVsOneStage.cs
@@ -66,12 +66,28 @@
        var maxHp = CrossServerLogin.Instance.oneVsOnePlayerData.opponentMaxHp;
        var scoreClass = CrossServerOneVsOnePlayerInfo.Instance.DanLV;
        playerInfo = ClientCrossServerOneVsOne.GetRandomOpponentPlayerInfo(scoreClass, job, playerName, level, maxHp);
        opponentPlayer = GAMgr.Instance.ReqClntPlayer<GA_PVPClientPlayer>(playerInfo, E_ActorGroup.Enemy);
        // opponentPlayer = GAMgr.Instance.ReqClntPlayer<GA_PVPClientPlayer>(playerInfo, E_ActorGroup.Enemy);
        PersonalEnemy.Create(30000, ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint, playerInfo);
        PersonalEnemy.OnPlayerAppear += OnPlayerAppear;
        SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate());
        opponentPlayer.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint;
        PlayerDatas.Instance.hero.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? leftBornPoint : rightBornPoint;
        CameraController.Instance.Apply();
    }
    private void OnPlayerAppear(GA_PVPClientPlayer player)
    {
        opponentPlayer = player;
    }
    private IEnumerator WaitForPlayerCreate()
    {
        while (opponentPlayer == null)
        {
            yield return null;
        }
        opponentPlayer.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint;
        currentStage = new WaitStartStage();
        currentStage.Begin();
    }
@@ -148,10 +164,10 @@
            pkStageType = PKStageType.WaitStart;
            duration = 3f;
            Debug.LogFormat("进入阶段:{0}", pkStageType);
            opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1);
            // opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1);
            opponentPlayer.ActorInfo.serverDie = false;
            opponentPlayer.IdleImmediate();
            opponentPlayer.SkillMgr.ResetAllCD();
            // opponentPlayer.SkillMgr.ResetAllCD();
            GA_PVPClientPlayer.AutoAI(false);
            PlayerDatas.Instance.baseData.HP = (uint)PlayerDatas.Instance.extersion.MaxHP;
@@ -178,7 +194,7 @@
        public override void Update()
        {
            timer += Time.deltaTime;
            completed = timer >= duration;
            completed = timer >= duration && opponentPlayer != null;
        }
    }
@@ -196,13 +212,13 @@
            figthCompleted = false;
            restTimeTimer = 0f;
            opponentPlayer.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint;
            PlayerDatas.Instance.hero.Behaviour.StartHandupAI();
            GA_PVPClientPlayer.AutoAI(true);
            opponentPlayer.SelectTarget = PlayerDatas.Instance.hero;
            PlayerDatas.Instance.hero.SelectTarget = opponentPlayer;
#if UNITY_EDITOR
            Debug.LogFormat("进入阶段:{0}", pkStageType);
#endif
        }
        public override void End()
@@ -225,6 +241,7 @@
            if (fightInfo.isOver)
            {
                PersonalEnemy.ReleasePlayer(opponentPlayer);
                opponentPlayer.Destroy();
            }
            else
@@ -282,22 +299,33 @@
        public override void Begin()
        {
            pkStageType = PKStageType.RoundPrepare;
            GA_PVPClientPlayer.AutoAI(false);
            duration = 3f;
            Debug.LogFormat("进入阶段:{0}", pkStageType);
            if (fightInfo.roundWinnerIds[fightInfo.roundWinnerIds.Count - 1] == PlayerDatas.Instance.baseData.PlayerID)
            {
                PlayerDatas.Instance.hero.SelectTarget = opponentPlayer;
                opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1);
                opponentPlayer.ActorInfo.serverDie = false;
                opponentPlayer.IdleImmediate();
                opponentPlayer.SkillMgr.ResetAllCD();
                opponentPlayer = null;
                var job = CrossServerLogin.Instance.oneVsOnePlayerData.opponentJob;
                var playerName = CrossServerLogin.Instance.oneVsOnePlayerData.opponentName;
                var level = CrossServerLogin.Instance.oneVsOnePlayerData.opponentLevel;
                var maxHp = CrossServerLogin.Instance.oneVsOnePlayerData.opponentMaxHp;
                var scoreClass = CrossServerOneVsOnePlayerInfo.Instance.DanLV;
                playerInfo = ClientCrossServerOneVsOne.GetRandomOpponentPlayerInfo(scoreClass, job, playerName, level, maxHp);
                PersonalEnemy.Create(30000, ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint, playerInfo);
                PersonalEnemy.OnPlayerAppear += OnPlayerAppear;
                SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate());
                // PlayerDatas.Instance.hero.SelectTarget = opponentPlayer;
                // opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1);
                // opponentPlayer.ActorInfo.serverDie = false;
                // opponentPlayer.IdleImmediate();
                // opponentPlayer.SkillMgr.ResetAllCD();
                if (PlayerDatas.Instance.hero.ActorInfo.RealHp <= 0)
                {
                    PlayerDatas.Instance.baseData.HP = 1;
                    var maxHp = PlayerDatas.Instance.extersion.MaxHP;
                    PlayerDatas.Instance.hero.ActorInfo.ResetHp(1, -1, maxHp, -1);
                    PlayerDatas.Instance.hero.ActorInfo.ResetHp(1, -1, PlayerDatas.Instance.extersion.MaxHP, -1);
                    PlayerDatas.Instance.FightRefreshPlayerHp(1);
                    PlayerDatas.Instance.hero.IdleImmediate();
                }
@@ -313,14 +341,34 @@
                if (opponentPlayer.ActorInfo.RealHp <= 0)
                {
                    opponentPlayer.ActorInfo.ResetHp(1, -1, (int)playerInfo.maxHp, -1);
                    opponentPlayer.ActorInfo.serverDie = false;
                    opponentPlayer.IdleImmediate();
                    opponentPlayer = null;
                    // opponentPlayer.ActorInfo.ResetHp(1, -1, (int)playerInfo.maxHp, -1);
                    // opponentPlayer.ActorInfo.serverDie = false;
                    // opponentPlayer.IdleImmediate();
                    playerInfo.hp = 1;
                    PersonalEnemy.Create(30000, ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint, playerInfo);
                    PersonalEnemy.OnPlayerAppear += OnPlayerAppear;
                    SnxxzGame.Instance.StartCoroutine(WaitForPlayerCreate());
                }
            }
            PlayerDatas.Instance.hero.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? leftBornPoint : rightBornPoint;
        }
        private void OnPlayerAppear(GA_PVPClientPlayer player)
        {
            opponentPlayer = player;
        }
        private IEnumerator WaitForPlayerCreate()
        {
            while (opponentPlayer == null)
            {
                yield return null;
            }
            opponentPlayer.Pos = ClientCrossServerOneVsOne.myPlace == 1 ? rightBornPoint : leftBornPoint;
            opponentPlayer.ActorInfo.ResetHp((int)playerInfo.maxHp, -1, (int)playerInfo.maxHp, -1);
        }
        public override void End()
@@ -332,7 +380,7 @@
        public override void Update()
        {
            timer += Time.deltaTime;
            completed = timer >= duration;
            completed = timer >= duration && opponentPlayer != null;
        }
    }