예제 #1
0
    public int GetCorrectCount(PlayerEnum player)
    {
        if (_player != player)
        {
            return -1;
        }
        int correctCount = 0;
        for (int i = 0; i < _organs.Length && i < _correctResult.Length; ++i)
        {
            if (_organs[i]._organType == _correctResult[i])
            {
                correctCount++;
            }
        }

		if (correctCount == 4) 
		{
			SpawnToken ((int)player);
		}
        return correctCount;
    }
예제 #2
0
 void SetPlayerEnum(int num)
 {
     if(num == 0)
     {
         playerNum = PlayerEnum.Player1;
     } else if (num == 1)
     {
         playerNum = PlayerEnum.Player2;
     }
     else if (num == 2)
     {
         playerNum = PlayerEnum.Player3;
     }
     else if (num == 3)
     {
         playerNum = PlayerEnum.Player4;
     } else
     {
         playerNum = PlayerEnum.empty;
     }
 }
    public void OnRemoveCannon(PlayerEnum playerSt, int key)
    {
        if (IsDeathNpc)
        {
            return;
        }
        IsDeathNpc = true;

        //ClearNpcAmmoList();
        if (key == 1)
        {
            //XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFenEnum.CheLiang);
            if (DeathExplode != null)
            {
                if (!DeathExplode.activeSelf)
                {
                    DeathExplode.SetActive(true);
                }
                GameObject objExplode = null;
                objExplode = (GameObject)Instantiate(DeathExplode, DeathExplodePoint.position, DeathExplodePoint.rotation);
                objExplode.transform.parent = XkGameCtrl.NpcAmmoArray;
                XkGameCtrl.CheckObjDestroyThisTimed(objExplode);
            }
        }
        XkGameCtrl.GetInstance().RemoveNpcTranFromList(CannonTran);

        float timeVal = 0f;

        if (DaPaoHiddenArray.Length <= 0)
        {
            gameObject.SetActive(false);
            ResetCannonInfo();
            //Destroy(gameObject);
        }
        else
        {
            int max = DaPaoHiddenArray.Length;
            for (int i = 0; i < max; i++)
            {
                if (DaPaoHiddenArray[i] != null)
                {
                    DaPaoHiddenArray[i].SetActive(false);
                }
            }
            timeVal = 3f;
        }

        if (IsHiddenAmmoSpawnPoint)
        {
            ResetCannonInfo();
        }

        if (DaPaoCtrlScript == null)
        {
            DaPaoCtrlScript = GetComponentInParent <XKDaPaoCtrl>();
            //if (DaPaoCtrlScript != null) {
            //Debug.Log("find XKDaPaoCtrl script...");
            //}
        }

        if (key == 1 && DaPaoCtrlScript != null && NpcMoveScript == null)
        {
            //Debug.Log("XKDaPaoCtrl -> OnRemoveCannon...");
            DaPaoCtrlScript.OnRemoveCannon(PlayerEnum.Null, 1, timeVal);
        }
    }
