private void GenerateLevel(TileGeneration currentTile) { float tileXSize = 10; float tileZSize = 10; List <Vector3> requiredCoordinates = new List <Vector3>(); for (int i = _horizontalRange * -1; i <= _horizontalRange; i++) { for (int j = (_verticalRange / 2) * -1; j <= _verticalRange; j++) { float xPosition = currentTile.GetPosition().x + i * tileXSize; float zPosition = currentTile.GetPosition().z + j * tileZSize; requiredCoordinates.Add(new Vector3(xPosition, 0, zPosition)); } } foreach (var coordinate in requiredCoordinates) { if (_currentTiles.Where(tile => tile.GetPosition() == coordinate).ToArray().Count() == 0) { _currentTiles.Add(GenerateTile(coordinate)); } } if (!_isFinishGenerateTiles) { _isFinishGenerateTiles = true; _fogConstructor.StartGenerate(this, _startTile); } _enemiesConstructor.GenerateEnemeSpawners(_currentTiles.ToArray(), currentTile); }
private void SetSpawnerOnScene(TileGeneration tile) { SpawnDotData spawner = new SpawnDotData(tile); spawner.Spawner = Instantiate(_spawner, tile.GetPosition(), Quaternion.identity); spawner.SetConnectionWithTile(); _currentSpawners.Add(spawner); }
private bool CheckEnemyPosition(Vector3 position, int stepZ, int stepX) { Vector3 currentPosition = _currentTile.GetPosition(); bool check = position.z >= currentPosition.z + stepZ * _currentTile.GetSize().z&& position.x >= currentPosition.x - stepX * _currentTile.GetSize().x&& position.x <= currentPosition.x + stepX * _currentTile.GetSize().x; return(check); }
public void StartGenerate(LevelConstructor levelConstructor, TileGeneration startTile) { _levelConstructor = levelConstructor; _fogZPosition = startTile.GetPosition().z - startTile.GetSize().z *_startOfsetPosition; _fogStep = startTile.GetSize().z; _pool = FindObjectOfType <FogPool>(); GenerateFog(); StartCoroutine(NextGnerateFog()); }
private IEnumerator GenerateRocket(float time) { while (true) { yield return(new WaitForSeconds(time)); TileGeneration tile = _spawnGenerator.GetTileForEnemy(); Vector3 spawnPosition = tile.GetPosition(); spawnPosition.y += 0.5f; Instantiate(_rocket, spawnPosition, Quaternion.identity); } }
private IEnumerator GenerateOgre(float time) { while (true) { yield return(new WaitForSeconds(time)); TileGeneration tile = _spawnGenerator.GetTileForEnemy(); Vector3 spawnPosition = tile.GetPosition(); spawnPosition.y += 2.2f; Instantiate(_ogre, spawnPosition, Quaternion.Euler(0, Random.Range(0, 360), 0)); } }
public void Initialization(TileGeneration tile, float lifeTime, float saveTime) { _tile = tile; Vector3 position = tile.GetPosition(); transform.position = new Vector3(position.x, position.y + 1, position.z); _particle = GetComponent <ParticleSystem>(); _selfColider = GetComponent <Collider>(); _lifeTime = lifeTime; _saveTime = saveTime; _particle.Play(); IsInThePool = false; StartCoroutine(DestroyTile()); StartCoroutine(DeadZoneActive()); }
public bool IsInRange(Vector3 min, Vector3 max) { Vector3 position = Tile.GetPosition(); return(position.x >= min.x && position.x <= max.x && position.z <= max.z && position.z >= min.z); }
public TileGeneration[] GetTilesToSpawn(TileGeneration[] tiles, TileGeneration currentTile) { CheckTilesOnScene(tiles); _currentTile = currentTile; Vector3 size = _currentTile.GetSize(); List <TileGeneration> tilesToSpawn = new List <TileGeneration>(); _currentTiles = tiles; Vector3 startTile = _currentTile.GetPosition() + new Vector3(0, 0, _stepZ * size.z); tilesToSpawn.Add(_currentTiles.Where(a => a.GetPosition() == startTile).First()); int counter = 1; bool isTileNotEnded = true; while (isTileNotEnded) { Vector3 nextPosition = new Vector3(startTile.x, startTile.y, startTile.z + _stepZ * counter * size.z); isTileNotEnded = AddTileByCoordinates(nextPosition, ref tilesToSpawn); counter++; if (counter > 100) { Debug.Log("counter > 100"); isTileNotEnded = false; } } Vector3[] centralTiles = new Vector3[tilesToSpawn.Count]; int tilesCounter = 0; foreach (var centralTile in tilesToSpawn) { centralTiles[tilesCounter] = centralTile.GetPosition(); tilesCounter++; } tilesToSpawn = new List <TileGeneration>(); for (int i = 0; i < centralTiles.Length; i++) { AddTileByCoordinates(centralTiles[i], ref tilesToSpawn); for (int j = -2; j <= 2; j++) { if (j != 0) { Vector3 nextPosition = new Vector3(centralTiles[i].x + (j * _stepX * size.x), centralTiles[i].y, centralTiles[i].z); AddTileByCoordinates(nextPosition, ref tilesToSpawn); } } } CheckSpawnsOnSceene(ref tilesToSpawn); if (tilesToSpawn.Count > 0) { foreach (var tileToSpawn in tilesToSpawn) { _tilesWithSpawner.Add(new SpawnerRange(tileToSpawn, _stepX, _stepZ)); } } return(tilesToSpawn.ToArray()); }