void GenerateEnemies() { float enemy = 0; float type = 0; GObject entity = null; ReturnOldEnemiesToPool(); // Debug.LogError("m_Tilemaps[c_Tilemap_Water].origin " + m_Tilemaps[c_Tilemap_Water].origin); int sizeX = m_Tilemaps[c_Tilemap_Water].origin.x + m_Tilemaps[c_Tilemap_Water].size.x; int sizeY = m_Tilemaps[c_Tilemap_Water].origin.y + m_Tilemaps[c_Tilemap_Water].size.y; for (int i = m_Tilemaps[c_Tilemap_Water].origin.x; i < sizeX; i++) { for (int y = m_Tilemaps[c_Tilemap_Water].origin.y; y < sizeY; y++) { if (i == c_Shark_X && y == c_Shark_Y) { continue; } enemy = UnityEngine.Random.Range(0f, 1f); // Debug.Log("enemy range " + enemy); if (enemy <= m_EnemyProbability) { // put enemy in the cell type = UnityEngine.Random.Range(0f, 1f); if (type <= m_MineProbability) { // mine entity = m_MainLogic.GetEntityManager().GetEntity(GObject.ObjectType.Mine); } else { // swimmer static entity = m_MainLogic.GetEntityManager().GetEntity(GObject.ObjectType.SwimmerStatic); } if (entity != null) { entity.Put(i, y); entity.m_Transform.SetParent(m_TrsLevelObjects); m_AllEnemies.Add(entity); } } } } }
// upper half of the screen is dedicated to enemies void GenerateEnemies(bool randomizeHealth, bool randomizeBonuses) { float enemyCurrProbability = 0; GObject entity = null; ReturnOldObjectsToPool(); float worldSizeX = m_WorldBounds.x * 2; float worldSizeY = m_WorldBounds.y; //possible num of enemies in matrix taking into account gaps between and screen size float enemiesOnXTotalWidth = Mathf.Floor(worldSizeX); float enemiesOnYTotalHeight = Mathf.Floor(worldSizeY); float borderX = worldSizeX - enemiesOnXTotalWidth; float borderY = worldSizeY - enemiesOnYTotalHeight; float enemySpaceX = (enemiesOnXTotalWidth - m_EnemyGapTotal) / Enemy.WIDTH; float enemySpaceY = (enemiesOnYTotalHeight - m_EnemyGapTotal) / Enemy.HEIGHT; float enemiesOnX = Mathf.Floor(enemySpaceX); float enemiesOnY = Mathf.Floor(enemySpaceY); borderX += (enemySpaceX - enemiesOnX); borderY += (enemySpaceY - enemiesOnY); float gapX = m_EnemyGapTotal / (enemiesOnX - 1); float gapY = m_EnemyGapTotal / (enemiesOnY - 1); // Debug.Log("worldSizeX " + worldSizeX + " enemiesOnX " + enemiesOnX + " borderX " + borderX); // Debug.Log("worldSizeY " + worldSizeY + " enemiesOnY " + enemiesOnY + " borderY " + borderY); // Debug.Log("gapX " + gapX + " enemiesOnXTotalWidth " + enemiesOnXTotalWidth); // Debug.Log("gapY " + gapX + " enemiesOnYTotalHeight " + enemiesOnYTotalHeight); for (int i = 0; i < enemiesOnX; i++) { for (int j = 0; j < enemiesOnY; j++) { // if (j>0) break; // test enemyCurrProbability = UnityEngine.Random.Range(0f, 1f); if (enemyCurrProbability <= c_EnemyProbability) { entity = MainLogic.GetMainLogic().GetEntityManager().GetEntity(GObject.ObjectType.Enemy); // Debug.Log("put enemy " + entity); if (entity != null) { m_VcTemp.x = borderX / 2 + gapX * i + Enemy.WIDTH * i + Enemy.WIDTH / 2 - m_WorldBounds.x; m_VcTemp.y = (-1) * (borderY / 2 + gapY * j + Enemy.HEIGHT * j + Enemy.HEIGHT / 2) + m_WorldBounds.y; entity.Put(m_VcTemp.x, m_VcTemp.y); entity.m_Transform.SetParent(m_TrsLevelObjects); m_AllEnemies.Add(entity); Enemy enemy = entity as Enemy; enemy.Reset(); enemy.AddDieListener(OnEnemyDie); if (randomizeHealth) { enemy.RandomizeHealth(); } else { enemy.SetDefaultHealth(); } if (randomizeBonuses) { enemy.RandomizeBonus(); } } } } } m_TotalEnemiesOnLevel = m_AllEnemies.Count; }