Beispiel #1
0
    public bool firstSpawn(Enemy.type type)
    {
        bool status = _enemyTriggers.first.ContainsKey(type);

        if (status)
        {
            return(false);
        }
        _enemyTriggers.first.Add(type, true);
        return(true);
    }
Beispiel #2
0
    public void classicStory(Enemy.type type)
    {
        Dictionary <Enemy.type, int> killed = _enemyTriggers.killed;

        Spawnable[] items = _spawnManager.getItems();
        if (killed[type] == 1 && type != Enemy.type.Normal)
        {
            items[enemySpawnableIndex].setActive(true);
        }
        if (killed[type] == _killTriggers[type])
        {
            //Generally, the stage will be change to a specific number for a killed type
            //However, enemy types are spawned sequentially, so it shouldn't be possible to hit gates out of order
            _stage++;
            switch (_stage)
            {
            case 1:
                break;

            case 2:
                items[enemySpawnableIndex].setActive(false);
                _spawnManager.specialSpawn(hyperEnemy, _enemyContainer);
                break;

            case 3:
                items[enemySpawnableIndex].setActive(false);
                _spawnManager.specialSpawn(ultraEnemy, _enemyContainer);
                break;

            case 4:
                // Boss is spawned directly because special spawn doesn't take position coordinates
                items[enemySpawnableIndex].setActive(false);
                GameObject tohou = _boundManager.bsInstantiate(tohouEnemy, new Vector3(0, 4), Quaternion.identity);

                SpawnManager.setPausible(tohou, managers);
                tohou.GetComponent <Enemy>().managers = managers;
                tohou.GetComponent <Enemy>().player   = _playerPosition;
                tohou.transform.parent = _enemyContainer;
                tohou.GetComponent <Enemy>().setPortalContainer(_portalContainer);
                tohou.GetComponent <Enemy>().setPowerupContainer(_powerupContainer.gameObject);
                break;

            case 5:
                items[enemySpawnableIndex].setActive(false);
                break;
            }
        }
        if (_gameManager.getMode() == GameManager.mode.endless)
        {
            // In endless mode, enemies spawn with subbosses/bosses
            items[enemySpawnableIndex].setActive(true);
        }
    }
Beispiel #3
0
    void enemyHasFirstSpawn_superCheck(GameObject item, Spawnable spawnable)
    {
        // ENEMY UNIQUE
        Enemy enemy;

        if (item.tag == "Enemy" && _gameManager.getMode() == GameManager.mode.classic)
        {
            enemy = item.GetComponent <Enemy>();
            Enemy.type type = enemy.getType();
            if (type == Enemy.type.Super && _gameManager.firstSpawn(type))
            {
                spawnable.setActive(false);
            }
        }
    }
Beispiel #4
0
    public void waveStory(Enemy.type type = Enemy.type.None)
    {
        if (type == Enemy.type.None)
        {
            // RESET
            Spawnable[] items = _spawnManager.getItems();
            //items[enemySpawnableIndex].clearSpawned();
            _killCount = 0;
        }

        bool advance = _waveManager.waveStory(waveLevel, _killCount);

        if (advance)
        {
            setWave(waveLevel + 1);
        }
    }
Beispiel #5
0
    public bool firstSpawn(Enemy.type type)
    {
        switch (type)
        {
        case Enemy.type.Super:
            _uIManager.toggleYellow();
            break;

        case Enemy.type.Hyper:
            _uIManager.toggleRed();
            break;

        case Enemy.type.Ultra:
            _uIManager.toggleGreen();
            break;
        }
        return(_storyManager.firstSpawn(type));
    }
Beispiel #6
0
    public void addKill(Enemy.type type)
    {
        Dictionary <Enemy.type, int> killed = _enemyTriggers.killed;

        if (!killed.ContainsKey(type))
        {
            killed[type] = 0;
        }
        killed[type]++;
        _killCount++;
        if (_gameManager.getMode() == GameManager.mode.classic)
        {
            classicStory(type);
        }
        else
        {
            waveStory(type);
        }
    }
Beispiel #7
0
    public void addKill(Enemy.type type, int kill = 1)
    {
        if (getMode() != mode.wave)
        {
            switch (type)
            {
            case Enemy.type.Super:
                _uIManager.yellowToken(kill);
                break;

            case Enemy.type.Hyper:
                _uIManager.redToken(kill);
                break;

            case Enemy.type.Ultra:
                _uIManager.greenToken(kill);
                break;
            }
        }
        _storyManager.addKill(type);
    }
Beispiel #8
0
    void OnTriggerExit2D(Collider2D other)
    {
        float x = other.transform.position.x;
        float y = other.transform.position.y;

        switch (other.tag)
        {
        case "Enemy":
            Enemy      enemy = other.GetComponent <Enemy>();
            Enemy.type eType = enemy.getType();
            bool       tohou = eType == Enemy.type.Tohou || eType == Enemy.type.Tohou_gun;
            //TOHOU TYPES IGNORE BOUNDS
            if (!tohou)
            {
                EnemyColl(x, y, other);
            }
            break;

        case "Player":
            PlayerColl(x, y, other);
            break;

        case "EnemySuperLaser":
            EnemySuperLaserColl(x, y, other);
            break;

        case "Star":
            starColl(x, y, other);
            break;

        case "TEST":
            break;

        default:
            Destroy(other.gameObject);
            break;
        }
    }
Beispiel #9
0
    bool multipleOf3(Enemy.type type)
    {
        Dictionary <Enemy.type, int> killed = _enemyTriggers.killed;

        return(killed[type] % 3 == 0 && killed[type] == 0);
    }