예제 #4
0
        /// <see cref="IMinimapBackgroundJob.Execute"/>
        public void Execute()
        {
            if (this.isDisposed)
            {
                throw new ObjectDisposedException("MinimapScanner");
            }

            /// Download the buffers from the graphics device for modification.
            this.fowBuffer.Download();
            this.entitiesBuffer.Download();
            this.attackSignalsBuffer.Download();

            /// Render the pixel informations into the buffers.
            IUIRenderContext fowBufferContext           = UIRoot.Instance.GraphicsPlatform.SpriteManager.CreateRenderContext(this.fowBuffer);
            IUIRenderContext entitiesBufferContext      = UIRoot.Instance.GraphicsPlatform.SpriteManager.CreateRenderContext(this.entitiesBuffer);
            IUIRenderContext attackSignalsBufferContext = UIRoot.Instance.GraphicsPlatform.SpriteManager.CreateRenderContext(this.attackSignalsBuffer);

            for (int row = 0; row < this.fowBuffer.Size.Y; row++)
            {
                for (int col = 0; col < this.fowBuffer.Size.X; col++)
                {
                    /// Render the FOW-status of the current pixel into the FOW-buffer.
                    if (this.pixelInfoArray[col, row].FOWStatus == FOWTypeEnum.Full)
                    {
                        fowBufferContext.RenderSprite(this.blackBrush.Value, new RCIntVector(col, row));
                    }
                    else if (this.pixelInfoArray[col, row].FOWStatus == FOWTypeEnum.None)
                    {
                        fowBufferContext.RenderSprite(this.transparentBrush.Value, new RCIntVector(col, row));
                    }
                    else if (this.pixelInfoArray[col, row].FOWStatus == FOWTypeEnum.Partial)
                    {
                        fowBufferContext.RenderSprite((col + row) % 2 == 0 ? this.grayBrush.Value : this.transparentBrush.Value, new RCIntVector(col, row));
                    }

                    /// Render the entity indicator and the attack signal of the current pixel into the entity indicator buffer
                    /// and the attack signals buffer.
                    if (this.pixelInfoArray[col, row].EntityIndicatorType == MinimapPixelInfo.EntityIndicatorTypeEnum.None)
                    {
                        /// No entity, no attack signal.
                        entitiesBufferContext.RenderSprite(this.transparentBrush.Value, new RCIntVector(col, row));
                        attackSignalsBufferContext.RenderSprite(this.transparentBrush.Value, new RCIntVector(col, row));
                    }
                    else if (this.pixelInfoArray[col, row].EntityIndicatorType == MinimapPixelInfo.EntityIndicatorTypeEnum.Friendly)
                    {
                        /// Friendly entity, no attack signal.
                        entitiesBufferContext.RenderSprite(this.friendlyEntityBrush.Value, new RCIntVector(col, row));
                        attackSignalsBufferContext.RenderSprite(this.transparentBrush.Value, new RCIntVector(col, row));
                    }
                    else if (this.pixelInfoArray[col, row].EntityIndicatorType == MinimapPixelInfo.EntityIndicatorTypeEnum.AttackedFriendly)
                    {
                        /// Friendly entity, attack signal.
                        entitiesBufferContext.RenderSprite(this.friendlyEntityBrush.Value, new RCIntVector(col, row));
                        attackSignalsBufferContext.RenderSprite(this.attackSignalBrush.Value, new RCIntVector(col, row));
                    }
                    else if (this.pixelInfoArray[col, row].EntityIndicatorType == MinimapPixelInfo.EntityIndicatorTypeEnum.NonFriendly)
                    {
                        /// Non-friendly entity, no attack signal.
                        PlayerEnum owner = this.pixelInfoArray[col, row].EntityOwner;
                        entitiesBufferContext.RenderSprite(this.entityBrushes[owner].Value, new RCIntVector(col, row));
                        attackSignalsBufferContext.RenderSprite(this.transparentBrush.Value, new RCIntVector(col, row));
                    }
                    else
                    {
                        /// Impossible case -> crash!
                        throw new InvalidOperationException("Impossible case happened!");
                    }
                }
            }
            UIRoot.Instance.GraphicsPlatform.SpriteManager.CloseRenderContext(this.fowBuffer);
            UIRoot.Instance.GraphicsPlatform.SpriteManager.CloseRenderContext(this.entitiesBuffer);
            UIRoot.Instance.GraphicsPlatform.SpriteManager.CloseRenderContext(this.attackSignalsBuffer);

            /// Upload the modified buffers to the graphics device.
            this.fowBuffer.Upload();
            this.entitiesBuffer.Upload();
            this.attackSignalsBuffer.Upload();
        }
 /// <summary>
 /// 重新开始出票.
 /// </summary>
 void PcvrRestartPrintCaiPiao(PlayerEnum indexPlayer)
 {
     //这里添加pcvr重新出票的代码.
     pcvr.GetInstance().RestartPrintCaiPiao(indexPlayer);
 }
예제 #6
0
 private void RecordPlayerMove(int cellID, PlayerEnum currentPlayer)
 {
     storageControllerScript.RecordPlayerMove(cellID, currentPlayer, playersModel);
 }
예제 #7
0
 /***************************
  * END VARAIBLE DECLARATION
  * *************************/
 // Update is called once per frame
 void Update()
 {
     #region UPDATE
     playerPos = gameObject.transform.position;
     switch(currentState)
     {
         case(PlayerEnum.GAME):
             // GAME State
             #region GAME
             if(f_currentHP <= 0)
             {
                 currentState = PlayerEnum.DEAD;
             }
             Debug.Log ("currentState: " + currentState.ToString());
             //mouse.SendMessage("LockMouse");
             playerInput();
             break;
             #endregion GAME
         case(PlayerEnum.MENU): 	// MENU State
             #region MENU
             Debug.Log ("currentState: " + currentState.ToString ());
             //Unlock mouse
             //Display Menu
             if(!b_InMenu)
             {
                 currentState = PlayerEnum.GAME;
             }
             //Player Input for Menu controls
             break;
             #endregion MENU
         case(PlayerEnum.MAP): // MAP State
             #region MAP
             Debug.Log ("currentState: " + currentState.ToString ());
             //Unlock Mouse
             //mouse.SendMessage("UnlockMouse");
             Debug.Log("Displaying Map");
             //Display Map Overlay
             if(Input.GetButtonDown("Map"))
             {
                 Debug.Log ("Closing Map");
                 currentState = PlayerEnum.GAME;
             }
             //If TAB is hit, return to Game and hide Map Overlay
             break;
             #endregion MAP
         case(PlayerEnum.DEAD):
             #region DEAD
             //Display screen to retry or quit game
             b_IsAlive = false;
             saveManager.Load();
             b_IsAlive = true;
             currentState = PlayerEnum.GAME;
             Debug.Log ("Current State: " + currentState.ToString());
             break;
             #endregion DEAD
         default:
             #region DEFAULT
             Debug.Log ("Error! Invalid State!");
             //Load Retry/EndGame Menu options
             break;
             #endregion DEFAULT
     } // End of Switch
     #endregion UPDATE
 }
 /// <summary>
 /// 开始打印彩票.
 /// </summary>
 void StartPrintCaiPiao(PlayerEnum indexPlayer)
 {
     pcvr.GetInstance().StartPrintPlayerCaiPiao(indexPlayer, 1);
 }
