|
|
@@ -9,7 +9,7 @@ using System.Linq;
|
|
|
public class EnemyCreater : MonoBehaviour
|
|
|
{
|
|
|
public static EnemyCreater instance;
|
|
|
- public List<SingleCreateEnemyConfig> cfgCreateEnemy;
|
|
|
+ [SerializeField]public List<SingleCreateEnemyConfig> cfgCreateEnemy;
|
|
|
public List<SingleCreateBuildingConfig> cfgCreateBuilding;
|
|
|
public List<bool> createdEnemy;
|
|
|
public List<float> createEnemyTime;
|
|
|
@@ -17,6 +17,7 @@ public class EnemyCreater : MonoBehaviour
|
|
|
public List<float> createBuildingTime;
|
|
|
public Dictionary<int, List<Enemy>> enemyDic;
|
|
|
public Dictionary<int, GameObject> buildingDic;
|
|
|
+ private LevelSelect.Level curLevel;
|
|
|
|
|
|
[Header("传送门")]
|
|
|
public float portalsCreateTime = 10; //传送门提前出现时间
|
|
|
@@ -39,6 +40,7 @@ public class EnemyCreater : MonoBehaviour
|
|
|
|
|
|
private void Start()
|
|
|
{
|
|
|
+ curLevel = GetComponent<LevelSelect>().levelConfig[GetComponent<LevelSelect>().curLevelID];
|
|
|
cfgCreateEnemy = GameManager.instance.allCfgData.CfgCreateEnemy.DataList;
|
|
|
cfgCreateBuilding = GameManager.instance.allCfgData.CfgCreateBuilding.DataList;
|
|
|
createdEnemy = new List<bool>();
|
|
|
@@ -59,47 +61,50 @@ public class EnemyCreater : MonoBehaviour
|
|
|
{
|
|
|
for (int i = 0; i < cfgCreateEnemy.Count; i++)
|
|
|
{
|
|
|
- if(createEnemyTime[i] != 0)
|
|
|
+ if (cfgCreateEnemy[i].LevelID == curLevel.enemyExcelID)
|
|
|
{
|
|
|
- if (createEnemyTime[i] + cfgCreateEnemy[i].DelayTime <= gameTime && !createdEnemy[i])
|
|
|
+ if (createEnemyTime[i] != 0)
|
|
|
{
|
|
|
- createdEnemy[i] = true;
|
|
|
- StartCreateEnemy(i);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- GameObject result = null;
|
|
|
- buildingDic.TryGetValue(cfgCreateEnemy[i].BuildingID, out result);
|
|
|
- if (result != null)
|
|
|
- {
|
|
|
- //根据防御塔血量出怪
|
|
|
- EnemyTower enemyTower = result.GetComponent<EnemyTower>();
|
|
|
- if (enemyTower!= null && !createdEnemy[i] && enemyTower.hp * 100 <= enemyTower.totalHp * cfgCreateEnemy[i].BuildingHP)
|
|
|
+ if (createEnemyTime[i] + cfgCreateEnemy[i].DelayTime <= gameTime && !createdEnemy[i])
|
|
|
{
|
|
|
- if (cfgCreateEnemy[i].DelayTime ==0)
|
|
|
- {
|
|
|
- createdEnemy[i] = true;
|
|
|
- StartCreateEnemy(i);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- createEnemyTime[i] = gameTime;
|
|
|
- }
|
|
|
+ createdEnemy[i] = true;
|
|
|
+ StartCreateEnemy(i);
|
|
|
}
|
|
|
- //根据传送门血量出怪
|
|
|
- CoreCharacter coreCharacter = result.GetComponentInChildren<CoreCharacter>();
|
|
|
- PortalsCreater portalsCreater = result.GetComponent<PortalsCreater>();
|
|
|
- if(coreCharacter != null && !createdEnemy[i] && portalsCreater.createTimeCountDown<0 && coreCharacter.hp * 100 <= coreCharacter.totalHp * cfgCreateEnemy[i].BuildingHP)
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ GameObject result = null;
|
|
|
+ buildingDic.TryGetValue(cfgCreateEnemy[i].BuildingID, out result);
|
|
|
+ if (result != null)
|
|
|
{
|
|
|
- if (cfgCreateEnemy[i].DelayTime == 0)
|
|
|
+ //根据防御塔血量出怪
|
|
|
+ EnemyTower enemyTower = result.GetComponent<EnemyTower>();
|
|
|
+ if (enemyTower != null && !createdEnemy[i] && enemyTower.hp * 100 <= enemyTower.totalHp * cfgCreateEnemy[i].BuildingHP)
|
|
|
{
|
|
|
- createdEnemy[i] = true;
|
|
|
- StartCreateEnemy(i);
|
|
|
+ if (cfgCreateEnemy[i].DelayTime == 0)
|
|
|
+ {
|
|
|
+ createdEnemy[i] = true;
|
|
|
+ StartCreateEnemy(i);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ createEnemyTime[i] = gameTime;
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
+ //根据传送门血量出怪
|
|
|
+ CoreCharacter coreCharacter = result.GetComponentInChildren<CoreCharacter>();
|
|
|
+ PortalsCreater portalsCreater = result.GetComponent<PortalsCreater>();
|
|
|
+ if (coreCharacter != null && !createdEnemy[i] && portalsCreater.createTimeCountDown < 0 && coreCharacter.hp * 100 <= coreCharacter.totalHp * cfgCreateEnemy[i].BuildingHP)
|
|
|
{
|
|
|
- createEnemyTime[i] = gameTime;
|
|
|
+ if (cfgCreateEnemy[i].DelayTime == 0)
|
|
|
+ {
|
|
|
+ createdEnemy[i] = true;
|
|
|
+ StartCreateEnemy(i);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ createEnemyTime[i] = gameTime;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -107,63 +112,64 @@ public class EnemyCreater : MonoBehaviour
|
|
|
}
|
|
|
for (int i = 0; i < cfgCreateBuilding.Count; i++)
|
|
|
{
|
|
|
- if(createBuildingTime[i] != 0)
|
|
|
+ if (cfgCreateBuilding[i].LevelID == curLevel.buildingExcelID)
|
|
|
{
|
|
|
- if (!createdBuilding[i]
|
|
|
- && (cfgCreateBuilding[i].Type == 0 && createBuildingTime[i] + cfgCreateBuilding[i].DelayTime - portalsCreateTime <= gameTime
|
|
|
- || cfgCreateBuilding[i].Type == 1 && createBuildingTime[i] + cfgCreateBuilding[i].DelayTime <= gameTime))
|
|
|
+ if (createBuildingTime[i] != 0)
|
|
|
{
|
|
|
- createdBuilding[i] = true;
|
|
|
- if (gameTime < portalsCreateTime)
|
|
|
+ if (!createdBuilding[i]
|
|
|
+ && (cfgCreateBuilding[i].Type == 0 && createBuildingTime[i] + cfgCreateBuilding[i].DelayTime - portalsCreateTime <= gameTime
|
|
|
+ || cfgCreateBuilding[i].Type == 1 && createBuildingTime[i] + cfgCreateBuilding[i].DelayTime <= gameTime))
|
|
|
{
|
|
|
- StartCreateBuilding(i, createBuildingTime[i] - gameTime );
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- StartCreateBuilding(i, portalsCreateTime);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- GameObject result = null;
|
|
|
- buildingDic.TryGetValue(cfgCreateBuilding[i].RefreshBuildingID, out result);
|
|
|
- if (result != null)
|
|
|
- {
|
|
|
- //根据防御塔血量出怪
|
|
|
- EnemyTower enemyTower = result.GetComponent<EnemyTower>();
|
|
|
- if (enemyTower != null && !createdBuilding[i] && enemyTower.hp * 100 <= enemyTower.totalHp * cfgCreateBuilding[i].RefreshBuildingHP)
|
|
|
- {
|
|
|
- if (cfgCreateBuilding[i].DelayTime == 0)
|
|
|
+ createdBuilding[i] = true;
|
|
|
+ if (gameTime < portalsCreateTime)
|
|
|
{
|
|
|
- createdBuilding[i] = true;
|
|
|
- StartCreateBuilding(i,portalsCreateTime);
|
|
|
+ StartCreateBuilding(i, createBuildingTime[i] - gameTime);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- createBuildingTime[i] = gameTime;
|
|
|
+ StartCreateBuilding(i, portalsCreateTime);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
- //根据传送门血量出怪
|
|
|
- CoreCharacter coreCharacter = result.GetComponentInChildren<CoreCharacter>();
|
|
|
- PortalsCreater portalsCreater = result.GetComponent<PortalsCreater>();
|
|
|
- if (coreCharacter != null && !createdBuilding[i] && portalsCreater.createTimeCountDown < 0 && coreCharacter.hp * 100 <= coreCharacter.totalHp * cfgCreateBuilding[i].RefreshBuildingHP)
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ GameObject result = null;
|
|
|
+ buildingDic.TryGetValue(cfgCreateBuilding[i].RefreshBuildingID, out result);
|
|
|
+ if (result != null)
|
|
|
{
|
|
|
- if (cfgCreateBuilding[i].DelayTime == 0)
|
|
|
+ //根据防御塔血量出怪
|
|
|
+ EnemyTower enemyTower = result.GetComponent<EnemyTower>();
|
|
|
+ if (enemyTower != null && !createdBuilding[i] && enemyTower.hp * 100 <= enemyTower.totalHp * cfgCreateBuilding[i].RefreshBuildingHP)
|
|
|
{
|
|
|
- createdBuilding[i] = true;
|
|
|
- StartCreateBuilding(i, portalsCreateTime);
|
|
|
+ if (cfgCreateBuilding[i].DelayTime == 0)
|
|
|
+ {
|
|
|
+ createdBuilding[i] = true;
|
|
|
+ StartCreateBuilding(i, portalsCreateTime);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ createBuildingTime[i] = gameTime;
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
+ //根据传送门血量出怪
|
|
|
+ CoreCharacter coreCharacter = result.GetComponentInChildren<CoreCharacter>();
|
|
|
+ PortalsCreater portalsCreater = result.GetComponent<PortalsCreater>();
|
|
|
+ if (coreCharacter != null && !createdBuilding[i] && portalsCreater.createTimeCountDown < 0 && coreCharacter.hp * 100 <= coreCharacter.totalHp * cfgCreateBuilding[i].RefreshBuildingHP)
|
|
|
{
|
|
|
- createBuildingTime[i] = gameTime;
|
|
|
+ if (cfgCreateBuilding[i].DelayTime == 0)
|
|
|
+ {
|
|
|
+ createdBuilding[i] = true;
|
|
|
+ StartCreateBuilding(i, portalsCreateTime);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ createBuildingTime[i] = gameTime;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|