Beispiel #1
0
    public void OnRemoveCannon(PlayerEnum playerSt, int key)
    {
        if (IsDeathNpc)
        {
            return;
        }
        IsDeathNpc = true;
        XkGameCtrl.GetInstance().RemoveNpcTranFromList(CannonTran);

        if (TimeDestroy <= 0)
        {
            gameObject.SetActive(false);
            ResetCannonInfo();
        }

        if (DaPaoCtrlScript == null)
        {
            DaPaoCtrlScript = GetComponentInParent <XKDaPaoCtrl>();
        }

        if (key == 1 && DaPaoCtrlScript != null && NpcMoveScript == null)
        {
            //Debug.Log("Unity:"+"XKDaPaoCtrl -> OnRemoveCannon...");
            DaPaoCtrlScript.OnRemoveCannon(PlayerEnum.Null, 1, TimeDestroy);
        }
    }
Beispiel #2
0
    void SetOtherPortHuoCheNpcInfo(XKSpawnNpcPoint pointScript, int indexPoint)
    {
        if (Network.peerType != NetworkPeerType.Server)
        {
            return;
        }

        GameObject npcObj = pointScript.GetNpcLoopObj();

        if (pointScript == null || npcObj == null)
        {
            return;
        }

        XKDaPaoCtrl daPaoScript = npcObj.GetComponent <XKDaPaoCtrl>();

        if (daPaoScript != null)
        {
            daPaoScript.SetHuoCheNpcInfo(indexPoint);
        }
        else
        {
            XKNpcMoveCtrl npcScript = npcObj.GetComponent <XKNpcMoveCtrl>();
            if (npcScript != null)
            {
                npcScript.SetHuoCheNpcInfo(indexPoint);
            }
        }
    }
    void StartSpawnNpc()
    {
        if (!enabled || !gameObject.activeSelf)
        {
            return;
        }

        if (ScreenDanHeiCtrl.IsStartGame)
        {
//			if ((XkGameCtrl.GameModeVal == GameMode.DanJiFeiJi && PointType == SpawnPointType.DiMian)
//			    || (XkGameCtrl.GameModeVal == GameMode.DanJiTanKe && PointType == SpawnPointType.KongZhong)) {
//				return;
//			}

//			if (IsDoublePlayer && (!XkGameCtrl.IsActivePlayerOne || !XkGameCtrl.IsActivePlayerTwo)) {
//				return;
//			}

            switch (PlayerNumSt)
            {
            case NpcSpawnType.PlayerNum_2:
                if (XkGameCtrl.PlayerActiveNum < 2)
                {
                    return;
                }
                break;

            case NpcSpawnType.PlayerNum_3:
                if (XkGameCtrl.PlayerActiveNum < 3)
                {
                    return;
                }
                break;

            case NpcSpawnType.PlayerNum_4:
                if (XkGameCtrl.PlayerActiveNum < 4)
                {
                    return;
                }
                break;
            }
        }

        GameObject   obj      = null;
        XKHuoCheCtrl hcScript = NpcObj.GetComponent <XKHuoCheCtrl>();

        if (hcScript != null)
        {
            obj = SpawnPointNpc(NpcObj, transform.position, transform.rotation);
            if (obj == null)
            {
                //Debug.Log("Unity:"+"StartSpawnNpc -> Cannot spawn HuoCheNpc!");
                return;
            }

            obj.transform.parent = XkGameCtrl.NpcObjArray;
            HuoCheScript         = obj.GetComponent <XKHuoCheCtrl>();
            HuoCheScript.SetHuoCheInfo(this);
            //HuoCheScript.StartMoveHuoChe(NpcPath);
            NpcLoopObj = obj;
            return;
        }

        DaPaoScript = NpcObj.GetComponent <XKDaPaoCtrl>();
        if (DaPaoScript != null)
        {
//			Debug.Log("Unity:"+"Spawn Cannon... ");
            obj = SpawnPointNpc(NpcObj, transform.position, transform.rotation);
            if (obj == null)
            {
                //Debug.Log("Unity:"+"StartSpawnNpc -> Cannot spawn DaPaoNpc!");
                return;
            }

            if (!IsHuoCheNpc)
            {
                obj.transform.parent = XkGameCtrl.NpcObjArray;
            }
            else
            {
                obj.transform.parent = transform.parent;
            }

            //XkGameCtrl.GetInstance().AddNpcTranToList(obj.transform);
            DaPaoScript = obj.GetComponent <XKDaPaoCtrl>();
            DaPaoScript.SetSpawnPointScript(this);
            NpcLoopObj = obj;
            return;
        }

        if (IsRemoveSpawnPointNpc)
        {
            return;
        }

        //Debug.Log("Unity:"+"SpawnPointAllNpc...NpcObj is "+NpcObj.name+", SpawnNpcCount "+SpawnNpcCount);
        if (ChildSpawnPoint.Length > 0)
        {
            //spawn fangZhenNpc
            GameObject fangZhenObj = SpawnPointNpc(NpcFangZhen, transform.position, transform.rotation);
            if (fangZhenObj == null)
            {
                //Debug.LogError("Unity:"+"StartSpawnNpc -> Cannot spawn FangZhenNpc! NpcFangZhen "+NpcFangZhen.name);
                //fangZhenObj.name = "null";
                return;
            }
            NpcFangZhenScript = fangZhenObj.GetComponent <XKNpcFangZhenCtrl>();
            //NpcFangZhenScript.ActiveFangZhenNpc();

            XKNpcMoveCtrl npcScript    = null;
            Transform     fangZhenTran = fangZhenObj.transform;
            fangZhenTran.parent = XkGameCtrl.NpcObjArray;
            obj = SpawnPointNpc(NpcObj, transform.position, transform.rotation);
            if (obj == null)
            {
                //Debug.Log("Unity:"+"StartSpawnNpc -> Cannot spawn FangZhenChildNpc --- 1");
                return;
            }

            npcScript = obj.GetComponent <XKNpcMoveCtrl>();
            if (npcScript != null)
            {
                npcScript.ActiveIsFangZhenNpc();
                npcScript.SetNpcSpawnScriptInfo(this);
            }
            obj.transform.parent = fangZhenTran;

            for (int i = 0; i < ChildSpawnPoint.Length; i++)
            {
                obj = SpawnPointNpc(NpcObj, ChildSpawnPoint[i].position, ChildSpawnPoint[i].rotation);
                if (obj == null)
                {
                    //Debug.LogWarning("Unity:"+"StartSpawnNpc -> Cannot spawn FangZhenChildNpc --- index "+i);
                    break;
                }

                npcScript = obj.GetComponent <XKNpcMoveCtrl>();
                if (npcScript != null)
                {
                    npcScript.ActiveIsFangZhenNpc();
                    npcScript.SetNpcSpawnScriptInfo(this);
                }
                obj.transform.parent = fangZhenTran;
            }

            NpcFangZhenScript.SetSpawnNpcInfo(this);
            NpcLoopObj = fangZhenObj;
            return;
        }

//		if (NpcLoopObj != null && SpawnMaxNpc > 1) {
//			if (IsRemoveSpawnPointNpc) {
//				return;
//			}
//
//			XKNpcMoveCtrl npcScript = NpcLoopObj.GetComponent<XKNpcMoveCtrl>();
//			if (npcScript != null && !npcScript.GetIsDeathNPC()) {
//				Invoke("StartSpawnNpc", LoopSpawnTime);
//				return;
//			}
//		}

        if (SpawnNpcCount > 0)
        {
            int maxVal  = NpcSpawnLoop.Length;
            int randVal = Random.Range(0, (maxVal + 1));
            if (randVal == 0)
            {
                obj = SpawnPointNpc(NpcObj, transform.position, transform.rotation);
            }
            else
            {
                randVal = randVal > maxVal ? maxVal : randVal;
                obj     = SpawnPointNpc(NpcSpawnLoop[randVal - 1], transform.position, transform.rotation);
            }
        }
        else
        {
            obj = SpawnPointNpc(NpcObj, transform.position, transform.rotation);
        }

        if (obj == null)
        {
            //Debug.Log("Unity:"+"StartSpawnNpc -> Cannot spawn PuTongNpc!");
            return;
        }

        if (!IsHuoCheNpc)
        {
            obj.transform.parent = XkGameCtrl.NpcObjArray;
        }
        else
        {
            obj.transform.parent = transform.parent;
        }

        NpcScript[SpawnNpcCount] = obj.GetComponent <XKNpcMoveCtrl>();
        if (NpcScript[SpawnNpcCount] != null)
        {
            NpcScript[SpawnNpcCount].SetSpawnNpcInfo(this);
        }
        NpcLoopObj = obj;

        SpawnNpcCount++;
        if (SpawnNpcCount >= SpawnMaxNpc || SpawnMaxNpc <= 1)
        {
            return;
        }
        Invoke("StartSpawnNpc", LoopSpawnTime);
    }
