Esempio n. 1
0
    public void ShowPlayerFenShu(PlayerEnum indexVal, int fenShuVal)
    {
        int indexPlayer = (int)indexVal - 1;

        indexPlayer = (indexPlayer < 0 || indexPlayer > 3) ? 0 : indexPlayer;
        int fenShuValTmp = (fenShuVal * XKDaoJuGlobalDt.FenShuBeiLv[indexPlayer]);

        if (fenShuValTmp <= 0)
        {
            return;
        }

        if (XkGameCtrl.GetIsActivePlayer(indexVal) == true && XkGameCtrl.GetIsDeathPlayer(indexVal) == false)
        {
            XkGameCtrl.PlayerJiFenArray[indexPlayer] += fenShuValTmp;
        }
        XKPlayerScoreCtrl.ChangePlayerScore(indexVal);

        XKPlayerFenShuMove fenShuMoveCom = GetXKPlayerFenShuMove(indexVal);

        if (fenShuMoveCom == null)
        {
            return;
        }
        Transform playerTr = XKPlayerMoveCtrl.GetInstance(indexVal).PiaoFenPoint;
//		playerTr = TestPlayerTr; //test

        Vector3 startPos  = XkGameCtrl.GetInstance().GetWorldObjToScreenPos(playerTr.position);
        int     fenShuLen = fenShuVal.ToString().Length;

        startPos.x += 9f * (fenShuLen - 1);
        fenShuMoveCom.SetPlayerFenShuVal(fenShuVal, startPos, indexPlayer);
    }
    void MoveDaoJuToPlayer()
    {
        if (IsMoveOverDaoJuToPlayer)
        {
            return;
        }

        if (AimPlayerTr == null)
        {
            return;
        }

        if (XkGameCtrl.GetIsDeathPlayer(m_PlayerIndex) == true)
        {
            if (IsDeath == false)
            {
                IsDeath = true;
                //当血包或其它道具飞向玩家的过程中如果玩家GG了则关闭道具飞向玩家的逻辑并且将其删除。
                DestroyNetObj(gameObject);
            }
            return;
        }

        Vector3 dirVal = AimPlayerTr.position - DaoJuTr.position;

        dirVal = dirVal.normalized * XKDaoJuGlobalDt.GetInstance().CiLiDaoJuSpeed *Time.deltaTime;
        DaoJuTr.Translate(dirVal, Space.World);
        if (Vector3.Distance(AimPlayerTr.position, DaoJuTr.position) <= 0.5f)
        {
            //Debug.Log("Unity:"+"MoveDaoJuToPlayer...");
            IsMoveOverDaoJuToPlayer = true;
            XKPlayerMoveCtrl script = AimPlayerTr.GetComponent <XKPlayerMoveCtrl>();
            if (script == null)
            {
                return;
            }
            RemoveBuJiBao(script.PlayerIndex);
        }
    }
    static void CheckPlayerZuiGaoFen(bool isHuLueTime = false)
    {
        //XkGameCtrl.CheckPlayerActiveNum();
        if (XkGameCtrl.PlayerActiveNum <= 0)
        {
            return;
        }

        if (Time.time - TimeLastMaxScore < 0.5f)
        {
            return;
        }
        TimeLastMaxScore = Time.time;

        int        maxScore    = 0;
        int        indexVal    = -1;
        PlayerEnum indexPlayer = PlayerEnum.Null;

        for (int i = 0; i < 4; i++)
        {
            indexPlayer = (PlayerEnum)(i + 1);
            if (XkGameCtrl.GetIsActivePlayer(indexPlayer) == false)
            {
                continue;
            }

            if (XkGameCtrl.GetIsDeathPlayer(indexPlayer) == true)
            {
                XKPlayerScoreCtrl playerScoreCom = GetInstance(indexPlayer);
                if (playerScoreCom != null)
                {
                    playerScoreCom.SetActiveZuiGaoFen(false);
                }
                continue;
            }
            //switch (i) {
            //case 0:
            //	if (!XkGameCtrl.IsActivePlayerOne) {
            //		continue;
            //	}
            //	break;
            //case 1:
            //	if (!XkGameCtrl.IsActivePlayerTwo) {
            //		continue;
            //	}
            //	break;
            //case 2:
            //	if (!XkGameCtrl.IsActivePlayerThree) {
            //		continue;
            //	}
            //	break;
            //case 3:
            //	if (!XkGameCtrl.IsActivePlayerFour) {
            //		continue;
            //	}
            //	break;
            //}

            if (XkGameCtrl.PlayerJiFenArray[i] > maxScore)
            {
                maxScore = XkGameCtrl.PlayerJiFenArray[i];
                indexVal = i;
            }
        }
        //Debug.Log("Unity:"+"CheckPlayerZuiGaoFen -> maxScore "+maxScore+", index "+indexVal);

        if (indexVal == -1)
        {
            return;
        }

        XKPlayerScoreCtrl playerScore = null;

        switch (indexVal)
        {
        case 0:
            playerScore = _InstanceP1;
            break;

        case 1:
            playerScore = _InstanceP2;
            break;

        case 2:
            playerScore = _InstanceP3;
            break;

        case 3:
            playerScore = _InstanceP4;
            break;
        }
        if (playerScore.ZuiGaoFenObj.activeSelf)
        {
            return;
        }

        if (_InstanceP1 != null)
        {
            _InstanceP1.SetActiveZuiGaoFen(playerScore == _InstanceP1);
        }

        if (_InstanceP2 != null)
        {
            _InstanceP2.SetActiveZuiGaoFen(playerScore == _InstanceP2);
        }

        if (_InstanceP3 != null)
        {
            _InstanceP3.SetActiveZuiGaoFen(playerScore == _InstanceP3);
        }

        if (_InstanceP4 != null)
        {
            _InstanceP4.SetActiveZuiGaoFen(playerScore == _InstanceP4);
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (CameraTran == null)
        {
            CameraTran = Camera.main != null ? Camera.main.transform : null;
            return;
        }

        if (Time.frameCount % 3 == 0)
        {
            if (XkGameCtrl.GetIsActivePlayer(PlayerSt) == false || XkGameCtrl.GetIsDeathPlayer(PlayerSt) == true)
            {
                //gameObject.SetActive(false);
                SetActivePlayerXuTiao(false);
                return;
            }
        }
        CheckPlayerHitCol();

        Vector3 pos        = Vector3.zero;
        Vector3 forwardVal = Vector3.zero;

        switch (KeyHitSt)
        {
        case 0:
            //血条在后.
            forwardVal           = CameraTran.forward;
            forwardVal.y         = 0f;
            NengLianTran.forward = forwardVal;
            pos  = NengLianParentTr.position;
            pos += forwardVal * OffsetXT.z;
            //pos.x += OffsetXT.x;
            //pos.y += OffsetXT.y;
            NengLianTran.position = pos;
            break;

        case 1:
            //血条在左.
            forwardVal           = CameraTran.right;
            forwardVal.y         = 0f;
            NengLianTran.forward = forwardVal;
            pos  = NengLianParentTr.position;
            pos += forwardVal * (OffsetXT.z + 3f);
            //pos.x += OffsetXT.x;
            //pos.y += OffsetXT.y;
            NengLianTran.position = pos;
            break;

        case 2:
            //血条在右.
            forwardVal           = -CameraTran.right;
            forwardVal.y         = 0f;
            NengLianTran.forward = forwardVal;
            pos  = NengLianParentTr.position;
            pos += forwardVal * (OffsetXT.z + 3f);
            //pos.x += OffsetXT.x;
            //pos.y += OffsetXT.y;
            NengLianTran.position = pos;
            break;

        case 3:
            //血条在前.
            forwardVal           = CameraTran.forward;
            forwardVal.y         = 0f;
            NengLianTran.forward = forwardVal;
            pos  = NengLianParentTr.position;
            pos -= forwardVal * (OffsetXT.z - 3.5f);
            //pos.x += OffsetXT.x;
            //pos.y += OffsetXT.y;
            NengLianTran.position = pos;
            break;
        }
    }
    /// <summary>
    /// Removes the bu ji bao. playerSt == 0 -> hit TerrainLayer,
    /// playerSt == 1 -> PlayerOne, playerSt == 2 -> PlayerTwo.
    /// playerSt == 3 -> PlayerThree, playerSt == 4 -> PlayerFour.
    /// </summary>
    /// <param name="key">Key.</param>
    public void RemoveBuJiBao(PlayerEnum playerSt, int keyHit = 0)
    {
        if (XkGameCtrl.GetIsDeathPlayer(playerSt) == true)
        {
            //玩家血值耗尽.
            return;
        }

        if (IsDeath)
        {
            return;
        }
        IsDeath = true;
        CancelInvoke("DelayDestroyBuJiBao");
        if (playerSt != PlayerEnum.Null || keyHit == 1)
        {
            //XKGlobalData.GetInstance().PlayAudioHitBuJiBao();
            if (ExplodeObj != null)
            {
                GameObject obj = (GameObject)Instantiate(ExplodeObj, transform.position, transform.rotation);
                if (obj != null)
                {
                    obj.transform.SetParent(XkGameCtrl.PlayerAmmoArray);
                }

                XkGameCtrl.CheckObjDestroyThisTimed(obj);
                if (obj != null && IsCaiPiaoDaoJu)
                {
                    if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage != null)
                    {
                        int value = XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetPrintCaiPiaoValueByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.SuiJiDaoJu, DaoJuType);
                        SSCaiPiaoLiZiManage caiPiaoLiZi = obj.GetComponent <SSCaiPiaoLiZiManage>();
                        if (caiPiaoLiZi != null)
                        {
                            caiPiaoLiZi.ShowNumUI(value, playerSt);
                        }
                        else
                        {
                            Debug.LogWarning("CreatLiZi -> caiPiaoLiZi was null.................");
                        }
                    }

                    if (XkGameCtrl.GetInstance().m_CaiPiaoFlyData != null)
                    {
                        //初始化飞出的彩票逻辑.
                        XkGameCtrl.GetInstance().m_CaiPiaoFlyData.InitCaiPiaoFly(obj.transform.position, playerSt, SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.SuiJiDaoJu);
                    }
                    else
                    {
                        Debug.LogWarning("CreatLiZi -> m_CaiPiaoFlyData was null............");
                    }
                }
            }

            if (Network.peerType != NetworkPeerType.Server)
            {
                bool isMoveDaoJu = true;
                switch (BuJiBao)
                {
                case BuJiBaoType.FenShuDJ:
                    isMoveDaoJu = false;
                    //XKPlayerFenShuCtrl.GetInstance().ShowPlayerFenShu(playerSt, GetJiFen());
                    XKPlayerFenShuCtrl.GetInstance().ShowPlayerFenShu(playerSt, FenShuVal);
                    break;

                case BuJiBaoType.JiSuDJ:
                    //isMoveDaoJu = false;
                    XKPlayerMoveCtrl.SetPlayerJiSuMoveSpeed(playerSt);
                    XKPlayerMoveCtrl.SetPlayerJiSuState(playerSt);
                    XKPlayerJiSuCtrl.GetInstance().ShowPlayerJiSu(playerSt);
                    break;

                case BuJiBaoType.YiLiaoBaoDJ:
                {
                    isMoveDaoJu = false;
                    XkGameCtrl.AddPlayerHealth(playerSt, XKDaoJuGlobalDt.GetInstance().YiLiaoBaoXueLiangVal);
                    XKPlayerJiJiuBaoCtrl.GetInstance().ShowPlayerJiJiuBao(playerSt);
                    break;
                }

                case BuJiBaoType.BigYiLiaoBaoDJ:
                {
                    //大医疗包.
                    isMoveDaoJu = false;
                    XkGameCtrl.AddPlayerHealth(playerSt, XKDaoJuGlobalDt.GetInstance().BigYiLiaoBaoXueLiang);
                    //XKPlayerJiJiuBaoCtrl.GetInstance().ShowPlayerJiJiuBao(playerSt);
                    break;
                }

                case BuJiBaoType.ShuangBeiFenShuDJ:
                    isMoveDaoJu = false;
                    //XKDaoJuGlobalDt.SetTimeFenShuBeiLv(playerSt, FenShuBeiLv);
                    //XKDaoJuGlobalDt.SetTimeFenShuBeiLv(playerSt, 2);
                    //XKFenShuBeiLvCtrl.GetInstance().ShowPlayerFenShuBeiLv(playerSt);
                    break;

                case BuJiBaoType.QianHouFireDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerQianHouFire(playerSt);
                    break;

                case BuJiBaoType.ChangChengJiQiang:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerChangChengFire(playerSt);
                    break;

                case BuJiBaoType.SanDanJiQiang:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerJiQiangSanDanFire(playerSt);
                    break;

                case BuJiBaoType.QiangJiJiQiang:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerQiangJiFire(playerSt);
                    break;

                case BuJiBaoType.PaiJiPaoDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsPaiJiPaoFire(playerSt);
                    break;

                case BuJiBaoType.ChongJiBoDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsOpenChongJiBoZPFire(playerSt);
                    break;

                case BuJiBaoType.ZhuPaoSanDanDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsSanDanZPFire(playerSt);
                    break;

                case BuJiBaoType.HuoLiAllOpenDJ:
                    //isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsHuoLiAllOpen(playerSt);
                    XKPlayerHuoLiAllOpenCtrl.GetInstance().ShowPlayerHuoLiOpen(playerSt);
                    break;

                case BuJiBaoType.ChuanTouDan:
                    isMoveDaoJu = false;
                    XKPlayerAutoFire.GetInstanceAutoFire(playerSt).SetAmmoStateZhuPao(PlayerAmmoType.ChuanTouAmmo);
                    break;

                case BuJiBaoType.DaoDan:
                case BuJiBaoType.GaoBaoDan:
                case BuJiBaoType.SanDan:
                case BuJiBaoType.GenZongDan:
                case BuJiBaoType.JianSuDan:
                case BuJiBaoType.NLHuDun:
                    isMoveDaoJu = false;
                    break;
                }

                if (isMoveDaoJu)
                {
                    DaoJuCtrl.GetInstance().MoveDaoJuObjToPlayer(playerSt, transform);
                }
            }
        }
        DestroyNetObj(gameObject);
    }