예제 #9
0
 public CharacterEnum GetPlayersCharacter(PlayerEnum p)
 {
     switch (p)
     {
         case PlayerEnum.Player1:
             return GetCharacter(p1Class);
         case PlayerEnum.Player2:
             return GetCharacter(p2Class);
         case PlayerEnum.Player3:
             return GetCharacter(p3Class);
         case PlayerEnum.Player4:
             return GetCharacter(p4Class);
         default:
             return GetCharacter(5);
     }
 }
예제 #10
0
	/// <summary>
	/// Create the full command from a subcommand
	/// </summary>
	/// <returns>The command.</returns>
	/// <param name="command">PlayerEnum as the subcommand.</param>
	public static string GetCommand(PlayerEnum command) { return BASE_COMMAND + "." + command.ToString(); }
 public PlayerData(PlayerEnum indexPlayer)
 {
     IndexPlayer = indexPlayer;
 }
 /// <summary>
 /// 给玩家添加分数
 /// </summary>
 internal void AddPlayerFenShu(PlayerEnum indexPlayer, int val)
 {
     FenShu += val;
 }
    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);
            }
        }
    }
예제 #14
0
    private void SpawnGamePiece(GameObject gamePiece, GameObject playerSpawnArea, int creationIndex, PlayerEnum player, string id)
    {
        var piece = Instantiate(gamePiece, GetSpawnLocation(creationIndex, playerSpawnArea), Quaternion.identity);

        scaleGamePiece(creationIndex, piece);
        if (creationIndex == 0)
        {
            piece.transform.position = new Vector3(piece.transform.position.x - .2f, piece.transform.position.y, piece.transform.position.z);
        }
        piece.transform.SetParent(playerSpawnArea.transform);
        var gamePieceInfo = piece.GetComponent <GamePiece>();

        gamePieceInfo.SetSize(6 - creationIndex);
        gamePieceInfo.SetIsPlayer1(player);
        gamePieceInfo.SetId(id);
    }
예제 #15
0
 private void GameOver(PlayerEnum I)
 {
     GameOverPlayer = I;
     ResetBallParams();
 }
    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);
                //}
            }
        }
    }
예제 #17
0
 void Awake()
 {
     //Get State
     currentState = PlayerEnum.GAME;
     saveManager = GameObject.Find("GameManager").GetComponent<SaveSystem>();
     playerObj = GameObject.FindWithTag("Player");
 }
예제 #18
0
        public PawnAdapter Create(PlayerEnum playerEnum, PictureBox pictureBox)
        {
            PawnBox pawnBox = new PawnBox(playerEnum, PawnTypeEnum.Normal, 0, 0, Color.Black, null, true);

            return(new PawnAdapter(pictureBox, pawnBox));
        }
예제 #19
0
 public PlayerTypeEnum GetTypeOfPlayer(PlayerEnum p)
 {
     switch (p)
     {
         case PlayerEnum.Player1:
             return (PlayerTypeEnum)p1Type;
         case PlayerEnum.Player2:
             return (PlayerTypeEnum)p2Type;
         case PlayerEnum.Player3:
             return (PlayerTypeEnum)p3Type;
         case PlayerEnum.Player4:
             return (PlayerTypeEnum)p4Type;
         default:
             return PlayerTypeEnum.Player;
     }
 }
예제 #20
0
 public static void SetHandAdder(this GameplayTool self, PlayerEnum player)
 {
     Info.HandAdder = player;
 }
예제 #21
0
 public void UpdateCell(int cellID, PlayerEnum currentPlayer)
 {
     board[cellID].GetComponent <CellView>().UpdateCell(currentPlayer);
 }