Beispiel #4
0
 public void SetSpawnPointScript(XKDaPaoCtrl daPaoScript)
 {
     DaPaoCtrlScript = daPaoScript;
 }
 public void SetXKDaPaoScript(XKDaPaoCtrl script)
 {
     m_XKDaPaoCom = script;
     NpcNameInfo  = script.name;
 }
    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);
        }
    }
    // Use this for initialization
    void Start()
    {
        if (DeathExplodePoint == null)
        {
            DeathExplodePoint = transform;
        }

        if (AudioCannonFire != null)
        {
            AudioCannonFire.Stop();
        }

        if (SpawnAmmoPoint.Length <= 0)
        {
            Debug.LogWarning("XKCannonCtrl -> SpawnAmmoPoint was wrong!");
            IsOutputError = true;
        }
        else
        {
            for (int i = 0; i < SpawnAmmoPoint.Length; i++)
            {
                if (SpawnAmmoPoint[i] == null)
                {
                    Debug.LogWarning("XKCannonCtrl -> SpawnAmmoPoint was wrong! index = " + i);
                    IsOutputError = true;
                    break;
                }
            }
        }

        if (DaPaoHiddenArray.Length > 0)
        {
            int max = DaPaoHiddenArray.Length;
            for (int i = 0; i < max; i++)
            {
                if (DaPaoHiddenArray[i] == null)
                {
                    Debug.LogWarning("DaPaoHiddenArray was wrong! index is " + i);
                    IsOutputError = true;
                    break;
                }

                XKDaPaoCtrl daPaoScript = DaPaoHiddenArray[i].GetComponent <XKDaPaoCtrl>();
                if (daPaoScript != null)
                {
                    Debug.LogWarning("DaPaoHiddenArray was wrong! name is " + daPaoScript.gameObject.name);
                }
            }
        }

        CosAngleUp   = Mathf.Cos((UpPaoGuanJDVal / 180f) * Mathf.PI);
        CosAngleDown = Mathf.Cos((DownPaoGuanJDVal / 180f) * Mathf.PI);

        CannonTran = transform;
        if (HealthScript == null)
        {
            HealthScript = GetComponent <XKNpcHealthCtrl>();
        }
        if (HealthScript != null)
        {
            HealthScript.SetCannonScript(this);
            IsYouTongNpc = HealthScript.IsYouTongNpc;
        }

        if (SpawnAmmoPoint.Length > 1)
        {
            IsDouGuanDaPao = true;
        }
        DaPaoAmmoLiZiObj = new GameObject[SpawnAmmoPoint.Length];
        InitNpcAmmoList();

        NpcMoveScript = GetComponentInParent <XKNpcMoveCtrl>();
        if (NpcMoveScript != null && IsHiddenAmmoSpawnPoint)
        {
            NpcMoveScript.SetIsRemoveNpcObj();
        }

        if (IsOutputError)
        {
            GameObject obj = null;
            obj.name = "null";
        }
    }
    public GameObject FindNpcObjFromNpcList(XKSpawnNpcPoint spawnCom, GameObject npcPrefab)
    {
        if (npcPrefab == null)
        {
            return(null);
        }

        GameObject        npcObj            = null;
        int               max               = NpcList.Count;
        XKNpcMoveCtrl     npcMoveScript     = null;
        XKDaPaoCtrl       npcDaPaoScript    = null;
        XKHuoCheCtrl      npcHuoCheScript   = null;
        XKNpcFangZhenCtrl npcFangZhenScript = null;

        if (max > 0 && NpcScriptSt != NpcScriptState.XKHuoChe)
        {
            for (int i = 0; i < max; i++)
            {
                if (NpcList[i] != null)
                {
                    switch (NpcScriptSt)
                    {
                    case NpcScriptState.XKNpcMove:
                        npcMoveScript = NpcList[i].GetComponent <XKNpcMoveCtrl>();
                        if (npcMoveScript != null &&
                            npcMoveScript.GetIsDeathNPC())
                        {
                            GameObject realNpcObj = npcMoveScript.RealNpcTran.gameObject;
                            if (!realNpcObj.activeSelf)
                            {
                                npcObj = NpcList[i];
                            }
                        }
                        break;

                    case NpcScriptState.XKDaPao:
                        npcDaPaoScript = NpcList[i].GetComponent <XKDaPaoCtrl>();
                        if (npcDaPaoScript != null &&
                            npcDaPaoScript.GetIsDeathNpc())
                        {
                            npcDaPaoScript.SetSpawnPointScript(spawnCom);
                            npcDaPaoScript.ResetNpcDaPaoInfo();
                            npcObj = NpcList[i];
                        }
                        break;

                    case NpcScriptState.XKHuoChe:
                        break;

                    case NpcScriptState.XKFangZhen:
                        npcFangZhenScript = NpcList[i].GetComponent <XKNpcFangZhenCtrl>();
                        if (npcFangZhenScript != null &&
                            npcFangZhenScript.GetIsHiddenNpcObj() &&
                            !npcFangZhenScript.GetIsActiveFangZhen())
                        {
                            npcObj = NpcList[i];
                            npcFangZhenScript.ActiveFangZhenNpc();
                        }
                        break;
                    }
                }

                if (npcObj != null)
                {
                    break;
                }
            }
        }

        if (npcObj == null)
        {
            if (NpcScriptSt == NpcScriptState.Null)
            {
                npcMoveScript = npcPrefab.GetComponent <XKNpcMoveCtrl>();
                if (npcMoveScript != null)
                {
                    NpcScriptSt = NpcScriptState.XKNpcMove;
                }

                if (NpcScriptSt == NpcScriptState.Null)
                {
                    npcDaPaoScript = npcPrefab.GetComponent <XKDaPaoCtrl>();
                    if (npcDaPaoScript != null)
                    {
                        NpcScriptSt = NpcScriptState.XKDaPao;
                    }
                }

                if (NpcScriptSt == NpcScriptState.Null)
                {
                    npcHuoCheScript = npcPrefab.GetComponent <XKHuoCheCtrl>();
                    if (npcHuoCheScript != null)
                    {
                        NpcScriptSt = NpcScriptState.XKHuoChe;
                    }
                }

                if (NpcScriptSt == NpcScriptState.Null)
                {
                    npcFangZhenScript = npcPrefab.GetComponent <XKNpcFangZhenCtrl>();
                    if (npcFangZhenScript != null)
                    {
                        NpcScriptSt = NpcScriptState.XKFangZhen;
                    }
                }
            }

            switch (NpcScriptSt)
            {
            case NpcScriptState.XKNpcMove:
                npcObj = SpawnNpcByNpcPrefab(npcPrefab);
                break;

            case NpcScriptState.XKDaPao:
                npcObj = SpawnNpcByNpcPrefab(npcPrefab);
                break;

            case NpcScriptState.XKHuoChe:
                npcObj = SpawnNpcByNpcPrefab(npcPrefab);
                break;

            case NpcScriptState.XKFangZhen:
                npcObj = SpawnNpcByNpcPrefab(npcPrefab);
                break;
            }
        }
        return(npcObj);
    }
