Пример #1
0
	/// <summary>
	/// Checks the is spawn player ammo.
	/// paoKou == 0 -> 主角机枪炮口.
	/// paoKou == 1 -> 主角主炮炮口.
	/// </summary>
	bool CheckIsSpawnPlayerAmmo(int paoKou)
	{
		bool isSpawnAmmo = true;
		PlayerAmmoType ammoType = PlayerAmmoType.Null;
		float lastFireTime = 0f;
		float frequencyVal = 1f;
		switch (paoKou) {
		case JI_QIANG_INDEX:
			ammoType = AmmoStateJiQiang;
			lastFireTime = LastFireTimeJiQiang;
			break;
			
		case ZHU_PAO_INDEX:
			ammoType = AmmoStateZhuPao;
			lastFireTime = LastFireTimeZhuPao;
			break;
		}

		switch (ammoType) {
		case PlayerAmmoType.PuTongAmmo:
			frequencyVal = Frequency[paoKou];
			break;
		default:
			frequencyVal = Frequency[paoKou];
			break;
		}

		if (Time.time < lastFireTime + (1f / frequencyVal)) {
			isSpawnAmmo = false;
		}
		return isSpawnAmmo;
	}
Пример #2
0
	void ChangePlayerPaoTaObj(PlayerAmmoType ammoType)
	{
		int indexJH = 0;
		switch (ammoType) {
		case PlayerAmmoType.ChuanTouAmmo:
			indexJH = 1;
			break;
		case PlayerAmmoType.SanDanAmmo:
			indexJH = 2;
			break;
		case PlayerAmmoType.PaiJiPaoAmmo:
			indexJH = 3;
			break;
		}

//		#if UNITY_EDITOR
//		Debug.Log("Unity:"+"ChangePlayerPaoTaObj -> indexJH "+indexJH);
//		#endif
		
		for (int i = 0; i < 4; i++) {
			if (PaoTaRealObj.Length >= 4 && PaoTaRealObj[i] != null) {
				PaoTaRealObj[i].SetActive(indexJH == i);
			}
		}
	}
    void CheckAutoFirePlayerAmmoType()
    {
        if (PSPlayerAutoFire == null)
        {
            return;
        }

        PlayerAmmoType autoFirePlayerAmmoType = PSPlayerAutoFire.AutoFirePlayerAmmoType;
        int            maxAmmoNum             = 999999;

        switch (autoFirePlayerAmmoType)
        {
        case PlayerAmmoType.DaoDanAmmo:
            XkGameCtrl.DaoDanNumPOne = maxAmmoNum;
            XkGameCtrl.DaoDanNumPTwo = maxAmmoNum;
            break;

        case PlayerAmmoType.GaoBaoAmmo:
            XkGameCtrl.GaoBaoDanNumPOne = maxAmmoNum;
            XkGameCtrl.GaoBaoDanNumPTwo = maxAmmoNum;
            break;

        case PlayerAmmoType.PuTongAmmo:
            XkGameCtrl.GaoBaoDanNumPOne = 0;
            XkGameCtrl.GaoBaoDanNumPTwo = 0;
            break;
        }
        AutoFirePlayerAmmoTypeVal = autoFirePlayerAmmoType;
    }
Пример #4
0
	void CheckPSTriggerAutoFire()
	{
		if (!XkGameCtrl.GetInstance().IsCartoonShootTest) {
			return;
		}

		PlayerAmmoType ammoType = PSTriggerCamera.AutoFirePlayerAmmoTypeVal;
		if (PSAmmoTypeVal == ammoType) {
			switch (PSAmmoTypeVal) {
			case PlayerAmmoType.PuTongAmmo:
			case PlayerAmmoType.GaoBaoAmmo:
				if (!IsActiveFireBtJQ) {
					SetIsActiveFireBtJQ(true);
				}

				if (!IsActiveFireBtZP) {
					IsActiveFireBtZP = true;
				}

				if (PSAmmoTypeVal == PlayerAmmoType.GaoBaoAmmo) {
					XkGameCtrl.GaoBaoDanNumPOne = 9999;
					XkGameCtrl.GaoBaoDanNumPTwo = 9999;
				}
				else {
					XkGameCtrl.GaoBaoDanNumPOne = 0;
					XkGameCtrl.GaoBaoDanNumPTwo = 0;
				}
				break;

			case PlayerAmmoType.DaoDanAmmo:
//				ClickDaoDanBtOneEvent(pcvr.ButtonState.DOWN);
//				ClickDaoDanBtTwoEvent(pcvr.ButtonState.DOWN);
				break;

			default:
				if (IsActiveFireBtJQ) {
					SetIsActiveFireBtJQ(false);
				}
				
				if (IsActiveFireBtZP) {
					IsActiveFireBtZP = false;
				}
				break;
			}
			return;
		}
		PSAmmoTypeVal = ammoType;

		switch (PSAmmoTypeVal) {
		case PlayerAmmoType.DaoDanAmmo:
		case PlayerAmmoType.GaoBaoAmmo:
		case PlayerAmmoType.PuTongAmmo:
			IsPSAutoFire = true;
			break;
		default:
			IsPSAutoFire = false;
			break;
		}
	}
Пример #5
0
    /*void HiddenHuoLiJQSprite()
     * {
     *      //Debug.Log("HiddenHuoLiJQSprite...");
     *      if (!HuoLiJQSprite.gameObject.activeSelf) {
     *              return;
     *      }
     *      HuoLiJQSprite.gameObject.SetActive(false);
     * }*/

    /*IEnumerator ChangeHuoLiJQSpriteAmount()
     * {
     *      bool isStopChange = false;
     *      do {
     *              HuoLiJQSprite.fillAmount += 0.2f;
     *              if (HuoLiJQSprite.fillAmount >= 1f) {
     *                      HuoLiJQSprite.fillAmount = 1f;
     *                      isStopChange = true;
     *                      Invoke("HiddenHuoLiJQSprite", 3f);
     *                      yield break;
     *              }
     *              else {
     *                      yield return new WaitForSeconds(0.05f);
     *              }
     *      } while (!isStopChange);
     * }*/

//	public void ShowDaoDanSprite()
//	{
//		if (Network.peerType == NetworkPeerType.Server) {
//			return;
//		}
//
//		if (!gameObject.activeSelf) {
//			return;
//		}
//
////		if (DaoDanSprite.gameObject.activeSelf) {
////			return;
////		}
//
//		GameJiTaiType jiTaiType = XkGameCtrl.GameJiTaiSt;
//		switch (PlayerSt) {
//		case PlayerEnum.PlayerOne:
//			if (jiTaiType == GameJiTaiType.FeiJiJiTai) {
//				DaoDanSprite.spriteName = "1PDaoDan";
//			}
//			else if (jiTaiType == GameJiTaiType.TanKeJiTai) {
//				DaoDanSprite.spriteName = "1PPaoDan";
//			}
//			break;
//
//		case PlayerEnum.PlayerTwo:
//			if (jiTaiType == GameJiTaiType.FeiJiJiTai) {
//				DaoDanSprite.spriteName = "2PDaoDan";
//			}
//			else if (jiTaiType == GameJiTaiType.TanKeJiTai) {
//				DaoDanSprite.spriteName = "2PPaoDan";
//			}
//			break;
//		}
//		DaoDanSprite.fillAmount = 0f;
//		DaoDanSprite.gameObject.SetActive(true);
//		StartCoroutine(ChangeDaoDanSpriteAmount());
//	}

    /*void HiddenDaoDanSprite()
     * {
     *      //Debug.Log("HiddenDaoDanSprite...");
     *      if (!DaoDanSprite.gameObject.activeSelf) {
     *              return;
     *      }
     *      DaoDanSprite.gameObject.SetActive(false);
     * }*/

    /*IEnumerator ChangeDaoDanSpriteAmount()
     * {
     *      bool isStopChange = false;
     *      do {
     *              DaoDanSprite.fillAmount += 0.2f;
     *              if (DaoDanSprite.fillAmount >= 1f) {
     *                      DaoDanSprite.fillAmount = 1f;
     *                      isStopChange = true;
     *                      Invoke("HiddenDaoDanSprite", 3f);
     *                      yield break;
     *              }
     *              else {
     *                      yield return new WaitForSeconds(0.05f);
     *              }
     *      } while (!isStopChange);
     * }*/

    void ResetPlayerAmmoNum(PlayerAmmoType ammoType)
    {
        switch (ammoType)
        {
        case PlayerAmmoType.ChuanTouAmmo:
            GaoBaoAmmoNum = -1;
            SanDanAmmoNum = -1;
            //DaoDanAmmoNum = -1;
            //ChuanTouAmmoNum = -1;
            GenZongAmmoNum = -1;
            JianSuAmmoNum  = -1;
            break;

        case PlayerAmmoType.DaoDanAmmo:
            GaoBaoAmmoNum = -1;
            SanDanAmmoNum = -1;
            //DaoDanAmmoNum = -1;
            ChuanTouAmmoNum = -1;
            GenZongAmmoNum  = -1;
            JianSuAmmoNum   = -1;
            break;

        case PlayerAmmoType.GaoBaoAmmo:
            //GaoBaoAmmoNum = -1;
            SanDanAmmoNum = -1;
            //DaoDanAmmoNum = -1;
            ChuanTouAmmoNum = -1;
            GenZongAmmoNum  = -1;
            JianSuAmmoNum   = -1;
            break;

        case PlayerAmmoType.GenZongAmmo:
            GaoBaoAmmoNum = -1;
            SanDanAmmoNum = -1;
            //DaoDanAmmoNum = -1;
            ChuanTouAmmoNum = -1;
            //GenZongAmmoNum = -1;
            JianSuAmmoNum = -1;
            break;

        case PlayerAmmoType.JianSuAmmo:
            GaoBaoAmmoNum = -1;
            SanDanAmmoNum = -1;
            //DaoDanAmmoNum = -1;
            ChuanTouAmmoNum = -1;
            GenZongAmmoNum  = -1;
            //JianSuAmmoNum = -1;
            break;

        case PlayerAmmoType.SanDanAmmo:
            GaoBaoAmmoNum = -1;
            //SanDanAmmoNum = -1;
            //DaoDanAmmoNum = -1;
            ChuanTouAmmoNum = -1;
            GenZongAmmoNum  = -1;
            JianSuAmmoNum   = -1;
            break;
        }
    }
