void EliteMonsters() { eliteNode = FSDataNodeTable <TowerDefenceNode> .GetSingleton().FindDataByType(currentelite); if (currentelite >= eliteCount) { CancelInvoke("EliteMonsters"); } List <int> smID = new List <int>(point.Keys); for (int i = 0; i < smID.Count; i++) { if (smID[i] == 1 && null != eliteNode.Monster1 && eliteNode.Monster1.Length > 0) { point[smID[i]].SetMonsterPoint(eliteNode.Monster1, true); } else if (smID[i] == 2 && null != eliteNode.Monster2 && eliteNode.Monster2.Length > 0) { point[smID[i]].SetMonsterPoint(eliteNode.Monster2, true); } else if (smID[i] == 3 && null != eliteNode.Monster3 && eliteNode.Monster3.Length > 0) { point[smID[i]].SetMonsterPoint(eliteNode.Monster3, true); } } currentelite++; }
public override void InitScene() { sceneType = SceneType.TD; ReadTask(); CreateMainHero(); currentWellen = Convert.ToInt32(tdIndex + "" + currentWellen); currentelite = Convert.ToInt32(tdIndex + "" + currentelite); SetMaxWave(1); wellenCount = maxWellen - 1; SetMaxWave(1001); eliteCount = maxWellen - 1; SpawnMonster[] sm = GetComponentsInChildren <SpawnMonster>(); for (int i = 0; i < sm.Length; i++) { spwanList.Add(sm[i]); } for (int i = 0; i < spwanList.Count; i++) { if (!point.ContainsKey(spwanList[i].spawnID)) { point.Add(spwanList[i].spawnID, spwanList[i]); } } InitTower(Tower1, towerID != 0 ? towerID : 206000300, 1, Modestatus.Tower); InitTower(Tower2, towerID != 0 ? towerID : 206000300, 1, Modestatus.Tower); InitTower(Camp, campID != 0? campID : 206000700, 1, Modestatus.Tower); Camp.gameObject.layer = Tower1.gameObject.layer = Tower2.gameObject.layer = (int)GameLayer.Tower; Camp.OnHit += SceneUIManager.instance.TowerDefence.RefreshCampHP; Camp.OnDead += (CharacterState cCs) => WinCondition(false); player.OnDead += (CharacterState cCs) => WinCondition(false); Tower1.OnHit += (CharacterState cs) => { ShowBloodScreen(); }; Tower2.OnHit += (CharacterState cs) => { ShowBloodScreen(); }; Camp.OnHit += (CharacterState cs) => { ShowBloodScreen(false); }; towerNode = FSDataNodeTable <TowerDefenceNode> .GetSingleton().FindDataByType(currentWellen); if (currentWellen <= wellenCount) { Invoke("BrushSoldiers", towerNode.Interval); } eliteNode = FSDataNodeTable <TowerDefenceNode> .GetSingleton().FindDataByType(currentelite); InvokeRepeating("EliteMonsters", eliteNode.Interval, eliteNode.Interval); SceneUIManager.instance.TowerDefence.RefreshWave(towerNode.Interval, currentWellen % tdIndex, wellenCount % tdIndex); base.InitScene(); }
void SetMaxWave(int max) { maxWellen = Convert.ToInt32(tdIndex + "" + max); maxNode = FSDataNodeTable <TowerDefenceNode> .GetSingleton().FindDataByType(maxWellen); if (null == maxNode) { return; } max++; SetMaxWave(max); }
void NextWave() { if (currentWellen >= wellenCount) { CancelInvoke("EliteMonsters"); DungeonOverHandle(null); return; } currentWellen++; towerNode = FSDataNodeTable <TowerDefenceNode> .GetSingleton().FindDataByType(currentWellen); SceneUIManager.instance.TowerDefence.RefreshWave(towerNode.Interval, currentWellen % tdIndex, wellenCount % tdIndex); Invoke("BrushSoldiers", towerNode.Interval); }