예제 #22
0
 private void playerInput()
 {
     //Player Input when playing game
     if(Input.GetButtonDown("Map"))
     {
         Debug.Log("Opening Map");
         currentState = PlayerEnum.MAP; // Open map
     }
     if(Input.GetKeyDown("h") && f_currentHP < f_MaxHP && i_CurrUse != 0)
     {
         heal ();
         i_CurrUse--;
     }
     /*if(Input.GetKeyDown ("j") && f_currentHP >= 0) {
         takeDamage(10);
         //If player's health is 0, switch states
     }*/
     if(Input.GetKeyDown ("1"))
     {
         //set equipped item to flashlight to true
         b_Flashlight = true;
         b_Canteen = false;
         b_SunGem = false;
         b_MoonGem = false;
     }
     if(Input.GetKeyDown ("2"))
     {
         //set equipped item to canteen
         b_Flashlight = false;
         b_Canteen = true;
         b_SunGem = false;
         b_MoonGem = false;
     }
     if(Input.GetKeyDown("3") &&  b_SunGemUnlock)
     {
         //set equipped item to sun gemstone
         b_Flashlight = false;
         b_Canteen = false;
         b_SunGem = true;
         b_MoonGem = false;
     }
     if(Input.GetKeyDown("4") && b_MoonGemUnlock)
     {
         //set equipped item to moon gemstone
         b_Flashlight = false;
         b_Canteen = false;
         b_SunGem = false;
         b_MoonGem = true;
     }
     if(Input.GetButtonDown("Menu"))
     {
         if(b_InMenu)
         {
             b_InMenu = false;
             currentState = PlayerEnum.GAME;
         }
         else if(!b_InMenu)
         {
             b_InMenu = true;
             currentState = PlayerEnum.MENU;
         }
     }
 }
예제 #23
0
        /// <summary>
        /// 设置是否显示距抽奖界面.
        /// </summary>
        internal void SetActiveJuChouJiang(PlayerEnum indexPlayer, bool isActive)
        {
            if (isActive == true)
            {
                //玩家分数不够抽奖资格.
                int indexVal = (int)indexPlayer - 1;
                if (juChouJiangUI != null)
                {
                    if (indexVal >= 0 && indexVal < juChouJiangImgArray.Length && juChouJiangImgArray[indexVal] != null)
                    {
                        //给不同玩家设置还差多少分UI.
                        juChouJiangUI.mainTexture = juChouJiangImgArray[indexVal];
                    }
                }

                if (fenShuNumUI != null)
                {
                    if (indexVal >= 0 && indexVal < fenShuAtlasArray.Length && fenShuAtlasArray[indexVal] != null)
                    {
                        for (int i = 0; i < fenShuNumUI.m_UISpriteArray.Length; i++)
                        {
                            if (fenShuNumUI.m_UISpriteArray[i] != null)
                            {
                                //给不同玩家设置还差多少分的数字UI图集.
                                fenShuNumUI.m_UISpriteArray[i].atlas = fenShuAtlasArray[indexVal];
                            }
                        }
                    }

                    //玩家最多差40000分可以获得抽奖.
                    int minChouJiangScore = 40000;
                    if (XkGameCtrl.GetInstance() != null && XkGameCtrl.GetInstance().m_PingJiData != null)
                    {
                        minChouJiangScore = XkGameCtrl.GetInstance().m_PingJiData.GetChouJiangMinScore();
                    }

                    int playerScore = XkGameCtrl.GetPlayerJiFenValue(indexPlayer);
                    //还差多少分数.
                    int haiChaScoreVal = minChouJiangScore - playerScore;
                    if (haiChaScoreVal <= 0)
                    {
                        haiChaScoreVal = 100;
                    }
                    fenShuNumUI.ShowNumUI(haiChaScoreVal);
                }
            }

            if (juChouJiangObj != null)
            {
                //距抽奖还差多少分.
                juChouJiangObj.SetActive(isActive);
            }

            if (gongXiJinRuChouJiangObj != null)
            {
                //恭喜进入抽奖.
                gongXiJinRuChouJiangObj.SetActive(!isActive);
            }

            if (headKuangUI != null)
            {
                int indexVal = (int)indexPlayer - 1;
                if (indexVal >= 0 && indexVal < headKuangImgArray.Length && headKuangImgArray[indexVal] != null)
                {
                    //玩家头像框.
                    headKuangUI.mainTexture = headKuangImgArray[indexVal];
                }
            }
        }
예제 #24
0
 public CPUPlayer(PlayerEnum color)
 {
     this.color   = color;
     this.score   = 2;
     this.isHuman = false;
 }