Пример #6
0
    void SetNpcAmmoCount(int ammoCount, PlayerAmmoType ammoType = PlayerAmmoType.PuTongAmmo)
    {
        float perVal        = 0f;
        int   puTongAmmoNum = MaxPuTongAmmo;       //单机单人.

        if (XkGameCtrl.GameModeVal == GameMode.LianJi &&
            XkPlayerCtrl.PlayerTranFeiJi != null &&
            XkPlayerCtrl.PlayerTranTanKe != null)
        {
            if (XkGameCtrl.IsActivePlayerOne && XkGameCtrl.IsActivePlayerTwo)
            {
                if (NpcJiFen != NpcJiFenEnum.ShiBing)
                {
                    puTongAmmoNum = LJMaxPuTongAmmoSR;                     //联机双人.
                }
            }
            else
            {
                if (NpcJiFen != NpcJiFenEnum.ShiBing)
                {
                    puTongAmmoNum = LJMaxPuTongAmmoSR;                     //联机单人.
                }
            }
        }
        else
        {
            if (XkGameCtrl.IsActivePlayerOne && XkGameCtrl.IsActivePlayerTwo)
            {
                if (NpcJiFen != NpcJiFenEnum.ShiBing)
                {
                    puTongAmmoNum = MaxPuTongAmmoSR;                     //单机双人.
                }
            }
        }

        switch (ammoType)
        {
        case PlayerAmmoType.PuTongAmmo:
            perVal          = (float)ammoCount / puTongAmmoNum;
            GaoBaoAmmoCount = (int)(perVal * MaxGaoBaoAmmo);
            DaoDanAmmoCount = (int)(perVal * MaxDaoDanAmmo);
            break;

        case PlayerAmmoType.GaoBaoAmmo:
            perVal          = (float)ammoCount / MaxGaoBaoAmmo;
            PuTongAmmoCount = (int)(perVal * puTongAmmoNum);
            DaoDanAmmoCount = (int)(perVal * MaxDaoDanAmmo);
            break;

        case PlayerAmmoType.DaoDanAmmo:
            perVal          = (float)ammoCount / MaxDaoDanAmmo;
            PuTongAmmoCount = (int)(perVal * puTongAmmoNum);
            GaoBaoAmmoCount = (int)(perVal * MaxGaoBaoAmmo);
            break;
        }
    }
Пример #7
0
	// Use this for initialization
	void Start()
	{
		TanKeTran = transform;
		AmmoParticle = XKPlayerGlobalDt.GetInstance().AmmoParticle;
		SanDanAmmoParticle = XKPlayerGlobalDt.GetInstance().SanDanAmmoParticle;
		PaiJiPaoAmmoParticle = XKPlayerGlobalDt.GetInstance().PaiJiPaoAmmoParticle;
		ChuanTouDanAmmoParticle = XKPlayerGlobalDt.GetInstance().ChuanTouDanAmmoParticle;
		DaoDanAmmoParticle = XKPlayerGlobalDt.GetInstance().DaoDanAmmoParticle;

		PuTongAmmo = XKPlayerGlobalDt.GetInstance().PuTongJQAmmo;
		DaoDanZPAmmo = XKPlayerGlobalDt.GetInstance().DaoDanZPAmmo;
		ChuanTouDanAmmo = XKDaoJuGlobalDt.GetInstance().AmmoChuanJiaDanZP;
		AmmoSanDanZP = XKDaoJuGlobalDt.GetInstance().AmmoSanDanZP;
		PaiJiPaoAmmo = XKDaoJuGlobalDt.GetInstance().AmmoPaiJiPao;
		ChangChengAmmo = XKDaoJuGlobalDt.GetInstance().AmmoChangCheng;
		QiangJiAmmo = XKDaoJuGlobalDt.GetInstance().AmmoQiangJi;
		AmmoHuoLiOpenJQ = XKDaoJuGlobalDt.GetInstance().AmmoHuoLiOpenJQ;
		AmmoHuoLiOpenZP = XKDaoJuGlobalDt.GetInstance().AmmoHuoLiOpenZP;
		Frequency = XKPlayerGlobalDt.GetInstance().Frequency;

		//AmmoParticleList = new List<AmmoParticleDt>(6);
		FireLayer = XkGameCtrl.GetInstance().PlayerAmmoHitLayer;
		AmmoStateJiQiang = PlayerAmmoType.PuTongAmmo;
		AmmoStateZhuPao = PlayerAmmoType.DaoDanAmmo;

		int fireAudioLen = PlayerFireAudio.Length;
		for (int i = 0; i < fireAudioLen; i++) {
			if (PlayerFireAudio[i] == null) {
				continue;
			}
			PlayerFireAudio[i].loop = false;
			PlayerFireAudio[i].Stop();
		}

		InitPlayerAmmoList();
		switch (PlayerIndex) {
		case PlayerEnum.PlayerOne:
			InputEventCtrl.GetInstance().ClickFireBtOneEvent += ClickFireBtEvent;
			InputEventCtrl.GetInstance().ClickDaoDanBtOneEvent += ClickFireDaoDanBtEvent;
			break;
		case PlayerEnum.PlayerTwo:
			InputEventCtrl.GetInstance().ClickFireBtTwoEvent += ClickFireBtEvent;
			InputEventCtrl.GetInstance().ClickDaoDanBtTwoEvent += ClickFireDaoDanBtEvent;
			break;
		case PlayerEnum.PlayerThree:
			InputEventCtrl.GetInstance().ClickFireBtThreeEvent += ClickFireBtEvent;
			InputEventCtrl.GetInstance().ClickDaoDanBtThreeEvent += ClickFireDaoDanBtEvent;
			break;
		case PlayerEnum.PlayerFour:
			InputEventCtrl.GetInstance().ClickFireBtFourEvent += ClickFireBtEvent;
			InputEventCtrl.GetInstance().ClickDaoDanBtFourEvent += ClickFireDaoDanBtEvent;
			break;
		}
        CreatPlayerXiaoFeiJi();
    }
Пример #8
0
    // Use this for initialization
    void Start()
    {
        SpawnParticleCom = gameObject.AddComponent <XKSpawnParticle>();
        for (int i = 0; i < QianGuanTwRot.Length; i++)
        {
            QianGuanTwRot[i].enabled = false;
        }
        FireLayer    = XkGameCtrl.GetInstance().PlayerAmmoHitLayer;
        PlayerScript = GetComponent <XkPlayerCtrl>();
        PlayerScript.SetPlayerAutoFireScript(this);
        PlayerStEnum = PlayerScript.PlayerSt;

        AmmoStatePOne = PlayerAmmoType.PuTongAmmo;
        AmmoStatePTwo = PlayerAmmoType.PuTongAmmo;
        if (PlayerStEnum != PlayerTypeEnum.CartoonCamera)
        {
            PlayerAudio = PlayerScript.PlayerAudio;
            for (int i = 0; i < 7; i++)
            {
                if (i < 6)
                {
                    PlayerAudio[i].loop = false;
                }
                else
                {
                    PlayerAudio[i].loop = true;
                }
                PlayerAudio[i].Stop();
            }

            InitPlayerAmmoList();
            //InputEventCtrl.GetInstance().ClickFireBtOneEvent += ClickFireBtOneEvent;
            InputEventCtrl.GetInstance().ClickFireBtTwoEvent += ClickFireBtTwoEvent;
            //InputEventCtrl.GetInstance().ClickDaoDanBtOneEvent += ClickDaoDanBtOneEvent;
            InputEventCtrl.GetInstance().ClickDaoDanBtTwoEvent += ClickDaoDanBtTwoEvent;
//			if (Network.peerType == NetworkPeerType.Server) {
//				InitPlayerAmmoList();
//			}
//
//			if ((PlayerStEnum == PlayerTypeEnum.FeiJi && XkGameCtrl.GameJiTaiSt == GameJiTaiType.FeiJiJiTai)
//			    || (PlayerStEnum == PlayerTypeEnum.TanKe && XkGameCtrl.GameJiTaiSt == GameJiTaiType.TanKeJiTai)){
//				InitPlayerAmmoList();
//				InputEventCtrl.GetInstance().ClickFireBtOneEvent += ClickFireBtOneEvent;
//				InputEventCtrl.GetInstance().ClickFireBtTwoEvent += ClickFireBtTwoEvent;
//				InputEventCtrl.GetInstance().ClickDaoDanBtOneEvent += ClickDaoDanBtOneEvent;
//				InputEventCtrl.GetInstance().ClickDaoDanBtTwoEvent += ClickDaoDanBtTwoEvent;
//			}
        }
        else
        {
            this.enabled = false;
        }
    }
