Ejemplo n.º 1
0
    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);
        }
    }
Ejemplo n.º 2
0
    protected virtual void OnDestroy()
    {
        GameEventSignals.OnMissileExplode        -= OnMissileExplode;
        GameEventSignals.OnMissilePathDetermined -= OnMissilePathDetermined;

        GameEventSignals.DoMissileNotifyExplosion(this, explosion);
    }
Ejemplo n.º 3
0
 // manage the missile's movement and destruction
 protected virtual void Update()
 {
     if (!Move())
     {
         GameEventSignals.DoMissileExplode(this, prefabExplosion.GetComponent <Explosion>());
     }
 }
Ejemplo n.º 4
0
    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);
        });
    }
Ejemplo n.º 5
0
 void Recharge()
 {
     if (rechargeTimer < rechargeTime)
     {
         rechargeTimer += Time.deltaTime;
         GameEventSignals.DoCannonRecharge(this);
     }
 }
Ejemplo n.º 6
0
    protected virtual void Awake()
    {
        transform.SetParent(ManageSceneSetup.tempObjTransform);

        GameEventSignals.OnMissileExplode        += OnMissileExplode;
        GameEventSignals.OnMissilePathDetermined += OnMissilePathDetermined;

        GameEventSignals.DoMissilePathDetermined();
    }
Ejemplo n.º 7
0
 // 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>());
     }
 }
Ejemplo n.º 8
0
    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;
    }
Ejemplo n.º 9
0
    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;
            }
        }
    }
Ejemplo n.º 10
0
    // 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);
        }
    }
Ejemplo n.º 11
0
    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();
    }
Ejemplo n.º 12
0
    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);
        }
    }
Ejemplo n.º 13
0
    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); });
    }
Ejemplo n.º 14
0
    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);
        }
    }
Ejemplo n.º 15
0
    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();
        }
    }
Ejemplo n.º 16
0
 void OnAllCannonsDestroyed()
 {
     GameEventSignals.DoLevelEnd(EnumLevelEndState.defeat);
 }
Ejemplo n.º 17
0
 void OnDestroy()
 {
     TempObjManager.Instance.tempObjs.Remove(this);
     GameEventSignals.DoPreyDespawned(this);
 }
Ejemplo n.º 18
0
 void Start()
 {
     TempObjManager.Instance.tempObjs.Add(this);
     GameEventSignals.DoPreySpawned(this);
 }
Ejemplo n.º 19
0
 void OnLastWaveEnd()
 {
     GameEventSignals.DoLevelEnd(EnumLevelEndState.victory);
 }