void CheckWave() { if (waveIndex == waveBundles.Length - 1 && waveCountdown <= 0) { GameEventSignals.DoLastWaveEnd(); return; } waveCountdownTimer += Time.deltaTime; if (waveCountdownTimer >= 1.0f) { waveCountdownTimer = 0; --waveCountdown; GameEventSignals.DoWaveCountdownUpdated(); } if (waveIndex < waveBundles.Length - 1 && waveCountdown == 0) { ++waveIndex; enemyGroupsIndex = enemiesInGroupIndex = 0; enemySpawnTime = waveBundles[waveIndex].enemySpawnTime; waveCountdown = waveBundles[waveIndex].duration; SpawnEnemy.Ins.spawnTimer = enemySpawnTime; SpawnEnemy.Ins.stopSpawning = false; GameEventSignals.DoWaveUpdated(waveIndex); } }
protected virtual void OnDestroy() { GameEventSignals.OnMissileExplode -= OnMissileExplode; GameEventSignals.OnMissilePathDetermined -= OnMissilePathDetermined; GameEventSignals.DoMissileNotifyExplosion(this, explosion); }
// manage the missile's movement and destruction protected virtual void Update() { if (!Move()) { GameEventSignals.DoMissileExplode(this, prefabExplosion.GetComponent <Explosion>()); } }
void Awake() { Ins = this; GameEventSignals.OnMapResize += OnMapResize; InputSignals.OnUiEnter += OnUiEnter; InputSignals.OnUiExit += OnUiExit; InputSignals.OnUiDragBegin += OnUiDragBegin; InputSignals.OnUiDragEnd += OnUiDragEnd; rowSlider.onValueChanged.AddListener((float _val) => { var newRowCount = (int)_val; if (newRowCount != Map.Ins.rowCount) { GameEventSignals.DoMapResize(newRowCount, Map.Ins.colCount); } }); colSlider.onValueChanged.AddListener((float _val) => { var newColCount = (int)_val; if (newColCount != Map.Ins.colCount) { GameEventSignals.DoMapResize(Map.Ins.rowCount, newColCount); } }); blockManipulationModeSlider.onValueChanged.AddListener((float _val) => { blockManipulationModeText.text = Utility.GetBlockManipulationModeText(BlockManager.Ins.Mode = (BlockManager.EnumMode)_val); Block.UnhighlightAll(); }); cloningModeButton.onClick.AddListener(() => { BlockManager.Ins.CloningMode = (BlockManager.EnumCloningMode)(((int)BlockManager.Ins.CloningMode + 1) % 2); }); }
void Recharge() { if (rechargeTimer < rechargeTime) { rechargeTimer += Time.deltaTime; GameEventSignals.DoCannonRecharge(this); } }
protected virtual void Awake() { transform.SetParent(ManageSceneSetup.tempObjTransform); GameEventSignals.OnMissileExplode += OnMissileExplode; GameEventSignals.OnMissilePathDetermined += OnMissilePathDetermined; GameEventSignals.DoMissilePathDetermined(); }
// apply damage to all damageable game entities that are within the bounds of the explosion void OnTriggerEnter(Collider _other) { if (_other.CompareTag("EnemyMissile")) { GameEventSignals.DoMissileExplode(_other.GetComponent <EnemyMissile>(), this); } else if (_other.CompareTag("CounterMissile")) { GameEventSignals.DoMissileExplode(_other.GetComponent <CounterMissile>(), this); } else if (_other.CompareTag("Cannon")) { GameEventSignals.DoEntityDamaged(_other.GetComponent <Cannon>()); } }
void OnDestroy() { GlobalManager.cannons.Remove(this); GlobalManager.cannons.Sort(SortByHorizontalPosition); if (GlobalManager.cannons.Count == 0) { GameEventSignals.DoAllCannonsDestroyed(); } GameEventSignals.OnCannonFire -= OnCannonFire; GameEventSignals.OnCannonFailToFire -= OnCannonFailToFire; GameEventSignals.OnCannonRecharge -= OnCannonRecharge; GameEventSignals.OnEntityDamaged -= OnEntityDamaged; GameEventSignals.OnSceneConfigured -= OnSceneConfigured; }
void OnEnemySwitchDirCountUpdated(int _switchDirCount, GameObject _enemy) { foreach (var elem in switchDirLevelsMap) { if (elem.Key == _enemy) { ClearSwitchDirLevels(elem); CreateSwitchDirLevels(_switchDirCount, elem); lockOn = true; for (int i = 0; i < enemies.Count; ++i) { GameEventSignals.DoMissileExplode(enemies.Dequeue(), null); } lockOn = false; } } }
// HELPER FUNC void FireCannon(Cannon _cannon, Vector3 _targetPos) { if (_targetPos.x > ManageSceneSetup.Ins.spawnHorizontalRange.y || _targetPos.x < ManageSceneSetup.Ins.spawnHorizontalRange.x || _targetPos.y > ManageSceneSetup.Ins.spawnVerticalRange.y || _targetPos.y < ManageSceneSetup.Ins.spawnVerticalRange.x) { return; } _cannon.FireNow(); if (_cannon.IsRecharging() || _cannon.AmmoIsDepleted()) { GameEventSignals.DoCannonFailToFire(); } else { GameEventSignals.DoCannonFire(_targetPos); } }
void OnSceneConfigured() { waveIndex = enemyGroupsIndex = enemiesInGroupIndex = 0; enemySpawnTime = waveBundles[waveIndex].enemySpawnTime; waveCountdown = waveBundles[waveIndex].duration; waveCountdownTimer = 0; if (ManageSceneSetup.Ins.enemySpawnerExists) { SpawnEnemy.Ins.spawnTimer = enemySpawnTime; } else { SpawnEnemy.Ins.spawnTimer = SpawnEnemy.Ins.spawnTime; disabled.Value = true; } GameEventSignals.DoWaveUpdated(waveIndex); GameEventSignals.DoWaveCountdownUpdated(); }
void SpawnEnemy_3() { spawnTimer += Time.deltaTime; if (spawnTimer >= spawnTime) { spawnTimer = 0; var cannons = GlobalManager.cannons; Cannon randCannon = cannons[Random.Range(0, cannons.Count)]; EnemyMissile enemy = Instantiate(prefabDefaultEnemy).GetComponent <EnemyMissile>(); enemy.transform.position = new Vector3( randCannon.transform.position.x , ManageSceneSetup.Ins.spawnVerticalRange.y , ManageSceneSetup.Ins.playField.transform.position.z); enemy.transform.LookAt(randCannon.transform.position); enemy.SetDest(randCannon.transform.position); GameEventSignals.DoEnemySpawned(enemy); } }
void Start() { var prefabBlocks = BlockManager.Ins.prefabBlocks; for (int i = 0; i < prefabBlocks.Length; ++i) { var blockButtonGameObject = Instantiate(prefabBlockButton); var blockButtonButton = blockButtonGameObject.GetComponent <Button>(); blockButtonGameObject.transform.SetParent(blockButtonGroup.transform); blockButtonImages.Push(blockButtonGameObject.GetComponent <Image>()); blockButtonImages.Peek().color = prefabBlocks[i].GetComponent <MeshRenderer>().sharedMaterial.color; blockToButtonMap[prefabBlocks[i]] = blockButtonButton; var j = i; blockButtonButton.onClick.AddListener(() => { foreach (var blockButtonImage in blockButtonImages) { blockButtonImage.color = Utility.ModifyAlpha(blockButtonImage.color, buttonNormalColorAlpha); } var currentImage = blockButtonGameObject.GetComponent <Image>(); currentImage.color = Utility.ModifyAlpha(currentImage.color, buttonPressedColorAlpha); BlockManager.Ins.CurrentBlockIndex = j; }); } rowSlider.value = Map.Ins.rowCount; colSlider.value = Map.Ins.colCount; blockManipulationModeSlider.value = blockManipulationModeSlider.maxValue = int.MaxValue; blockManipulationModeSlider.value = (float)BlockManager.Ins.Mode; blockManipulationModeSlider.maxValue = Enum.GetValues(typeof(BlockManager.EnumMode)).Length - 1; blockSeparationSlider.value = Map.Ins.blockSeparation; rowText.text = string.Format("{0} {1}", rowSlider.value, (rowSlider.value != 1) ? "rows" : "row"); colText.text = string.Format("{0} {1}", colSlider.value, (rowSlider.value != 1) ? "columns" : "column"); blockToButtonMap[BlockManager.Ins.prefabBlocks[BlockManager.Ins.CurrentBlockIndex]].onClick.Invoke(); saveSceneButton.onClick.Invoke(); blockSeparationSlider.onValueChanged.AddListener((float _val) => { GameEventSignals.DoMapRescale(_val); }); }
void SpawnEnemy_2() { spawnTimer += Time.deltaTime; if (spawnTimer >= ManageWave.Ins.enemySpawnTime) { spawnTimer = 0; var cannons = GlobalManager.cannons; var waveManager = ManageWave.Ins; Cannon randCannon = cannons[Random.Range(0, cannons.Count)]; EnemyMissile enemy = Instantiate( waveManager.waveBundles[waveManager.waveIndex].enemyGroupBundles[waveManager.enemyGroupsIndex].prefab).GetComponent <EnemyMissile>(); enemy.transform.position = new Vector3( Random.Range(ManageSceneSetup.Ins.spawnHorizontalRange.x, ManageSceneSetup.Ins.spawnHorizontalRange.y) , ManageSceneSetup.Ins.spawnVerticalRange.y , ManageSceneSetup.Ins.playField.transform.position.z); enemy.transform.LookAt(randCannon.transform.position); enemy.SetDest(randCannon.transform.position); GameEventSignals.DoEnemySpawned(enemy); } }
void OnSceneLoaded(Scene _scene, LoadSceneMode _mode) { if (_scene.buildIndex != 0) { waveManagerExists = (GameObject.FindWithTag("WaveManager") != null); cannonManagerExists = (GameObject.FindWithTag("CannonManager") != null); enemySpawnerExists = (GameObject.FindWithTag("EnemySpawner") != null); playField = GameObject.FindWithTag("PlayField"); spawnVerticalRange = new Vector2( playField.transform.position.y - playField.GetComponent <MeshRenderer>().bounds.extents.y , playField.transform.position.y + playField.GetComponent <MeshRenderer>().bounds.extents.y ); spawnHorizontalRange = new Vector2( playField.transform.position.x - playField.GetComponent <MeshRenderer>().bounds.extents.x , playField.transform.position.x + playField.GetComponent <MeshRenderer>().bounds.extents.x ); playFieldLength = spawnVerticalRange.y - spawnVerticalRange.x; playFieldWidth = spawnHorizontalRange.y - spawnHorizontalRange.x; InitTransform(ref tempObjTransform, "Temporary Objects"); InitTransform(ref cannonParentTransform, "Cannons Temp"); if (cannonManagerExists) { for (int i = GlobalManager.cannons.Count - 1; i >= 0; --i) { Destroy(GlobalManager.cannons[i].gameObject); GlobalManager.cannons.RemoveAt(i); } } GameEventSignals.DoSceneConfigured(); } }
void OnAllCannonsDestroyed() { GameEventSignals.DoLevelEnd(EnumLevelEndState.defeat); }
void OnDestroy() { TempObjManager.Instance.tempObjs.Remove(this); GameEventSignals.DoPreyDespawned(this); }
void Start() { TempObjManager.Instance.tempObjs.Add(this); GameEventSignals.DoPreySpawned(this); }
void OnLastWaveEnd() { GameEventSignals.DoLevelEnd(EnumLevelEndState.victory); }