Пример #9
0
    void HandleAmmoList(PlayerAmmoCtrl scriptAmmo)
    {
        PlayerAmmoType ammoType = scriptAmmo.AmmoType;

        switch (ammoType)
        {
        case PlayerAmmoType.PuTongAmmo:
            if (PlayerStEnum == PlayerTypeEnum.FeiJi)
            {
                if (AmmoList.Contains(scriptAmmo))
                {
                    return;
                }
                AmmoList.Add(scriptAmmo);
            }
            else if (PlayerStEnum == PlayerTypeEnum.TanKe)
            {
                if (AmmoList_TK.Contains(scriptAmmo))
                {
                    return;
                }
                AmmoList_TK.Add(scriptAmmo);
            }
            break;

        case PlayerAmmoType.GaoBaoAmmo:
            if (PlayerStEnum == PlayerTypeEnum.FeiJi)
            {
                if (AmmoGaoBaoList.Contains(scriptAmmo))
                {
                    return;
                }
                AmmoGaoBaoList.Add(scriptAmmo);
            }
            else if (PlayerStEnum == PlayerTypeEnum.TanKe)
            {
                if (AmmoGaoBaoList_TK.Contains(scriptAmmo))
                {
                    return;
                }
                AmmoGaoBaoList_TK.Add(scriptAmmo);
            }
            break;
        }
    }
Пример #10
0
	public void SetIsSanDanZPFire(bool isFire)
	{
		if (IsSanDanZPFire == isFire) {
			return;
		}
		IsSanDanZPFire = isFire;
		ChangePlayerPaoTaObj(isFire == true ? PlayerAmmoType.SanDanAmmo : PlayerAmmoType.Null);
		PlayerAmmoType ammoTypeVal = isFire == true ? PlayerAmmoType.SanDanAmmo : PlayerAmmoType.DaoDanAmmo;
		XKPlayerAutoFire.GetInstanceAutoFire(PlayerIndex).SetAmmoStateZhuPao(ammoTypeVal);
		//Debug.Log("Unity:"+"SetIsSanDanZPFire -> isFire "+isFire);

		BuJiBaoType daoJuTypeVal = isFire == true ? BuJiBaoType.ZhuPaoSanDanDJ : BuJiBaoType.DaoDan;
		ZhuPaoAmmoSt = daoJuTypeVal;
		if (isFire) {
			//IsSanDanZPFire = false;
			IsPaiJiPaoFire = false;
		}
	}
Пример #11
0
	public void SetAmmoStateZhuPao(PlayerAmmoType ammoType)
	{
		AmmoStateZhuPao = ammoType;
		if (ammoType == PlayerAmmoType.ChuanTouAmmo) {
			IsSanDanZPFire = false;
			IsPaiJiPaoFire = false;
			ChangePlayerPaoTaObj(ammoType);
		}
		else if (ammoType == PlayerAmmoType.SanDanAmmo) {
			IsPaiJiPaoFire = false;
			ChangePlayerPaoTaObj(ammoType);
		}
		else if (ammoType == PlayerAmmoType.PaiJiPaoAmmo) {
			IsPaiJiPaoFire = false;
			ChangePlayerPaoTaObj(ammoType);
		}
		else {
			ChangePlayerPaoTaObj(PlayerAmmoType.Null);
		}
	}
Пример #12
0
    public void ShowHuoLiJQSprite(PlayerAmmoType ammoType)
    {
        if (Network.peerType == NetworkPeerType.Server)
        {
            return;
        }

        ResetPlayerAmmoNum(ammoType);
        switch (ammoType)
        {
        case PlayerAmmoType.ChuanTouAmmo:
            CheckPlayerChuanTouDanAmmoNum();
            break;

        case PlayerAmmoType.DaoDanAmmo:
            break;

        case PlayerAmmoType.GaoBaoAmmo:
            CheckPlayerGaoBaoAmmoNum();
            break;

        case PlayerAmmoType.GenZongAmmo:
            CheckPlayerGenZongDanAmmoNum();
            break;

        case PlayerAmmoType.JianSuAmmo:
            CheckPlayerJianSuDanAmmoNum();
            break;

        case PlayerAmmoType.SanDanAmmo:
            CheckPlayerSanDanAmmoNum();
            break;
        }

//		if (HuoLiJQSprite.gameObject.activeSelf) {
//			return;
//		}
//		HuoLiJQSprite.fillAmount = 0f;
//		HuoLiJQSprite.gameObject.SetActive(true);
//		StartCoroutine(ChangeHuoLiJQSpriteAmount());
    }