예제 #25
0
    internal void Init(PlayerEnum indexPlayer, int fenShu)
    {
        SetActive(false);
        m_IndexPlayer = indexPlayer;
        //m_TimeFenShuStart = m_TimeStart = Time.time;
        if (m_PingJiUI == null)
        {
            SSDebug.LogWarning("SSPingJiUI::Init -> m_PingJiUI was null");
            return;
        }

        IsCreateChouJiang   = false;
        m_PlayerPingJiLevel = SSPingJiData.PingJiLevel.D;
        if (XkGameCtrl.GetInstance().m_PingJiData != null)
        {
            m_PlayerPingJiLevel = XkGameCtrl.GetInstance().m_PingJiData.GetPlayerPingJiLevel(fenShu);
        }
        else
        {
            SSDebug.LogWarning("XkGameCtrl.GetInstance().m_PingJiData was null");
        }

        //玩家还差多少分可以进行抽奖控制.
        SSPingJiData.PingJiLevel chouJiangPingJi = SSPingJiData.PingJiLevel.A;
        if (XkGameCtrl.GetInstance() != null && XkGameCtrl.GetInstance().m_PingJiData != null)
        {
            chouJiangPingJi = XkGameCtrl.GetInstance().m_PingJiData.m_ChouJiangPingJi;
        }
        //是否可以抽奖.
        bool isCanChouJiang = m_PlayerPingJiLevel < chouJiangPingJi ? false : true;

        if (m_JuChouJiangDt != null)
        {
            m_JuChouJiangDt.SetActiveJuChouJiang(indexPlayer, !isCanChouJiang);
        }

        //玩家得分控制.
        if (fenShu.ToString().Length > m_FenShuNumUI.m_UISpriteArray.Length)
        {
            fenShu = (int)Mathf.Pow(10, fenShu.ToString().Length) - 1;
        }
        m_PlayerFenShu        = fenShu;
        m_FenShuAnimationData = new FenShuAnimationData(m_TimeFenShuAni, fenShu);

        int indexVal = (int)m_PlayerPingJiLevel;

        if (indexVal < m_PingJiImgArray.Length && m_PingJiImgArray[indexVal] != null)
        {
            //评级信息.
            m_PingJiUI.mainTexture = m_PingJiImgArray[indexVal];
        }
        else
        {
            SSDebug.LogWarning("indexVal or m_PingJiImgArray was wrong");
        }

        if (indexVal < m_PingJiPingYuImgArray.Length && m_PingJiPingYuImgArray[indexVal] != null)
        {
            //评级评语.
            m_PingJiPingYuUI.mainTexture = m_PingJiPingYuImgArray[indexVal];
        }
        else
        {
            SSDebug.LogWarning("indexVal or m_PingJiImgArray was wrong");
        }
        SetPlayerHeadImg();
    }
예제 #26
0
    /// <summary>
    /// 创建随机道具.
    /// </summary>
    public void CreatSuiJiDaoJu(PlayerEnum indexPlayer)
    {
        if (!IsCreatSuiJiDaoJu)
        {
            return;
        }

        int indexVal = (int)indexPlayer - 1;

        if (indexVal < 0 || indexVal > 2)
        {
            return;
        }

        if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_PlayerCoinData[indexVal].XuBiVal <= 0)
        {
            //不是续币玩家.
            return;
        }

        if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.SuiJiDaoJu))
        {
            //随机道具彩池的彩票积累的不够.
            return;
        }

        if (Random.Range(0f, 100f) / 100f > 0.4f)
        {
            //没有随机上产生随机道具.
            return;
        }

        if (XkGameCtrl.GetInstance().GetIsCreateSuiJiDaoJu() == false)
        {
            //产生随机道具的间隔时间未到.
            return;
        }
        UnityLog("CreatSuiJiDaoJu....................");

        GameObject suiJiDaoJuPrefab = XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.GetSuiJiDaoJuPrefab(indexPlayer);

        if (suiJiDaoJuPrefab != null)
        {
            GameObject obj = (GameObject)Instantiate(suiJiDaoJuPrefab, XkGameCtrl.GetInstance().DaoJuArray, transform);
            if (obj != null)
            {
                BuJiBaoCtrl buJiBao = obj.GetComponent <BuJiBaoCtrl>();
                if (buJiBao != null)
                {
                    buJiBao.IsCaiPiaoDaoJu = true;
                    buJiBao.SetIsSpawnDaoJu();
                    buJiBao.DelayRemoveSelf(indexPlayer);
                }

                //SSCaiPiaoSuiJiDaoJu suiJiDaoJu = obj.GetComponent<SSCaiPiaoSuiJiDaoJu>();
                //if (suiJiDaoJu != null)
                //{
                //    suiJiDaoJu.CreatLiZi(indexPlayer);
                //}
                //else
                //{
                //    UnityLogWarning("CreatSuiJiDaoJu -> SSCaiPiaoSuiJiDaoJu was null..........");
                //}
            }
        }
        else
        {
            UnityLogWarning("CreatSuiJiDaoJu -> suiJiDaoJuPrefab was null!");
        }
    }
