From 6f40c69336d4dc61567d58880a2bb4952d69be95 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Mon, 14 Dec 2020 20:07:13 +0800 Subject: [PATCH] 初始化TDAA_SDKManager --- Assets/Scripts/TowerDefense/Level/EndlessWave.cs | 62 ++++++++++++++++++++----------- 1 files changed, 40 insertions(+), 22 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Level/EndlessWave.cs b/Assets/Scripts/TowerDefense/Level/EndlessWave.cs index 294f232..098d330 100644 --- a/Assets/Scripts/TowerDefense/Level/EndlessWave.cs +++ b/Assets/Scripts/TowerDefense/Level/EndlessWave.cs @@ -6,6 +6,7 @@ using TowerDefense.Agents; using TowerDefense.Agents.Data; using TowerDefense.Nodes; +using TowerDefense.UI.HUD; namespace TowerDefense.Level { @@ -103,17 +104,32 @@ public void PauseWave() { PauseTimer(spawnTimer); - isWaveStoped = true; } public void RestartWave() { - StartTimer(spawnTimer); - isWaveStoped = false; + if (spawnTimer != null) + StartTimer(spawnTimer); } protected virtual void SpawnCurrent() { + if (EndlessGameUI.instance.state == EndlessGameUI.State.GameOver) + { + StopWave(); + // 让所有兵线上已经生成的所有agent播放一个死亡动画然后销毁 + WaveLineAgentInsMgr[] waveLineAgentIns = AgentInsManager.instance.GetWaveLineList(); + + for (int i = 0; i < waveLineAgentIns.Length; ++i) + { + while (waveLineAgentIns[i].listAgent.Count > 0) + { + waveLineAgentIns[i].listAgent[0].PlayDeath(); + } + } + return; + } + if (isWaveStoped) return; if (!TrySetupNextSpawn()) @@ -143,12 +159,16 @@ /// <returns>Agent</returns> protected virtual void SpawnAgent() { - int index = GetIndexByResId(waveData.EnemyData.resource); - // 木属性小怪需要同时生成两个,先这么写吧(WTF) - bool isDouble = waveData.EnemyData.resource == 103; + endless_enemy enemyData = waveData.EnemyDataList[waveData.Config.enemy_id > 0 ? 0 : spawnedEnemies]; - Poolable agentPoolable = Poolable.TryGetPoolable<Poolable>(AgentConfigurationList[index].agentPrefab.gameObject); - Agent newAgent = agentPoolable.GetComponent<Agent>(); + int index = GetIndexByResId(enemyData.resource); + + // 木属性小怪需要同时生成两个,先这么写吧(WTF) + bool isDouble = enemyData.resource == 103; + GameObject prefab = Resources.Load<GameObject>($"Prefabs/Enemies/{enemyData.resource}"); + GameObject obj = Instantiate(prefab); + Agent newAgent = obj.GetComponent<Agent>(); + newAgent.EnemyData = enemyData; newAgent.transform.position = StartingNode.transform.position; if (isDouble) @@ -164,20 +184,19 @@ newAgent.Initialize(); // 最终血量 = 基础血量 * 血量增幅,速度和金币都是一个公式 - float hp = waveData.Config.b_hp * waveData.EnemyData.hp_rate; - float speed = waveData.Config.b_speed * waveData.EnemyData.speed_rate; - int gold = waveData.Config.b_coin * waveData.EnemyData.coin_rate; + float hp = waveData.Config.b_hp * enemyData.hp_rate; + float speed = waveData.Config.b_speed * enemyData.speed_rate; + int gold = waveData.Config.b_coin * enemyData.coin_rate; newAgent.SetAgentData(hp, speed, gold); - // todo 这里先填1级后面需要修改 - newAgent.healthBar.SetHealthLevel(1); // 加入Manager统一管理. AgentInsManager.instance.addAgent(newAgent); if (isDouble) { - Poolable agentPoolable2 = Poolable.TryGetPoolable<Poolable>(AgentConfigurationList[index].agentPrefab.gameObject); - Agent doubleAgent = agentPoolable2.GetComponent<Agent>(); + obj = Instantiate(prefab); + Agent doubleAgent = obj.GetComponent<Agent>(); + doubleAgent.EnemyData = enemyData; doubleAgent.transform.position = StartingNode.transform.position; Vector3 pos = doubleAgent.transform.position; @@ -190,17 +209,16 @@ doubleAgent.Initialize(); doubleAgent.SetAgentData(hp, speed, gold); - doubleAgent.healthBar.SetHealthLevel(1); AgentInsManager.instance.addAgent(doubleAgent); } } /// <summary> - /// 从Tower的AttributeId获取到怪物的数据 - /// </summary> - /// <param name="id"></param> - /// <returns></returns> - protected List<int> GetMonsterDataFromAttributeId(int id) + /// 从Tower的AttributeId获取到怪物的数据 + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + protected List<int> GetMonsterDataFromAttributeId(int id) { geminfo tgem = new geminfo(); if (JsonDataCenter.gemInfoDic.TryGetValue(id, out tgem)) @@ -226,7 +244,7 @@ } /// <summary> - /// 暂时先这么处理 cx test + /// 暂时先这么处理 /// </summary> /// <param name="resId">endless_enemy表的资源id</param> /// <returns>所有可选的agent列表的索引</returns> -- Gitblit v1.9.1