Пример #13
0
    void OtherPortSpawnPlayerAmmo(PlayerAmmoType ammoType, Vector3 ammoSpawnPos, Quaternion ammoSpawnRot, Vector3 firePos)
    {
        //GameObject obj = SpawnPlayerAmmo(ammoPlayer, ammoSpawnPos, ammoSpawnRot);
        GameObject obj = null;

        switch (ammoType)
        {
        case PlayerAmmoType.PuTongAmmo:
        case PlayerAmmoType.GaoBaoAmmo:
            obj = GetPlayerAmmo(ammoType, ammoSpawnPos, ammoSpawnRot);
            break;

        default:
            obj = SpawnPlayerAmmo(DaoDanAmmo, ammoSpawnPos, ammoSpawnRot);
            break;
        }
        obj.transform.parent = XkGameCtrl.PlayerAmmoArray;
        PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>();

        ammoScript.SetIsDonotHurtNpc(true);
        ammoScript.StartMoveAmmo(firePos, PlayerEnum.Null);
    }
    public void OnDamageNpc(int damageNpcVal         = 1,
                            PlayerEnum playerSt      = PlayerEnum.Null,
                            PlayerAmmoType pAmmoType = PlayerAmmoType.Null,
                            bool isAiFireAmmo        = false)
    {
        if (IsDeathNpc)
        {
            return;
        }

        if (pAmmoType == PlayerAmmoType.SanDanAmmo)
        {
            if (Time.time - TimeSanDanDamage < XKPlayerGlobalDt.GetInstance().TimeShouDongDaoDan)
            {
                //对于玩家的主炮散弹在同一次发射内只计算一次伤害.
                //SSDebug.LogWarning("************* pAmmoType ====== " + pAmmoType);
                return;
            }
            TimeSanDanDamage = Time.time;
        }

        if (pAmmoType == PlayerAmmoType.ChuanTouAmmo)
        {
            if (XKPlayerMvFanWei.GetInstanceQian() != null && XKPlayerCamera.GetInstanceFeiJi() != null)
            {
                Vector3 forwardVecCam = XKPlayerCamera.GetInstanceFeiJi().transform.forward;
                Vector3 posA          = transform.position;
                Vector3 posB          = XKPlayerMvFanWei.GetInstanceQian().transform.position;
                forwardVecCam.y = posA.y = posB.y = 0f;
                Vector3 vecBA = posA - posB;
                if (Vector3.Dot(forwardVecCam, vecBA) >= 0f)
                {
                    //npc在镜头前方范围之外,不受玩家子弹伤害.
                    return;
                }
            }
        }

        if (IsBackDaiJinQuanNpcBlood == true)
        {
            //代金券npc重置血值后,给一定时间的无敌状态.
            if (Time.time - m_TimeLastBackDaiJinQuanNpcBlood <= 0.5f)
            {
                return;
            }
            else
            {
                IsBackDaiJinQuanNpcBlood = false;
            }
        }

        //switch (NpcJiFen)
        //{
        //    case NpcJiFenEnum.Boss:
        //        if (!XKBossXueTiaoCtrl.GetInstance().GetIsCanSubXueTiaoAmount())
        //        {
        //            if (NpcDamageCom != null)
        //            {
        //                NpcDamageCom.PlayNpcDamageEvent();
        //            }
        //            return;
        //        }
        //        break;
        //}


        if (NpcDamageCom != null)
        {
            NpcDamageCom.PlayNpcDamageEvent();
        }

        if (NpcScript != null)
        {
            if (NpcScript.IsCaiPiaoZhanChe == true && NpcScript.IsEnterCameraBox == false)
            {
                //彩票战车和boss没有进入摄像机盒子,不计算伤害.
                return;
            }
        }

        if (CountActivePlayer != XkGameCtrl.PlayerActiveNum)
        {
            if (CountActivePlayer != 0)
            {
                //fix PuTongAmmoCount.
                int indexValTmp      = CountActivePlayer - 1;
                int puTongAmmoNumTmp = MaxPuTongAmmo[indexValTmp];
                indexValTmp = XkGameCtrl.PlayerActiveNum - 1;
                if (indexValTmp >= 0)
                {
                    float healthPer = (float)PuTongAmmoCount / puTongAmmoNumTmp;
                    //int oldPuTongAmmoCount = PuTongAmmoCount;
                    PuTongAmmoCount = (int)(healthPer * MaxPuTongAmmo[indexValTmp]);

                    /*Debug.Log("Unity:"+"fix npc health -> PuTongAmmoCount "+PuTongAmmoCount
                     +", oldPuTongAmmoCount "+oldPuTongAmmoCount);*/
                }
            }
            CountActivePlayer = XkGameCtrl.PlayerActiveNum;
        }

        if (NpcScript == null || (NpcScript != null && !NpcScript.GetIsWuDi()))
        {
            PuTongAmmoCount += damageNpcVal;
        }

        int indexVal = XkGameCtrl.PlayerActiveNum - 1;

        indexVal = indexVal < 0 ? 0 : indexVal;
        int puTongAmmoNum = MaxPuTongAmmo[indexVal];

        if (NpcScript != null)
        {
            if (NpcScript.IsZhanCheNpc || NpcScript.IsJPBossNpc)
            {
                if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true)
                {
                    //当没有玩家激活游戏时,彩票战车和JPBoss采用原血量的一定比例来计算.
                    puTongAmmoNum = (int)(XkGameCtrl.GetInstance().m_ZhanCheBossBloodPer *puTongAmmoNum);
                }
            }
        }

        /*if (NpcJiFen == NpcJiFenEnum.Boss)
         * {
         *              float bossAmount = (float)(puTongAmmoNum - PuTongAmmoCount) / puTongAmmoNum;
         *              bossAmount = bossAmount < 0f ? 0f : bossAmount;
         *  if (XKBossXueTiaoCtrl.GetInstance() != null)
         *  {
         *      XKBossXueTiaoCtrl.GetInstance().SetBloodBossAmount(bossAmount, this);
         *  }
         *      }*/

        if (NpcScript != null)
        {
            if (NpcScript.IsCaiPiaoZhanChe == true)
            {
                if (XkGameCtrl.GetInstance() != null && XKPlayerFenShuCtrl.GetInstance() != null)
                {
                    if (pAmmoType == PlayerAmmoType.DaoDanAmmo ||
                        pAmmoType == PlayerAmmoType.PaiJiPaoAmmo ||
                        pAmmoType == PlayerAmmoType.ChuanTouAmmo ||
                        pAmmoType == PlayerAmmoType.SanDanAmmo ||
                        pAmmoType == PlayerAmmoType.ChongJiBoAmmo)
                    {
                        int jiFenVal = XkGameCtrl.GetInstance().m_DaoDanHitBossJiFen;
                        //XKPlayerFenShuCtrl.GetInstance().ShowPlayerFenShu(playerSt, GetJiFen(jiFenVal));
                        XKPlayerFenShuCtrl.GetInstance().ShowPlayerFenShu(playerSt, jiFenVal);
                    }
                }

                float bloodAmount = (float)(puTongAmmoNum - PuTongAmmoCount) / puTongAmmoNum;
                bloodAmount = bloodAmount < 0f ? 0f : bloodAmount;

                bool isCanJiBao = true;
                if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true)
                {
                    //没有玩家激活游戏时,Ai都认为是可以击爆战车或Boss.
                }
                else
                {
                    //有玩家激活游戏.
                    if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null)
                    {
                        isCanJiBao = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_CurrentTotalHealthDt.IsCanJiBao;
                    }
                }

                if (isCanJiBao == false)
                {
                    //不允许被玩家击爆的代金券npc.
                    if (IsBloodToStage02 == false)
                    {
                        if (bloodAmount <= 0.24f)
                        {
                            //强制保留一定的血量.
                            m_BloodAmoutValue      = bloodAmount = 0.24f;
                            IsBloodToStage02       = true;
                            m_TimeLastBloodToStage = Time.time;
                            PuTongAmmoCount        = puTongAmmoNum - 1;
                        }
                    }
                    else if (IsBloodToStage01 == false)
                    {
                        float minBloodAmount = 0.12f; //最小极限血值.
                        if (m_BloodAmoutValue > minBloodAmount)
                        {
                            //血值已经降到最低阶段.
                            float dTimeVal = 0.4f;
                            if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null)
                            {
                                dTimeVal = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_TimeNoDead;
                            }

                            if (Time.time - m_TimeLastBloodToStage >= dTimeVal)
                            {
                                //每次间隔一定时间减少一定血值.
                                m_TimeLastBloodToStage = Time.time;
                                float subBloodAmount = 0.02f; //每次减少的血值.
                                if (m_BloodAmoutValue > minBloodAmount)
                                {
                                    m_BloodAmoutValue -= subBloodAmount;
                                    if (m_BloodAmoutValue < minBloodAmount)
                                    {
                                        //强制保护的血值信息.
                                        m_BloodAmoutValue = minBloodAmount;
                                        IsBloodToStage01  = true;
                                    }
                                }
                            }
                        }
                        bloodAmount     = m_BloodAmoutValue;
                        PuTongAmmoCount = puTongAmmoNum - 1; //强制保留一定的血值.
                    }
                    else
                    {
                        float minBloodAmount = 0.03f; //最小极限血值.
                        if (m_BloodAmoutValue > minBloodAmount)
                        {
                            //血值已经降到最低阶段.
                            float dTimeVal = 0.4f;
                            if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null)
                            {
                                dTimeVal = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_TimeNoDead;
                            }

                            if (Time.time - m_TimeLastBloodToStage >= dTimeVal)
                            {
                                //每次间隔一定时间减少一定血值.
                                m_TimeLastBloodToStage = Time.time;
                                float subBloodAmount = 0.01f; //每次减少的血值.
                                if (m_BloodAmoutValue > minBloodAmount)
                                {
                                    m_BloodAmoutValue -= subBloodAmount;
                                    if (m_BloodAmoutValue < minBloodAmount)
                                    {
                                        //强制保护的血值信息.
                                        m_BloodAmoutValue = minBloodAmount;
                                    }
                                }
                            }
                        }
                        bloodAmount     = m_BloodAmoutValue;
                        PuTongAmmoCount = puTongAmmoNum - 1; //强制保留一定的血值.
                    }
                }

                //彩票战车和boss的血条UI信息更新.
                SSUIRoot.GetInstance().m_GameUIManage.SetDaiJinQuanNpcXueTiaoAmount(bloodAmount);

                if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true)
                {
                    //没有玩家激活游戏时,Ai都认为是不可以击爆JPBoss特殊武器的.
                }
                else
                {
                    //JPBoss受到玩家子弹伤害.
                    if (NpcScript.IsJPBossNpc == true)
                    {
                        NpcScript.OnDamageJPBossWeapon(bloodAmount);
                    }
                }
            }
        }

        /*Debug.Log("Unity:"+"OnDamageNpc -> "
         +", nameNpc "+NpcNameInfo
         +", puTongAmmoNum "+puTongAmmoNum);*/
        if (PuTongAmmoCount >= puTongAmmoNum)
        {
            if (NpcScript != null)
            {
                if (NpcScript.IsZhanCheNpc)
                {
                    //战车npc是否可以被击爆的判断.
                    if (XkGameCtrl.GetInstance().IsCaiPiaoHuLuePlayerIndex == false && NpcScript.m_IndexPlayerJiBao != playerSt)
                    {
                        //不是可以击爆战车npc的玩家.
                        return;
                    }

                    if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true)
                    {
                        //没有激活任何玩家.
                    }
                    else
                    {
                        if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe, NpcScript.m_DaiJinQuanState))
                        {
                            //战车彩池的彩票积累的不够.
                            return;
                        }
                    }
                }

                if (NpcScript.IsJPBossNpc)
                {
                    //JPBoss是否可以被击爆的判断.
                    if (XkGameCtrl.GetInstance().IsCaiPiaoHuLuePlayerIndex == false && NpcScript.m_IndexPlayerJiBao != playerSt)
                    {
                        //不是可以击爆JPBoss的玩家.
                        return;
                    }

                    if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true)
                    {
                        //没有激活任何玩家.
                    }
                    else
                    {
                        if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss))
                        {
                            //JPBoss彩池的彩票积累的不够.
                            return;
                        }
                    }
                }
            }

            if (IsDeathNpc)
            {
                return;
            }
            IsDeathNpc = true;

            if (IsOpenCameraShake)
            {
                XKPlayerCamera.GetInstanceFeiJi().HandlePlayerCameraShake();
            }

            if (NpcJiFen == NpcJiFenEnum.Boss && BossXieZiScript != null)
            {
                BossXieZiScript.ResetBossXieZiShouBiInfo();
            }

            if (BoxColCom != null)
            {
                BoxColCom.enabled = false;
            }
            CheckSpawnDaoJuCom(playerSt);
            CheckNpcDeathExplode(playerSt);
            CheckHiddenNpcObjArray();

//			bool isAddKillNpcNum = true;
//			if (NpcScript != null && CannonScript != null) {
//				if (NpcScript.GetIsDeathNPC()) {
//					isAddKillNpcNum = false;
//					Debug.Log("Unity:"+"name "+NpcScript.name+", isAddKillNpcNum "+isAddKillNpcNum);
//				}
//			}

            if (!IsYouTongNpc)
            {
                switch (NpcJiFen)
                {
                case NpcJiFenEnum.Boss:
                    if (GameTimeBossCtrl.GetInstance() != null &&
                        GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0)
                    {
                        XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, GetJiFen());
                    }
                    break;

                default:
                    XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, GetJiFen());
                    ShowPiaoFen(playerSt);
                    break;
                }