예제 #27
0
 public void AddPlayerYouLiangDian(PlayerEnum indexPlayer)
 {
     XkGameCtrl.GetInstance().AddPlayerYouLiang(YouLiangDianAddYL, indexPlayer);         //Add Player YouLiang
 }
예제 #28
0
 private void GetCurrentPlayer()
 {
     CurrentPlayer = playerTurnControllerScript.GetCurrentPlayer();
 }
예제 #29
0
    public void OnDamageNpc(PlayerAmmoType state, PlayerEnum playerSt)
    {
        if (IsKaQiuShaNpc)
        {
            return;
        }

        if (IsDeathNpc)
        {
            return;
        }

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

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

            case PlayerAmmoType.DaoDanAmmo:
                DaoDanAmmoCount++;
                SetNpcAmmoCount(DaoDanAmmoCount, state);
//				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)
            {
                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;                     //单机双人.
                }
            }
        }

        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);
                    YouLiangDianUICtrl.GetInstance().HandleNpcYouLiangDian(YouLiangDian, transform);
                }
            }
            else
            {
                CheckYouTongDamageNpc();
            }

            if (NpcScript != null)
            {
                if (CannonScript != null)
                {
                    CannonScript.OnRemoveCannon(playerSt, 1);
                }
                NpcScript.TriggerRemovePointNpc(1, CannonScript);
            }
            else if (CannonScript != null)
            {
                CannonScript.OnRemoveCannon(playerSt, 1);
            }
        }
    }
예제 #30
0
 public void SetDevice(PlayerEnum controllingPlayer)
 {
     this.device = GameManager.S.players[(int)controllingPlayer].device;
 }
 public IGameEvent StartTurn(int turnNumber, PlayerEnum activePlayer)
 {
     return(new TurnStart(timeProvider.Now, turnNumber, activePlayer));
 }
예제 #32
0
 public void SetCellPlayer(PlayerEnum player, int row, int column)
 {
     Cells[row][column] = player;
 }
예제 #33
0
 public static void SetRoundOwned(this GameplayTool self, PlayerEnum player)
 {
     Gameplay.Info.RoundOwned = player;
 }
    void CheckNpcDeathExplode(PlayerEnum indexPlayer = PlayerEnum.Null)
    {
        if (DeathExplode == null)
        {
            return;
        }


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

            if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage != null)
            {
                int value = XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetPrintCaiPiaoValueByDeCaiState(deCaiType, SSCaiPiaoDataManage.SuiJiDaoJuState.BaoXiang,
                                                                                                                                                    NpcScript.m_DaiJinQuanState);
                if (DeathExplodePoint != null)
                {
                    //Vector3 pos = XkGameCtrl.GetInstance().GetWorldObjToScreenPos(objExplode.transform.position);
                    SSCaiPiaoDataManage.GameCaiPiaoData.DaiJinQuanState daiJinQuanType = NpcScript.m_DaiJinQuanState;
                    SSUIRoot.GetInstance().m_GameUIManage.CreatZhanCheBossCaiPiaoZhuanPan(indexPlayer, value, DeathExplodePoint.position, deCaiType, DeathExplode, daiJinQuanType);
                    //SSCaiPiaoLiZiManage caiPiaoLiZi = objExplode.GetComponent<SSCaiPiaoLiZiManage>();
                    //if (caiPiaoLiZi != null)
                    //{
                    //    caiPiaoLiZi.ShowNumUI(value, indexPlayer);
                    //}
                    //else
                    //{
                    //    Debug.LogWarning("CheckNpcDeathExplode -> caiPiaoLiZi was null.................");
                    //}
                    if (deCaiType == SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss)
                    {
                        //只给boss产生爆炸粒子.
                        GameObject objExplode = (GameObject)Instantiate(DeathExplode, DeathExplodePoint.position, DeathExplodePoint.rotation);
                        objExplode.transform.parent = XkGameCtrl.NpcAmmoArray;
                        XkGameCtrl.CheckObjDestroyThisTimed(objExplode);

                        SSCaiPiaoLiZiManage caiPiaoLiZi = objExplode.GetComponent <SSCaiPiaoLiZiManage>();
                        if (caiPiaoLiZi != null)
                        {
                            caiPiaoLiZi.ShowNumUI(value, indexPlayer);
                        }
                        else
                        {
                            Debug.LogWarning("CheckNpcDeathExplode -> caiPiaoLiZi was null.................");
                        }
                    }
                }
            }

            //if (deCaiType == SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe)
            //{
            //    if (XkGameCtrl.GetInstance().m_CaiPiaoFlyData != null)
            //    {
            //        //初始化飞出的彩票逻辑.
            //        XkGameCtrl.GetInstance().m_CaiPiaoFlyData.InitCaiPiaoFly(transform.position, indexPlayer, SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe);
            //    }
            //    else
            //    {
            //        Debug.LogWarning("CreatLiZi -> m_CaiPiaoFlyData was null............");
            //    }
            //}
            //else if (deCaiType == SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss)
            //{
            //    if (SSUIRoot.GetInstance().m_GameUIManage != null)
            //    {
            //        SSUIRoot.GetInstance().m_GameUIManage.InitCaiPiaoAnimation(XkGameCtrl.GetInstance().m_CaiPiaoFlyData.m_JPBossCaiPiaoFlyDt.TimeLeiJiaVal, indexPlayer);
            //    }

            //    if (XkGameCtrl.GetInstance().m_CaiPiaoFlyData != null)
            //    {
            //        //初始化烟花粒子的产生.
            //        XkGameCtrl.GetInstance().m_CaiPiaoFlyData.InitPlayCaiPiaoYanHua();
            //    }
            //    else
            //    {
            //        Debug.LogWarning("CreatLiZi -> m_CaiPiaoFlyData was null............");
            //    }
            //}
        }
        else
        {
            GameObject objExplode = (GameObject)Instantiate(DeathExplode, DeathExplodePoint.position, DeathExplodePoint.rotation);
            objExplode.transform.parent = XkGameCtrl.NpcAmmoArray;
            XkGameCtrl.CheckObjDestroyThisTimed(objExplode);
        }
    }
