示例#1
0
 private void OnNewWave(AISpawnTDWavesData.TDWaveSpData tdData, int wave)
 {
     if (wave == tdData._waveDatas.Count - 1)
     {
         Invoke("DestroySelf", 10.0f);
     }
 }
示例#2
0
    void OnNewWave(AISpawnTDWavesData.TDWaveSpData spData, int idxWave)
    {
        m_IsReady = false;

        m_SpawnFinished = (idxWave >= spData._waveDatas.Count - 1);

        m_Npcs.Clear();
        m_Towers.Clear();
        m_Buildings.Clear();
        m_Defences.Clear();
        m_Entities.Clear();

        List <PeEntity> npcs = CSMain.GetCSNpcs(m_Creator);

        for (int i = 0; i < npcs.Count; i++)
        {
            if (npcs[i] != null && PETools.PEUtil.SqrMagnitude(npcs[i].position, assemblyPosition) < assemblyRadius * assemblyRadius)
            {
                m_Npcs.Add(npcs[i]);
            }
        }


        m_Towers    = EntityMgr.Instance.GetTowerEntities(assemblyPosition, assemblyRadius, false);
        m_Buildings = CSMain.GetCSBuildings(m_Creator);

        m_Defences.AddRange(m_Npcs);
        m_Defences.AddRange(m_Towers);

        m_Entities.AddRange(m_Defences);
        m_Entities.AddRange(m_Buildings);
    }
示例#3
0
 void OnNewWave(AISpawnTDWavesData.TDWaveSpData spData, int idxWave)
 {
     //string value = "0_0_0_1_0"; // just for pass checking in IsReplyTarget: x(spType), num, cnt, created, completeTarget
     //playerMission.ModifyQuestVariable(MissionId, "TDMONS" + _idxTarId, value);
     MissionManager.mTowerCurWave   = (idxWave + 1).ToString();
     MissionManager.mTowerTotalWave = spData._waveDatas.Count.ToString();
     MissionManager.Instance.UpdateMissionTrack(MissionId);
 }
 void OnNewWave(AISpawnTDWavesData.TDWaveSpData spData, int idxWave)
 {
     if (idxWave == spData._waveDatas.Count - 1)
     {
         if (m_Beacon != null)
         {
             m_Beacon.handlerNewWave -= OnNewWave;
             GameObject.Destroy(m_Beacon.gameObject);
         }
     }
 }