//				if (isAddKillNpcNum) {
//					switch (NpcJiFen) {
//					case NpcJiFenEnum.Boss:
//						if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0) {
//							XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal);
//						}
//						break;
//					default:
//						XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal);
//						break;
//					}
//				}
            }
            else
            {
                CheckYouTongDamageNpc();
            }

            if (NpcScript != null)
            {
                if (CannonScript != null)
                {
                    CannonScript.OnRemoveCannon(playerSt, 1);
                }

                if (NpcJiFen != NpcJiFenEnum.Boss && NpcScript.GetIsBossNpc())
                {
                    return;
                }
                NpcScript.TriggerRemovePointNpc(1, CannonScript, pAmmoType);

                if (NpcScript.IsCaiPiaoZhanChe)
                {
                    SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState deCaiType = SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe;
                    //彩票boss或战车npc.
                    if (NpcScript.GetIsBossNpc())
                    {
                        deCaiType = SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss;
                    }
                    else
                    {
                        if (XkPlayerCtrl.GetInstanceFeiJi() != null)
                        {
                            XkPlayerCtrl.GetInstanceFeiJi().AddGetZhanCheDaiJinQuanPlayer(XKPlayerMoveCtrl.GetInstance(playerSt));
                        }
                    }

                    if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage != null)
                    {
                        if (isAiFireAmmo == false)
                        {
                            //只有被玩家击爆的代金券npc才允许出彩.
                            XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.SubGameDeCaiValByDeCaiState(playerSt, deCaiType,
                                                                                                                                               SSCaiPiaoDataManage.SuiJiDaoJuState.BaoXiang, NpcScript.m_DaiJinQuanState);
                        }
                        //else
                        //{
                        //被Ai坦克击爆的代金券npc不允许出彩.
                        //SSDebug.Log("The DaiJinQuan was killed by AiTank");
                        //}
                    }
                }
                else
                {
                    //普通npc被击杀.
                    //if (XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData != null && DeathExplodePoint != null)
                    //{
                    //    //随机送出正常得彩.
                    //    XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData.CheckPlayerSongPiaoInfo(playerSt, DeathExplodePoint.position);
                    //}
                }
            }
            else if (CannonScript != null)
            {
                CannonScript.OnRemoveCannon(playerSt, 1);
                //炮台类npc被击杀.
                //if (XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData != null && DeathExplodePoint != null)
                //{
                //    //随机送出正常得彩.
                //    XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData.CheckPlayerSongPiaoInfo(playerSt, DeathExplodePoint.position);
                //}
            }
        }
    }
Пример #15
0
	/**
	 * ammoType == 0 -> 主角机枪.
	 * ammoType == 1 -> 主炮炮管.
	 */
	GameObject SpawnPlayerAmmoByAmmoType(int ammoIndex, Vector3 ammoSpawnPos, Quaternion ammoSpawnRot)
	{
		GameObject obj = null;
		GameObject ammoParticle = null;
		PlayerAmmoType ammoType = PlayerAmmoType.PuTongAmmo;
		switch (ammoIndex) {
		case JI_QIANG_INDEX:
			ammoType = AmmoStateJiQiang;
			break;
		case ZHU_PAO_INDEX:
			ammoType = AmmoStateZhuPao;
			break;
		}

		if (ammoIndex == ZHU_PAO_INDEX) {
			switch (ammoType) {
			case PlayerAmmoType.ChuanTouAmmo:
				ZhuPaoAmmoSt = BuJiBaoType.ChuanTouDan;
				break;
			case PlayerAmmoType.DaoDanAmmo:
				ZhuPaoAmmoSt = BuJiBaoType.DaoDan;
				break;
			}
		}

		//Debug.Log("Unity:"+"ammoType "+ammoType+", PlayerIndex "+PlayerIndex+", SpawnPlayerAmmoByAmmoType");
		switch (ammoType) {
		case PlayerAmmoType.PuTongAmmo:
			ammoParticle = AmmoParticle[ammoIndex];
			break;

			/*case PlayerAmmoType.GaoBaoAmmo:
			ammoParticle = GaoBaoAmmoParticle[ammoIndex];
			//XkGameCtrl.GetInstance().SubGaoBaoDanNum(PlayerIndex);
			break;*/
			
		case PlayerAmmoType.SanDanAmmo:
			if (ammoIndex == 0) {
				return obj;
			}
			ammoParticle = SanDanAmmoParticle[ammoIndex];
			//XkGameCtrl.GetInstance().SubSanDanNum(PlayerIndex);
			SpawnPlayerAllSanDanAmmo(ammoIndex);
			break;
			
			/*case PlayerAmmoType.GenZongAmmo:
			ammoParticle = GenZongDanAmmoParticle[ammoIndex];
			//XkGameCtrl.GetInstance().SubGenZongDanNum(PlayerIndex);
			break;*/
			
		case PlayerAmmoType.PaiJiPaoAmmo:
			ammoParticle = PaiJiPaoAmmoParticle[ammoIndex];
			break;
			
			/*case PlayerAmmoType.JianSuAmmo:
			ammoParticle = JianSuDanAmmoParticle[ammoIndex];
			//XkGameCtrl.GetInstance().SubJianSuDanNum(PlayerIndex);
			break;*/
			
		case PlayerAmmoType.ChuanTouAmmo:
			ammoParticle = ChuanTouDanAmmoParticle[ammoIndex];
			//XkGameCtrl.GetInstance().SubChuanTouDanNum(PlayerIndex);
			break;
			
		case PlayerAmmoType.DaoDanAmmo:
			ammoParticle = DaoDanAmmoParticle[ammoIndex];
			break;
		}
		SpawnPlayerAmmoParticle(ammoParticle, ammoSpawnPos, ammoSpawnRot);
		obj = GetPlayerAmmo(ammoType, ammoSpawnPos, ammoSpawnRot, ammoIndex);
		return obj;
	}
    public void OnDamageNpc(int damageNpcVal         = 1, PlayerEnum playerSt = PlayerEnum.Null,
                            PlayerAmmoType pAmmoType = PlayerAmmoType.Null)
    {
        if (IsDeathNpc)
        {
            return;
        }

        switch (NpcJiFen)
        {
        case NpcJiFenEnum.Boss:
            if (!XKBossXueTiaoCtrl.GetInstance().GetIsCanSubXueTiaoAmount())
            {
                return;
            }
            break;
        }

        if (CountActivePlayer != XkGameCtrl.PlayerActiveNum)
        {
            if (CountActivePlayer != 0)
            {
                //fix PuTongAmmoCount.
                int indexValTmp      = CountActivePlayer - 1;
                int puTongAmmoNumTmp = MaxPuTongAmmo[indexValTmp];
                indexValTmp = XkGameCtrl.PlayerActiveNum - 1;
                if (indexValTmp >= 0)
                {
                    float healthPer = (float)PuTongAmmoCount / puTongAmmoNumTmp;
                    //int oldPuTongAmmoCount = PuTongAmmoCount;
                    PuTongAmmoCount = (int)(healthPer * MaxPuTongAmmo[indexValTmp]);

                    /*Debug.Log("Unity:"+"fix npc health -> PuTongAmmoCount "+PuTongAmmoCount
                     +", oldPuTongAmmoCount "+oldPuTongAmmoCount);*/
                }
            }
            CountActivePlayer = XkGameCtrl.PlayerActiveNum;
        }

        if (NpcDamageCom != null)
        {
            NpcDamageCom.PlayNpcDamageEvent();
        }

        if (NpcScript == null || (NpcScript != null && !NpcScript.GetIsWuDi()))
        {
            PuTongAmmoCount += damageNpcVal;
        }

        int indexVal = XkGameCtrl.PlayerActiveNum - 1;

        indexVal = indexVal < 0 ? 0 : indexVal;
        int puTongAmmoNum = MaxPuTongAmmo[indexVal];

        if (NpcJiFen == NpcJiFenEnum.Boss)
        {
            float bossAmount = (float)(puTongAmmoNum - PuTongAmmoCount) / puTongAmmoNum;
            bossAmount = bossAmount < 0f ? 0f : bossAmount;
            XKBossXueTiaoCtrl.GetInstance().SetBloodBossAmount(bossAmount, this);
        }

        /*Debug.Log("Unity:"+"OnDamageNpc -> "
         +", nameNpc "+NpcNameInfo
         +", puTongAmmoNum "+puTongAmmoNum);*/
        if (PuTongAmmoCount >= puTongAmmoNum)
        {
            if (IsDeathNpc)
            {
                return;
            }
            IsDeathNpc = true;

            if (IsOpenCameraShake)
            {
                XKPlayerCamera.GetInstanceFeiJi().HandlePlayerCameraShake();
            }

            if (NpcJiFen == NpcJiFenEnum.Boss && BossXieZiScript != null)
            {
                BossXieZiScript.ResetBossXieZiShouBiInfo();
            }

            if (BoxColCom != null)
            {
                BoxColCom.enabled = false;
            }
            CheckSpawnDaoJuCom();
            CheckNpcDeathExplode();
            CheckHiddenNpcObjArray();

//			bool isAddKillNpcNum = true;
//			if (NpcScript != null && CannonScript != null) {
//				if (NpcScript.GetIsDeathNPC()) {
//					isAddKillNpcNum = false;
//					Debug.Log("Unity:"+"name "+NpcScript.name+", isAddKillNpcNum "+isAddKillNpcNum);
//				}
//			}

            if (!IsYouTongNpc)
            {
                switch (NpcJiFen)
                {
                case NpcJiFenEnum.Boss:
                    if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0)
                    {
                        XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal);
                    }
                    break;

                default:
                    XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal);
                    break;
                }