예제 #35
0
 public static void SetCaster(this GameplayTool self, PlayerEnum player)
 {
     Gameplay.Info.Caster = player;
 }
    /// <summary>
    /// 检测玩家送票信息.
    /// </summary>
    public void CheckPlayerSongPiaoInfo(PlayerEnum indexPlayer, Vector3 pos)
    {
        if (XKTriggerYuLeCtrl.IsActiveYuLeTrigger == true)
        {
            //娱乐触发器激活后不去送基础彩票.
            return;
        }

        int indexVal = (int)indexPlayer - 1;

        if (indexVal < 0 || indexVal > 2)
        {
            UnityLogWarning("CheckPlayerSongPiaoInfo -> indexVal was wrong! indexVal ======= " + indexVal);
            return;
        }

        if (m_JiChuCaiPiaoData[indexVal].IsCanSongPiao == false)
        {
            return;
        }

        if (m_JiChuCaiPiaoData[indexVal].JiChuCaiPiaoVal <= 0)
        {
            return;
        }

        int randVal = Random.Range(0, 100) % 2;

        if (m_JiChuCaiPiaoData[indexVal].SongPiaoCount == m_BiDingSongPiaoCountFirst ||
            m_JiChuCaiPiaoData[indexVal].SongPiaoCount == m_BiDingSongPiaoCountLast)
        {
            //必定送票.
            randVal = 0;
        }

        if (m_JiChuCaiPiaoData[indexVal].SongPiaoCount < m_BiDingSongPiaoCountLast)
        {
            if (m_JiChuCaiPiaoData[indexVal].JiChuCaiPiaoVal <= 1)
            {
                //基础彩票留下1张到最后一次送出.
                return;
            }
        }

        if (randVal != 0)
        {
            return;
        }

        //送出彩票数量.
        int   chuPiaoVal = 1;
        float randGaiLv  = Random.Range(0f, 100f) / 100f;

        if (randGaiLv > m_SongPiaoGaiLv01)
        {
            chuPiaoVal = 2;
        }

        if (m_JiChuCaiPiaoData[indexVal].JiChuCaiPiaoVal < chuPiaoVal)
        {
            if (m_JiChuCaiPiaoData[indexVal].SongPiaoCount < m_BiDingSongPiaoCountLast)
            {
                //给最后一次留1张票.
                chuPiaoVal = m_JiChuCaiPiaoData[indexVal].JiChuCaiPiaoVal - 1;
            }
            else
            {
                //最后一次送出剩余基础彩票.
                chuPiaoVal = m_JiChuCaiPiaoData[indexVal].JiChuCaiPiaoVal;
            }
        }

        if (chuPiaoVal <= 0)
        {
            UnityLogWarning("CheckPlayerSongPiaoInfo -> jiChuCaiPiao was out over..........");
            return;
        }
        UnityLog("CheckPlayerSongPiaoInfo -> chuPiaoVal ====== " + chuPiaoVal
                 + ", count == " + m_JiChuCaiPiaoData[indexVal].SongPiaoCount
                 + ", time == " + Time.time);

        //进入下一周期计时.
        m_JiChuCaiPiaoData[indexVal].IsCanSongPiao    = false;
        m_JiChuCaiPiaoData[indexVal].LastSongPiaoTime = Time.time;
        m_JiChuCaiPiaoData[indexVal].JiChuCaiPiaoVal -= chuPiaoVal;

        if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true)
        {
            //没有激活任何玩家.
        }
        else
        {
            if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage != null)
            {
                //减少玩家正常得彩.
                XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.SubPlayerZhengChangDeCai(indexPlayer, chuPiaoVal);
            }
        }

        //可以送出基础彩票.
        if (XkGameCtrl.GetInstance().m_CaiPiaoFlyData != null &&
            XkGameCtrl.GetInstance().m_CaiPiaoFlyData.m_JiChuCaiPiaoLiZiPrefab != null)
        {
            GameObject obj = (GameObject)Instantiate(XkGameCtrl.GetInstance().m_CaiPiaoFlyData.m_JiChuCaiPiaoLiZiPrefab, XkGameCtrl.PlayerAmmoArray);
            obj.transform.position = pos + (Vector3.up * 2f);

            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(chuPiaoVal, indexPlayer);
                }
                else
                {
                    Debug.LogWarning("CheckPlayerSongPiaoInfo -> caiPiaoLiZi was null.................");
                }
            }

            if (XkGameCtrl.GetInstance().m_CaiPiaoFlyData != null)
            {
                //初始化飞出的彩票逻辑.
                XkGameCtrl.GetInstance().m_CaiPiaoFlyData.InitCaiPiaoFly(obj.transform.position, indexPlayer, SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhengChang);
            }
            else
            {
                Debug.LogWarning("CheckPlayerSongPiaoInfo -> m_CaiPiaoFlyData was null............");
            }
        }
    }