示例#5
0
    void OnNewWave(AISpawnTDWavesData.TDWaveSpData tdData, int wave)
    {
        wave++;

        if (null != tdData)
        {
            float coolTime = 0;
            float preTime  = 0;

            if (tdData._waveDatas.Count != wave)
            {
                coolTime = tdData._timeToCool;
                preTime  = tdData._waveDatas[wave]._delayTime;
            }

            SyncTDInfo(totalCount, wave, preTime, coolTime);

            if (null != _mbEntity)
            {
                _mbEntity.UpdateUI(_missionId, totalCount, totalWave, preTime);
            }
        }
    }
    public static EntityMonsterBeacon CreateMonsterBeaconBySweepID(List <int> sweepDataId, Transform targetTrans,
                                                                   TowerInfoUIData uiData, int preTime, int entityId = -1, TypeTowerDefendsData data = null, int releaseNpcid = -1)
    {
        GameObject go = new GameObject("MonsterBeacon");

        Vector3 v = new Vector3();

        if (null != data)
        {
            switch (data.m_Pos.type)
            {
            case TypeTowerDefendsData.PosType.getPos:
                v = PeCreature.Instance.mainPlayer.position;
                break;

            case TypeTowerDefendsData.PosType.pos:
                v = data.m_Pos.pos;
                break;

            case TypeTowerDefendsData.PosType.npcPos:
                v = EntityMgr.Instance.Get(data.m_Pos.id).position;
                break;

            case TypeTowerDefendsData.PosType.doodadPos:
                v = EntityMgr.Instance.GetDoodadEntities(data.m_Pos.id)[0].position;
                break;

            case TypeTowerDefendsData.PosType.conoly:
                if (!CSMain.GetAssemblyPos(out v))
                {
                    v = PeCreature.Instance.mainPlayer.position;
                }
                break;

            case TypeTowerDefendsData.PosType.camp:
                if (VArtifactUtil.GetTownPos(data.m_Pos.id, out v))
                {
                    v = PeCreature.Instance.mainPlayer.position;
                }
                break;

            default:
                break;
            }
            data.finallyPos = v;
        }
        go.transform.position = v;

        AISpawnTDWavesData.TDWaveSpData spData = MonsterSweepData.GetWaveSpData(sweepDataId, v);
        if (spData == null)
        {
            return(null);
        }

        EntityMonsterBeacon bcn = go.AddComponent <EntityMonsterBeacon>();

        bcn.isSweep = true;
        EntityMgr.Instance.AddAfterAssignId(bcn, entityId != -1 ? entityId : Pathea.WorldInfoMgr.Instance.FetchNonRecordAutoId());
        bcn._uiData   = uiData;
        bcn._spData   = spData;
        bcn._position = v;
        bcn._forward  = Vector3.forward;
        bcn.PreTime   = (float)(preTime + spData._waveDatas[0]._delayTime);
        if (UITowerInfo.Instance != null && uiData != null)
        {
            UITowerInfo.Instance.SetInfo(uiData);
            UITowerInfo.Instance.Show();
            UITowerInfo.Instance.e_BtnReady += () => { bcn.PreTime = 0; };
        }

        bcn.StartCoroutine(bcn.RefreshTowerMission());
        return(bcn);
    }
    public static EntityMonsterBeacon CreateMonsterBeaconByTDID(int spDataId, Transform targetTrans,
                                                                TowerInfoUIData uiData, int entityId = -1, TypeTowerDefendsData data = null, int releaseNpcid = -1, bool bOnlyMonster = false)
    {
        // Get type mask
        int        campCol    = -1;
        List <int> spawnTypes = GetSpawnTypeMask(bOnlyMonster, out campCol);

        AISpawnTDWavesData.TDWaveSpData spData = AISpawnTDWavesData.GetWaveSpData(spDataId, UnityEngine.Random.value, spawnTypes);
        if (spData == null)
        {
            return(null);
        }

        GameObject go = new GameObject("MonsterBeacon");
        Vector3    v  = new Vector3();

        if (null != data)
        {
            switch (data.m_Pos.type)
            {
            case TypeTowerDefendsData.PosType.getPos:
                v = PeCreature.Instance.mainPlayer.position;
                break;

            case TypeTowerDefendsData.PosType.pos:
                v = data.m_Pos.pos;
                break;

            case TypeTowerDefendsData.PosType.npcPos:
                v = EntityMgr.Instance.Get(data.m_Pos.id).position;
                break;

            case TypeTowerDefendsData.PosType.doodadPos:
                v = EntityMgr.Instance.GetDoodadEntities(data.m_Pos.id)[0].position;
                break;

            case TypeTowerDefendsData.PosType.conoly:
                if (!CSMain.GetAssemblyPos(out v))
                {
                    v = PeCreature.Instance.mainPlayer.position;
                }
                break;

            case TypeTowerDefendsData.PosType.camp:
                if (!VArtifactUtil.GetTownPos(data.m_Pos.id, out v))
                {
                    v = PeCreature.Instance.mainPlayer.position;
                }
                break;

            default:
                break;
            }
            data.finallyPos = v;

            go.transform.position = v;
            go.transform.rotation = Quaternion.identity;
        }
        else if (targetTrans != null)
        {
            v = targetTrans.position;
            go.transform.position = targetTrans.position;
            go.transform.rotation = targetTrans.rotation;
        }
        EntityMonsterBeacon bcn = go.AddComponent <EntityMonsterBeacon>();

        EntityMgr.Instance.AddAfterAssignId(bcn, entityId != -1 ? entityId : Pathea.WorldInfoMgr.Instance.FetchNonRecordAutoId());
        bcn._campCol  = campCol;
        bcn._uiData   = uiData;
        bcn._spData   = spData;
        bcn._spDataId = spDataId;
        bcn._position = go.transform.position;
        bcn._forward  = go.transform.forward;
        bcn.PreTime   = (float)(spData._timeToStart + spData._waveDatas[0]._delayTime);

        if (UITowerInfo.Instance != null && uiData != null)
        {
            UITowerInfo.Instance.SetInfo(uiData);
            UITowerInfo.Instance.Show();
            UITowerInfo.Instance.e_BtnReady += () => { bcn.PreTime = 0; };
        }

        bcn.StartCoroutine(bcn.RefreshTowerMission());
        return(bcn);
    }
示例#8
0
 void OnNewWave(AISpawnTDWavesData.TDWaveSpData data, int idxWave)
 {
     m_IsReady       = true;
     m_SpawnFinished = (idxWave >= data._waveDatas.Count - 1);
 }