public bool firstSpawn(Enemy.type type) { bool status = _enemyTriggers.first.ContainsKey(type); if (status) { return(false); } _enemyTriggers.first.Add(type, true); return(true); }
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); } }
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); } } }
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); } }
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)); }
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); } }
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); }
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; } }
bool multipleOf3(Enemy.type type) { Dictionary <Enemy.type, int> killed = _enemyTriggers.killed; return(killed[type] % 3 == 0 && killed[type] == 0); }