예제 #37
0
 public static void SetSummonersController(this GameplayTool self, PlayerEnum player)
 {
     Info.SummonersController = player;
 }
    /// <summary>
    /// Removes the bu ji bao. key == 0 -> hit TerrainLayer, key == 1 -> PlayerOne, key == 2 -> PlayerTwo.
    /// </summary>
    /// <param name="key">Key.</param>
    public void RemoveBuJiBao(PlayerEnum key, int keyHit = 0)
    {
        if (IsDeath)
        {
            return;
        }
        IsDeath = true;
        CancelInvoke("DelayDestroyBuJiBao");
        if (key != PlayerEnum.Null || keyHit == 1)
        {
            XKGlobalData.GetInstance().PlayAudioHitBuJiBao();
            if (ExplodeObj != null)
            {
                GameObject obj = (GameObject)Instantiate(ExplodeObj, transform.position, transform.rotation);
                XkGameCtrl.CheckObjDestroyThisTimed(obj);
            }

            if (Network.peerType != NetworkPeerType.Server)
            {
                //Add BuJiBao
                switch (BuJiBao)
                {
                case BuJiBaoType.DaoDan:
                    if (keyHit == 1)
                    {
                        XkGameCtrl.GetInstance().AddDaoDanNum(PlayerEnum.PlayerOne);
                        XkGameCtrl.GetInstance().AddDaoDanNum(PlayerEnum.PlayerTwo);
                    }
                    else
                    {
                        XkGameCtrl.GetInstance().AddDaoDanNum(key);
                    }
                    break;

                case BuJiBaoType.GaoBaoDan:
                    if (keyHit == 1)
                    {
                        XkGameCtrl.GetInstance().AddGaoBaoDanNum(PlayerEnum.PlayerOne);
                        XkGameCtrl.GetInstance().AddGaoBaoDanNum(PlayerEnum.PlayerTwo);
                    }
                    else
                    {
                        XkGameCtrl.GetInstance().AddGaoBaoDanNum(key);
                    }
                    break;

                case BuJiBaoType.YouLiang:
                    XkGameCtrl.GetInstance().AddPlayerYouLiang(XkGameCtrl.YouLiangBuJiNum);
                    break;
                }
            }
        }

        if (Network.peerType != NetworkPeerType.Disconnected)
        {
            if (Network.peerType == NetworkPeerType.Client)
            {
//				NetworkViewCom.RPC("BuJiBaoSendRemoveObj", RPCMode.OthersBuffered);
                return;
            }
        }
        DestroyNetObj(gameObject);
    }
예제 #39
0
 public static void SetDrawer(this GameplayTool self, PlayerEnum player)
 {
     Info.Drawer = player;
 }