Beispiel #9
0
    public void SetXKDaPaoScript(XKDaPaoCtrl script)
    {
//		DaPoaScript = script;
        NpcNameInfo = script.name;
    }
    /// <summary>
    /// 清理暂时不用的npc数据.
    /// </summary>
    public void ClearNpcObj()
    {
        int max      = NpcList.Count;
        int indexNpc = 0;

        GameObject[]  npcArray       = new GameObject[max];
        XKNpcMoveCtrl npcMoveScript  = null;
        XKDaPaoCtrl   npcDaPaoScript = null;
        string        npcName        = "noRemovedNpc";

        if (max > 0)
        {
            for (int i = 0; i < max; i++)
            {
                //统计暂时不用的npc.
                if (NpcList[i] != null)
                {
                    switch (NpcScriptSt)
                    {
                    case NpcScriptState.XKNpcMove:
                        npcMoveScript = NpcList[i].GetComponent <XKNpcMoveCtrl>();
                        if (npcMoveScript != null &&
                            npcMoveScript.GetIsDeathNPC())
                        {
                            if (indexNpc == 0)
                            {
                                npcName = NpcList[i].name;
                            }
                            npcArray[indexNpc] = NpcList[i];
                            indexNpc++;
                        }
                        break;

                    case NpcScriptState.XKDaPao:
                        npcDaPaoScript = NpcList[i].GetComponent <XKDaPaoCtrl>();
                        if (npcDaPaoScript != null &&
                            npcDaPaoScript.GetIsDeathNpc())
                        {
                            if (indexNpc == 0)
                            {
                                npcName = NpcList[i].name;
                            }
                            npcArray[indexNpc] = NpcList[i];
                            indexNpc++;
                        }
                        break;
                    }
                }
            }

            for (int i = 0; i < indexNpc; i++)
            {
                if (npcArray[i] != null)
                {
                    if (NpcList.Contains(npcArray[i]))
                    {
                        //清理列表.
                        NpcList.Remove(npcArray[i]);
                    }
                }
            }

            for (int i = 0; i < indexNpc; i++)
            {
                if (npcArray[i] != null)
                {
                    //删除暂时不用的npc.
                    Destroy(npcArray[i]);
                }
            }
            Debug.Log("Unity: ClearNpcObj -> max == " + max + ", NpcScriptSt == " + NpcScriptSt + ", npcName == " + npcName
                      + ", cleanCount == " + indexNpc);
        }
    }