Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    private void SetSpawnerOnScene(TileGeneration tile)
    {
        SpawnDotData spawner = new SpawnDotData(tile);

        spawner.Spawner = Instantiate(_spawner, tile.GetPosition(), Quaternion.identity);
        spawner.SetConnectionWithTile();
        _currentSpawners.Add(spawner);
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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());
    }
Exemplo n.º 5
0
    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);
        }
    }
Exemplo n.º 6
0
    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));
        }
    }
Exemplo n.º 7
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());
    }
Exemplo n.º 8
0
    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);
    }
Exemplo n.º 9
0
    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());
    }