//				if (isAddKillNpcNum) {
//					switch (NpcJiFen) {
//					case NpcJiFenEnum.Boss:
//						if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0) {
//							XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal);
//						}
//						break;
//					default:
//						XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal);
//						break;
//					}
//				}
            }
            else
            {
                CheckYouTongDamageNpc();
            }

            if (NpcScript != null)
            {
                if (CannonScript != null)
                {
                    CannonScript.OnRemoveCannon(playerSt, 1);
                }

                if (NpcJiFen != NpcJiFenEnum.Boss && NpcScript.GetIsBossNpc())
                {
                    return;
                }
                NpcScript.TriggerRemovePointNpc(1, CannonScript, pAmmoType);
            }
            else if (CannonScript != null)
            {
                CannonScript.OnRemoveCannon(playerSt, 1);
            }
        }
    }
Пример #17
0
    public void OnDamageNpc(int damageNpcVal         = 1, PlayerEnum playerSt = PlayerEnum.Null,
                            PlayerAmmoType pAmmoType = PlayerAmmoType.Null)
    {
        if (IsDeathNpc)
        {
            return;
        }

        //switch (NpcJiFen)
        //{
        //    case NpcJiFenEnum.Boss:
        //        if (!XKBossXueTiaoCtrl.GetInstance().GetIsCanSubXueTiaoAmount())
        //        {
        //            if (NpcDamageCom != null)
        //            {
        //                NpcDamageCom.PlayNpcDamageEvent();
        //            }
        //            return;
        //        }
        //        break;
        //}


        if (NpcDamageCom != null)
        {
            NpcDamageCom.PlayNpcDamageEvent();
        }

        if (NpcScript != null)
        {
            if (NpcScript.IsCaiPiaoZhanChe == true && NpcScript.IsEnterCameraBox == false)
            {
                //彩票战车和boss没有进入摄像机盒子,不计算伤害.
                return;
            }
        }

        if (CountActivePlayer != XkGameCtrl.PlayerActiveNum)
        {
            if (CountActivePlayer != 0)
            {
                //fix PuTongAmmoCount.
                int indexValTmp      = CountActivePlayer - 1;
                int puTongAmmoNumTmp = MaxPuTongAmmo[indexValTmp];
                indexValTmp = XkGameCtrl.PlayerActiveNum - 1;
                if (indexValTmp >= 0)
                {
                    float healthPer = (float)PuTongAmmoCount / puTongAmmoNumTmp;
                    //int oldPuTongAmmoCount = PuTongAmmoCount;
                    PuTongAmmoCount = (int)(healthPer * MaxPuTongAmmo[indexValTmp]);

                    /*Debug.Log("Unity:"+"fix npc health -> PuTongAmmoCount "+PuTongAmmoCount
                     +", oldPuTongAmmoCount "+oldPuTongAmmoCount);*/
                }
            }
            CountActivePlayer = XkGameCtrl.PlayerActiveNum;
        }

        if (NpcScript == null || (NpcScript != null && !NpcScript.GetIsWuDi()))
        {
            PuTongAmmoCount += damageNpcVal;
        }

        int indexVal = XkGameCtrl.PlayerActiveNum - 1;

        indexVal = indexVal < 0 ? 0 : indexVal;
        int puTongAmmoNum = MaxPuTongAmmo[indexVal];

        if (NpcJiFen == NpcJiFenEnum.Boss)
        {
            float bossAmount = (float)(puTongAmmoNum - PuTongAmmoCount) / puTongAmmoNum;
            bossAmount = bossAmount < 0f ? 0f : bossAmount;
            XKBossXueTiaoCtrl.GetInstance().SetBloodBossAmount(bossAmount, this);
        }

        /*Debug.Log("Unity:"+"OnDamageNpc -> "
         +", nameNpc "+NpcNameInfo
         +", puTongAmmoNum "+puTongAmmoNum);*/
        if (PuTongAmmoCount >= puTongAmmoNum)
        {
            if (NpcScript != null)
            {
                if (NpcScript.IsZhanCheNpc)
                {
                    //战车npc是否可以被击爆的判断.
                    if (XkGameCtrl.GetInstance().IsCaiPiaoHuLuePlayerIndex == false && NpcScript.m_IndexPlayerJiBao != playerSt)
                    {
                        //不是可以击爆战车npc的玩家.
                        return;
                    }

                    if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true)
                    {
                        //没有激活任何玩家.
                    }
                    else
                    {
                        if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe))
                        {
                            //战车彩池的彩票积累的不够.
                            return;
                        }
                    }
                }

                if (NpcScript.IsJPBossNpc)
                {
                    //JPBoss是否可以被击爆的判断.
                    if (XkGameCtrl.GetInstance().IsCaiPiaoHuLuePlayerIndex == false && NpcScript.m_IndexPlayerJiBao != playerSt)
                    {
                        //不是可以击爆JPBoss的玩家.
                        return;
                    }

                    if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true)
                    {
                        //没有激活任何玩家.
                    }
                    else
                    {
                        if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss))
                        {
                            //JPBoss彩池的彩票积累的不够.
                            return;
                        }
                    }
                }
            }

            if (IsDeathNpc)
            {
                return;
            }
            IsDeathNpc = true;

            if (IsOpenCameraShake)
            {
                XKPlayerCamera.GetInstanceFeiJi().HandlePlayerCameraShake();
            }

            if (NpcJiFen == NpcJiFenEnum.Boss && BossXieZiScript != null)
            {
                BossXieZiScript.ResetBossXieZiShouBiInfo();
            }

            if (BoxColCom != null)
            {
                BoxColCom.enabled = false;
            }
            CheckSpawnDaoJuCom(playerSt);
            CheckNpcDeathExplode(playerSt);
            CheckHiddenNpcObjArray();

//			bool isAddKillNpcNum = true;
//			if (NpcScript != null && CannonScript != null) {
//				if (NpcScript.GetIsDeathNPC()) {
//					isAddKillNpcNum = false;
//					Debug.Log("Unity:"+"name "+NpcScript.name+", isAddKillNpcNum "+isAddKillNpcNum);
//				}
//			}

            if (!IsYouTongNpc)
            {
                switch (NpcJiFen)
                {
                case NpcJiFenEnum.Boss:
                    if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0)
                    {
                        XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal);
                    }
                    break;

                default:
                    XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal);
                    ShowPiaoFen(playerSt);
                    break;
                }
//				if (isAddKillNpcNum) {
//					switch (NpcJiFen) {
//					case NpcJiFenEnum.Boss:
//						if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0) {
//							XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal);
//						}
//						break;
//					default:
//						XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal);
//						break;
//					}
//				}
            }
            else
            {
                CheckYouTongDamageNpc();
            }

            if (NpcScript != null)
            {
                if (CannonScript != null)
                {
                    CannonScript.OnRemoveCannon(playerSt, 1);
                }

                if (NpcJiFen != NpcJiFenEnum.Boss && NpcScript.GetIsBossNpc())
                {
                    return;
                }
                NpcScript.TriggerRemovePointNpc(1, CannonScript, pAmmoType);

                if (NpcScript.IsCaiPiaoZhanChe)
                {
                    SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState deCaiType = SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe;
                    //彩票boss或战车npc.
                    if (NpcScript.GetIsBossNpc())
                    {
                        deCaiType = SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss;
                    }

                    if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage != null)
                    {
                        XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.SubGameDeCaiValByDeCaiState(playerSt, deCaiType);
                    }
                }
                else
                {
                    //普通npc被击杀.
                    if (XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData != null && DeathExplodePoint != null)
                    {
                        //随机送出正常得彩.
                        XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData.CheckPlayerSongPiaoInfo(playerSt, DeathExplodePoint.position);
                    }
                }
            }
            else if (CannonScript != null)
            {
                CannonScript.OnRemoveCannon(playerSt, 1);
                //炮台类npc被击杀.
                if (XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData != null && DeathExplodePoint != null)
                {
                    //随机送出正常得彩.
                    XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData.CheckPlayerSongPiaoInfo(playerSt, DeathExplodePoint.position);
                }
            }
        }
    }
Пример #18
0
	public void SetAmmoStateJiQiang(PlayerAmmoType ammoType)
	{
		AmmoStateJiQiang = ammoType;
	}
Пример #19
0
	GameObject GetPlayerAmmo(PlayerAmmoType ammoType, Vector3 ammoPos, Quaternion ammoRot, int ammoIndex = 0)
	{
		int max = 0;
		GameObject objAmmo = null;
		GameObject ammoPrefab = PuTongAmmo;
		PlayerAmmoCtrl ammoScript = null;
		PlayerAmmoCtrl ammoPrefabScript = null;
		bool isFindAmmo = false;
		//Debug.Log("Unity:"+"ammoType "+ammoType+", ammoIndex "+ammoIndex+", GetPlayerAmmo");
		switch (ammoType) {
		case PlayerAmmoType.PuTongAmmo:
			max = AmmoList_TK.Count;
			for (int i = 0; i < max; i++) {
				if (!AmmoList_TK[i].gameObject.activeSelf) {
					ammoPrefabScript = PuTongAmmo.GetComponent<PlayerAmmoCtrl>();
					if (IsChangChengFire) {
						ammoPrefabScript = ChangChengAmmo.GetComponent<PlayerAmmoCtrl>();
					}

					if (IsQiangJiFire) {
						ammoPrefabScript = QiangJiAmmo.GetComponent<PlayerAmmoCtrl>();
					}

					if (IsHuoLiAllOpen) {
						ammoPrefabScript = AmmoHuoLiOpenJQ.GetComponent<PlayerAmmoCtrl>();
					}

					ammoScript = AmmoList_TK[i].gameObject.GetComponent<PlayerAmmoCtrl>();
					if (ammoPrefabScript.AmmoIndex == ammoScript.AmmoIndex) {
						objAmmo = AmmoList_TK[i].gameObject;
						isFindAmmo = true;
						break;
					}
				}
			}

			if (!isFindAmmo) {
				objAmmo = null;
			}
			
			if (objAmmo == null) {
				if (IsChangChengFire) {
					ammoPrefab = ChangChengAmmo;
				}

				if (IsQiangJiFire) {
					ammoPrefab = QiangJiAmmo;
				}

				if (IsHuoLiAllOpen) {
					ammoPrefab = AmmoHuoLiOpenJQ;
				}
				objAmmo = SpawnPlayerAmmo(ammoPrefab, ammoPos, ammoRot);
				HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() );
			}
			break;
		
		case PlayerAmmoType.DaoDanAmmo:
			max = AmmoDaoDanList_TK.Count;
			for (int i = 0; i < max; i++) {
				if (!AmmoDaoDanList_TK[i].gameObject.activeSelf) {
					ammoPrefabScript = DaoDanZPAmmo.GetComponent<PlayerAmmoCtrl>();
					if (IsHuoLiAllOpen) {
						ammoPrefabScript = AmmoHuoLiOpenZP.GetComponent<PlayerAmmoCtrl>();
					}
					
					ammoScript = AmmoDaoDanList_TK[i].gameObject.GetComponent<PlayerAmmoCtrl>();
					if (ammoPrefabScript.AmmoIndex == ammoScript.AmmoIndex) {
						objAmmo = AmmoDaoDanList_TK[i].gameObject;
						isFindAmmo = true;
						break;
					}
				}
			}
			
			if (!isFindAmmo) {
				objAmmo = null;
			}
			
			if (objAmmo == null) {
				ammoPrefab = DaoDanZPAmmo;
				if (IsHuoLiAllOpen) {
					ammoPrefab = AmmoHuoLiOpenZP;
				}

				objAmmo = SpawnPlayerAmmo(ammoPrefab, ammoPos, ammoRot);
				HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() );
			}
			break;

		/*case PlayerAmmoType.GaoBaoAmmo:
			max = AmmoGaoBaoList_TK.Count;
			for (int i = 0; i < max; i++) {
				if (!AmmoGaoBaoList_TK[i].gameObject.activeSelf) {
					objAmmo = AmmoGaoBaoList_TK[i].gameObject;
					break;
				}
			}

			if (objAmmo == null) {
				objAmmo = SpawnPlayerAmmo(GaoBaoDanAmmo, ammoPos, ammoRot);
				HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() );
			}
			break;*/
			
		case PlayerAmmoType.SanDanAmmo:
			max = AmmoSanDanList_TK.Count;
			for (int i = 0; i < max; i++) {
				if (!AmmoSanDanList_TK[i].gameObject.activeSelf) {
					if (ammoIndex == 1) {
						ammoPrefabScript = AmmoSanDanZP.GetComponent<PlayerAmmoCtrl>();
					}
					ammoScript = AmmoSanDanList_TK[i].gameObject.GetComponent<PlayerAmmoCtrl>();

					if (ammoPrefabScript.AmmoIndex == ammoScript.AmmoIndex) {
						objAmmo = AmmoSanDanList_TK[i].gameObject;
						isFindAmmo = true;
						break;
					}
				}
			}

			if (!isFindAmmo) {
				objAmmo = null;
			}

			if (objAmmo == null) {
				if (ammoIndex == 1) {
					objAmmo = SpawnPlayerAmmo(AmmoSanDanZP, ammoPos, ammoRot);
				}
				HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() );
			}
			break;
			
		/*case PlayerAmmoType.GenZongAmmo:
			max = AmmoGenZongDanList_TK.Count;
			for (int i = 0; i < max; i++) {
				if (!AmmoGenZongDanList_TK[i].gameObject.activeSelf) {
					objAmmo = AmmoGenZongDanList_TK[i].gameObject;
					break;
				}
			}
			
			if (objAmmo == null) {
				objAmmo = SpawnPlayerAmmo(GenZongDanAmmo, ammoPos, ammoRot);
				HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() );
			}
			break;*/

		case PlayerAmmoType.PaiJiPaoAmmo:
			max = AmmoPaiJiPaoList_TK.Count;
			for (int i = 0; i < max; i++) {
				if (!AmmoPaiJiPaoList_TK[i].gameObject.activeSelf) {
					objAmmo = AmmoPaiJiPaoList_TK[i].gameObject;
					break;
				}
			}
			
			if (objAmmo == null) {
				objAmmo = SpawnPlayerAmmo(PaiJiPaoAmmo, ammoPos, ammoRot);
				HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() );
			}
			break;

		case PlayerAmmoType.ChuanTouAmmo:
			max = AmmoChuanTouDanList_TK.Count;
			for (int i = 0; i < max; i++) {
				if (!AmmoChuanTouDanList_TK[i].gameObject.activeSelf) {
					objAmmo = AmmoChuanTouDanList_TK[i].gameObject;
					break;
				}
			}
			
			if (objAmmo == null) {
				objAmmo = SpawnPlayerAmmo(ChuanTouDanAmmo, ammoPos, ammoRot);
				HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() );
			}
			break;
			
		/*case PlayerAmmoType.JianSuAmmo:
			max = AmmoJianSuDanList_TK.Count;
			for (int i = 0; i < max; i++) {
				if (!AmmoJianSuDanList_TK[i].gameObject.activeSelf) {
					objAmmo = AmmoJianSuDanList_TK[i].gameObject;
					break;
				}
			}
			
			if (objAmmo == null) {
				objAmmo = SpawnPlayerAmmo(JianSuDanAmmo, ammoPos, ammoRot);
				HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() );
			}
			break;*/
		}

		if (objAmmo != null) {
			objAmmo.transform.position = ammoPos;
			objAmmo.transform.rotation = ammoRot;
		}
		return objAmmo;
	}
Пример #20
0
    GameObject GetPlayerAmmo(PlayerAmmoType ammoType, Vector3 ammoPos, Quaternion ammoRot)
    {
        int        max     = 0;
        GameObject objAmmo = null;

        switch (ammoType)
        {
        case PlayerAmmoType.PuTongAmmo:
            if (PlayerStEnum == PlayerTypeEnum.FeiJi)
            {
                max = AmmoList.Count;
                for (int i = 0; i < max; i++)
                {
                    if (!AmmoList[i].gameObject.activeSelf)
                    {
                        objAmmo = AmmoList[i].gameObject;
                        break;
                    }
                }
            }
            else if (PlayerStEnum == PlayerTypeEnum.TanKe)
            {
                max = AmmoList_TK.Count;
                for (int i = 0; i < max; i++)
                {
                    if (!AmmoList_TK[i].gameObject.activeSelf)
                    {
                        objAmmo = AmmoList_TK[i].gameObject;
                        break;
                    }
                }
            }

            if (objAmmo == null)
            {
                objAmmo = SpawnPlayerAmmo(PuTongAmmo, ammoPos, ammoRot);
                HandleAmmoList(objAmmo.GetComponent <PlayerAmmoCtrl>());
            }
            break;

        case PlayerAmmoType.GaoBaoAmmo:
            if (PlayerStEnum == PlayerTypeEnum.FeiJi)
            {
                max = AmmoGaoBaoList.Count;
                for (int i = 0; i < max; i++)
                {
                    if (!AmmoGaoBaoList[i].gameObject.activeSelf)
                    {
                        objAmmo = AmmoGaoBaoList[i].gameObject;
                        break;
                    }
                }
            }
            else if (PlayerStEnum == PlayerTypeEnum.TanKe)
            {
                max = AmmoGaoBaoList_TK.Count;
                for (int i = 0; i < max; i++)
                {
                    if (!AmmoGaoBaoList_TK[i].gameObject.activeSelf)
                    {
                        objAmmo = AmmoGaoBaoList_TK[i].gameObject;
                        break;
                    }
                }
            }

            if (objAmmo == null)
            {
                objAmmo = SpawnPlayerAmmo(GaoBaoDanAmmo, ammoPos, ammoRot);
                HandleAmmoList(objAmmo.GetComponent <PlayerAmmoCtrl>());
            }
            break;
        }

        if (objAmmo != null)
        {
            Transform tranAmmo = objAmmo.transform;
            tranAmmo.position = ammoPos;
            tranAmmo.rotation = ammoRot;
        }
        return(objAmmo);
    }
Пример #21
0
    internal void CheckPlayerBaoJiDengJi(PlayerAmmoType ammoType, PlayerEnum indexPlayer, XKNpcHealthCtrl npcHealth)
    {
        int indexVal = (int)indexPlayer - 1;

        if (indexVal >= 0 && indexVal <= 3)
        {
            if (m_TestBaoJiangData != null)
            {
                if (m_TestBaoJiangData.IsOpenTest == true)
                {
                    if (m_TestBaoJiangData.IndexBaoJi >= 0 && m_TestBaoJiangData.IndexBaoJi <= 3)
                    {
                        //测试暴击数据信息.
                        indexVal = m_TestBaoJiangData.IndexBaoJi;
                        m_PlayerBaoJiDt[indexVal].BaoJiDengJi = indexVal;
                        return;
                    }
                }
            }

            switch (ammoType)
            {
            case PlayerAmmoType.DaoDanAmmo:
            case PlayerAmmoType.PaiJiPaoAmmo:
            case PlayerAmmoType.ChuanTouAmmo:
            case PlayerAmmoType.SanDanAmmo:
            case PlayerAmmoType.ChongJiBoAmmo:
            {
                if (Time.time - m_PlayerBaoJiDt[indexVal].TimeBaoJi > 0.05f)
                {
                    //玩家导弹暴击间隔时间必须大于导弹发射的冷却时间.
                    if (npcHealth != null && npcHealth.GetIsDaiJinQuanNpc() == true)
                    {
                        //只有代金券Npc才可以被暴击.
                        if (Time.time - m_PlayerBaoJiDt[indexVal].TimeBaoJi <= m_TimeBaoJi)
                        {
                            //暴击间隔时间必须小于设定数值.
                            m_PlayerBaoJiDt[indexVal].ShiWuCount = 0;
                            if (m_PlayerBaoJiDt[indexVal].BaoJiDengJi < 3)
                            {
                                //最高4档.
                                m_PlayerBaoJiDt[indexVal].BaoJiDengJi++;
                            }

                            if (m_PlayerBaoJiDt[indexVal].BaoJiDengJi > 3)
                            {
                                m_PlayerBaoJiDt[indexVal].BaoJiDengJi = 3;
                            }
                        }
                        else
                        {
                            m_PlayerBaoJiDt[indexVal].ShiWuCount++;
                        }
                        //SSDebug.LogWarning("npcHealth ===================== " + npcHealth
                        //    + ", BaoJiDengJi ==== " + m_PlayerBaoJiDt[indexVal].BaoJiDengJi
                        //    + ", ShiWuCount ==== " + m_PlayerBaoJiDt[indexVal].ShiWuCount
                        //    + ", time ==== " + Time.time.ToString("f3"));

                        m_PlayerBaoJiDt[indexVal].TimeBaoJi = Time.time;
                        if (m_PlayerBaoJiDt[indexVal].ShiWuCount >= 1)
                        {
                            //失误次数超过n次重置暴击等级信息.
                            //暴击失效.
                            m_PlayerBaoJiDt[indexVal].Reset();
                        }
                    }
                }
                break;
            }
            }
        }
    }
Пример #22
0
    public void OnDamageNpc(PlayerAmmoType state, PlayerEnum playerSt)
    {
        if (IsDeathNpc)
        {
            return;
        }

        if (NpcScript == null || (NpcScript != null && !NpcScript.GetIsWuDi()))
        {
            switch (state)
            {
            case PlayerAmmoType.PuTongAmmo:
                PuTongAmmoCount++;
                break;

            case PlayerAmmoType.GaoBaoAmmo:
                GaoBaoAmmoCount++;
//				Debug.Log(gameObject.name+":: GaoBaoAmmoCount "+GaoBaoAmmoCount+", MaxGaoBaoAmmo "+MaxGaoBaoAmmo
//				          +", playerSt "+playerSt);
                break;

            case PlayerAmmoType.DaoDanAmmo:
                DaoDanAmmoCount++;
//				Debug.Log(gameObject.name+":: DaoDanAmmoCount "+MaxDaoDanAmmo+", MaxGaoBaoAmmo "+MaxDaoDanAmmo
//				          +", playerSt "+playerSt);
                break;
            }
        }

        if (NpcShouJiFanKui != null)
        {
            NpcShouJiFanKui.PlayNpcDamageEvent();
        }

        AmmoHurtCount++;
        if (MaxAmmoHurtLiZi > 0 && AmmoHurtCount >= MaxAmmoHurtLiZi)
        {
            if (HurtLiZiObj != null && !HurtLiZiObj.activeSelf)
            {
                HurtLiZiObj.SetActive(true);
            }
        }

        int puTongAmmoNum = MaxPuTongAmmo;         //单机单人.

        if (XkGameCtrl.GameModeVal == GameMode.LianJi &&
            XkPlayerCtrl.PlayerTranFeiJi != null &&
            XkPlayerCtrl.PlayerTranTanKe != null)
        {
            if (XkGameCtrl.IsActivePlayerOne && XkGameCtrl.IsActivePlayerTwo)
            {
                puTongAmmoNum = LJMaxPuTongAmmoSR;                 //联机双人.
            }
            else
            {
                puTongAmmoNum = LJMaxPuTongAmmoSR;                 //联机单人.
            }
        }
        else
        {
            if (XkGameCtrl.IsActivePlayerOne && XkGameCtrl.IsActivePlayerTwo)
            {
                puTongAmmoNum = MaxPuTongAmmoSR;                 //单机双人.
            }
        }

        if (PuTongAmmoCount >= puTongAmmoNum ||
            GaoBaoAmmoCount >= MaxGaoBaoAmmo ||
            DaoDanAmmoCount >= MaxDaoDanAmmo)
        {
            if (IsDeathNpc)
            {
                return;
            }
            IsDeathNpc = true;
            CheckHiddenNpcObjArray();

            bool isAddKillNpcNum = true;
            if (NpcScript != null && CannonScript != null)
            {
                if (NpcScript.GetIsDeathNPC())
                {
                    isAddKillNpcNum = false;
                }
            }

            if (!IsYouTongNpc)
            {
                if (Network.peerType != NetworkPeerType.Server)
                {
                    if (isAddKillNpcNum)
                    {
                        XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen);
                    }
                    XkGameCtrl.GetInstance().AddYouLiangDian(YouLiangDian, playerSt);

                    if (YouLiangDianUICtrl.GetInstance() != null)
                    {
                        YouLiangDianUICtrl.GetInstance().HandleNpcYouLiangDian(YouLiangDian, transform);
                    }
                }
            }
            else
            {
                if (playerSt != PlayerEnum.Null)
                {
                    CheckYouTongDamageNpc();
                }
            }

            if (NpcScript != null)
            {
                if (CannonScript != null)
                {
                    CannonScript.OnRemoveCannon(playerSt, 1);
                }
                NpcScript.TriggerRemovePointNpc(1, CannonScript);
            }
            else if (CannonScript != null)
            {
                CannonScript.OnRemoveCannon(playerSt, 1);
            }
        }
    }
Пример #23
0
	void HandleAmmoList(PlayerAmmoCtrl scriptAmmo)
	{
		PlayerAmmoType ammoType = scriptAmmo.AmmoType;
		switch (ammoType) {
		case PlayerAmmoType.PuTongAmmo:
			if (AmmoList_TK.Contains(scriptAmmo)) {
				return;
			}
			AmmoList_TK.Add(scriptAmmo);
			break;

		case PlayerAmmoType.DaoDanAmmo:
			if (AmmoDaoDanList_TK.Contains(scriptAmmo)) {
				return;
			}
			AmmoDaoDanList_TK.Add(scriptAmmo);
			break;

		case PlayerAmmoType.GaoBaoAmmo:
			if (AmmoGaoBaoList_TK.Contains(scriptAmmo)) {
				return;
			}
			AmmoGaoBaoList_TK.Add(scriptAmmo);
			break;
			
		case PlayerAmmoType.SanDanAmmo:
			if (AmmoSanDanList_TK.Contains(scriptAmmo)) {
				return;
			}
			AmmoSanDanList_TK.Add(scriptAmmo);
			break;
			
		case PlayerAmmoType.GenZongAmmo:
			if (AmmoGenZongDanList_TK.Contains(scriptAmmo)) {
				return;
			}
			AmmoGenZongDanList_TK.Add(scriptAmmo);
			break;

		case PlayerAmmoType.PaiJiPaoAmmo:
			if (AmmoPaiJiPaoList_TK.Contains(scriptAmmo)) {
				return;
			}
			AmmoPaiJiPaoList_TK.Add(scriptAmmo);
			break;
			
		case PlayerAmmoType.ChuanTouAmmo:
			if (AmmoChuanTouDanList_TK.Contains(scriptAmmo)) {
				return;
			}
			AmmoChuanTouDanList_TK.Add(scriptAmmo);
			break;
			
		case PlayerAmmoType.JianSuAmmo:
			if (AmmoJianSuDanList_TK.Contains(scriptAmmo)) {
				return;
			}
			AmmoJianSuDanList_TK.Add(scriptAmmo);
			break;
		}
	}