示例#1
0
    public void ReduceEnemyNum()
    {
        if (spawnEnemyNum == 0)
        {
            return;
        }

        --spawnEnemyNum;

        EnemyInitState[] newSpawnEnemys  = new EnemyInitState[spawnEnemyNum];
        bool[]           newSpawnDirLeft = new bool[spawnEnemyNum];
        float[]          newSpawnDelay   = new float[spawnEnemyNum];
        EnemyValue[]     newEnemeyValue  = new EnemyValue[spawnEnemyNum];

        //Debug.Log(spawnEnemyNum);
        //Debug.Log(spawnEnemy.Length);
        for (int i = 0; i < spawnEnemyNum; ++i)
        {
            newSpawnEnemys[i]  = spawnEnemy[i];
            newSpawnDirLeft[i] = spawnDirLeft[i];
            newSpawnDelay[i]   = spawnDelay[i];
            newEnemeyValue[i]  = spawnEnemyValue[i];
        }

        spawnEnemy      = newSpawnEnemys;
        spawnDirLeft    = newSpawnDirLeft;
        spawnDelay      = newSpawnDelay;
        spawnEnemyValue = newEnemeyValue;
    }
示例#2
0
    //Almost the same thing as 'calculatePassiveEnemy', with some differences in the parameters
    public EnemyValue calculateAlteredEnemy(Enemy enemy, List <Enemy> listOfAlteredEnemies, List <Enemy> listOfPassiveEnemies, float life, float strength)
    {
        Enemy targetedEnemy      = null;
        float targetedEnemyValue = Mathf.NegativeInfinity;

        for (int e = 0; e < listOfPassiveEnemies.Count; e++)
        {
            float distance          = Vector2.Distance(listOfPassiveEnemies[e].transform.position, enemy.transform.position);
            float currentEnemyValue = calculateAlteredTarget(enemy, distance, listOfPassiveEnemies[e].getAimedBy(),
                                                             listOfAlteredEnemies.Count, life, listOfPassiveEnemies[e].getLife(), strength, listOfPassiveEnemies[e].getStrength());

            if (currentEnemyValue > targetedEnemyValue)
            {
                targetedEnemy      = listOfPassiveEnemies[e];
                targetedEnemyValue = currentEnemyValue;
            }
        }

        EnemyValue newEnemyValue = new EnemyValue();

        newEnemyValue.enemy  = targetedEnemy;
        newEnemyValue.action = calculateAlteredAction(enemy, targetedEnemy.getAimedBy(), life,
                                                      targetedEnemy.getLife(), strength, targetedEnemy.getStrength());

        return(newEnemyValue);
    }
示例#3
0
    //적 한 마리씩 공격
    protected void AttackEnemy(GameObject _enemy)
    {
        //어택 사운드
        sePlayer.PlaySE(1);
        //카메라 흔들림
        cam.ShakeCam(0.12f);

        EnemyValue _eValue = _enemy.GetComponent <Enemy>().eValue;
        Vector2    _pos    = _enemy.transform.position;

        if (comboNum > 2)
        {
            if (_enemy.GetComponent <Enemy>().EnemyDeathCheck(true))   //피니쉬로 애를 때렸더니 죽었어
            {
                IncreaseHp();
                SpawnScore(CalcScore(_eValue, true), _pos); //스코어 2
                IncreaseEnemyCombo();
                threeComCompleteNum += 1;                   //피버 조건 올려주기
                //atkBox.enemyInBox.Remove(_enemy.gameObject);
            }
        }
        else
        {
            if (_enemy.GetComponent <Enemy>().EnemyDeathCheck(false)) //그냥 애를 때렸더니 죽었어
            {
                IncreaseHp();
                SpawnScore(CalcScore(_eValue, false), _pos);
                IncreaseEnemyCombo();
                //atkBox.enemyInBox.Remove(_enemy.gameObject);
            }
        }
    }
示例#4
0
    //------------------------
    //-----INITIALIZATION-----
    //------------------------
    private void Start()
    {
        //-----CHANGE GAME STATUS
        gameStatus = GameStatus.Initializing;

        //-----RESET TIMESCALE
        Time.timeScale = 1;

        /* UI */
        // Init UIManager
        FindObjectOfType <UIManager>().GetComponents();

        // Deactivate start UI
        //startScreen.SetActive(false);

        // Activate game UI */
        startScreen.SetActive(true);
        UIManager.PlayStartScreenIn();

        //-----RESET PROGRESS FROM PREVIOUS ROUND
        progressTracker = GetComponent <ProgressTracker>();
        progressTracker.ResetProgress();

        //-----RESET ENEMY CHARGE
        EnemyValue.ResetCharge();

        //-----RESET ENEMY COUNTER
        EnemyCounter.ResetCounter();

        //-----INITIALIZE ENEMY SPAWNER & COORDINATOR
        enemyCoordinator.InitializeSpawner();

        //-----INITIALIZE PLAYER
        playerSwordInitializer.InitializeSword();
    }
示例#5
0
    int CalcScore(EnemyValue _eValue, int _speedLv)
    {
        int _score      = 0;
        int _baseScore  = CalcScore(_eValue);
        int _totalScore = 0;

        switch (_speedLv)
        {
        case 0:

            _score += 1000;
            break;

        case 1:
            _score += 2000;
            break;

        case 2:
            _score += 3000;
            break;
        }

        _totalScore = _score + _baseScore;
        score      += _score;
        return(_totalScore);
    }
示例#6
0
    // Start is called before the first frame update
    void Start()
    {
        enemyValue         = GetComponent <EnemyValue>();
        enemySlotRequester = GetComponent <EnemySlotRequester>();
        enemyMovement      = GetComponent <EnemyMovement>();

        maxStopCount = 3;//Random.Range(0, 5);

        enemyValue.RandomizeValue();
        enemySlotRequester.RequestSlot(currentTrack);
    }
示例#7
0
    int CalcScore(EnemyValue _eValue, bool _isFinish)
    {
        int _score      = 0;
        int _baseScore  = CalcScore(_eValue);
        int _totalScore = 0;

        if (_isFinish)
        {
            _score += 500;
        }

        _totalScore = _score + _baseScore;
        score      += _score;
        return(_totalScore);
    }
示例#8
0
    public void Swap(IEnemyValue enemyValue)
    {
        EnemyValue <T> eVal = enemyValue as EnemyValue <T>;

        if (enemyValue == null)
        {
            Debug.LogWarning("Value mismatch");
            return;
        }

        T temp = Value;

        Value      = eVal.Value;
        eVal.Value = temp;
    }
示例#9
0
    int CalcScore(EnemyValue _eValue)
    {
        int _score = 500;

        switch (_eValue)
        {
        case EnemyValue.Normal:
            score += _score;
            return(_score);
        }

        _score = 1000;
        score += 1000;

        return(_score);
    }
示例#10
0
    //로프 공격(박스안의 모든 적 공격)
    protected void RopeAttackEnemy()
    {
        for (int i = 0; i < atkBox.enemyInBox.Count; ++i)
        {
            sePlayer.PlaySE(1);
            if (atkBox.enemyInBox[i].GetComponent <Enemy>().EnemyDeathCheck(true))
            {
                IncreaseHp();

                EnemyValue _eValue = atkBox.enemyInBox[i].GetComponent <Enemy>().eValue;
                Vector2    _pos    = atkBox.enemyInBox[i].transform.position;
                SpawnScore(CalcScore(_eValue, preSpdLv), _pos);
                IncreaseEnemyCombo();
                ropeAtkCompleteNum += 1;
            }
        }
        atkBox.enemyInBox.Clear();
    }
示例#11
0
 void Start()
 {
     GetComponent <BoxCollider>().isTrigger = true;
     _EV = GameDataContainer.Instance.GDC.EnemyValues.Find(o => o.Name == UnitName);
     if (_EV != null)
     {
         _DS = new DamageScript(_EV.Health, OnDeath);
         Debug.Log(_EV.Personality);
         if (_EV.Personality)
         {
             PickPersonality();
         }
     }
     else
     {
         Debug.LogWarning("NO DATA FOUND");
         Destroy(this.gameObject);
     }
 }
示例#12
0
    public void DeathSequence()
    {
        //-----GET VALUE FROM STORAGE COMPONENT
        EnemyValue enemyValue = GetComponent <EnemyValue>();

        //-----INCREMENT SCORE
        ProgressTracker.IncrementScore(enemyValue.scoreValue);

        //-----ADD COINS
        if (enemyValue.coinValue > 0)
        {
            ProgressTracker.IncrementCoins(enemyValue.coinValue);
        }

        //-----STOP ALLIGNING WITH SLOT
        GetComponent <EnemyMovement>().StopAllignment();

        //-----GET & FREE PREVIOUS SLOT
        Utils.Directions occupiedSlotDirection = transform.parent.transform.GetComponent <TrackSlotFinal>().GetDirection();
        transform.parent.transform.GetComponent <TrackSlot>().FreeSlot();

        //-----DECREMENT ENEMY COUNT
        EnemyCounter.DecrementCounter();

        //-----INCREMENT CHARGING SPEED
        EnemyValue.IncrementCharge();

        //-----DECREMENT SPAWN COOLDOWN
        EnemySpawnCoordinator.DecrementSpawnCooldown();

        //-----INCREMENT ATTACK MUSIC PITCH
        FindObjectOfType <MusicController>().IncrementPitch();

        //-----PLAY ANIMATION
        GetComponent <EnemyDeathAnimator>().PlayDeathAnimation(occupiedSlotDirection);

        //-----PLAY DEATH SFX
        GetComponent <EnemyAudioController>().PlayEnemyDeathSFX();

        //-----SHAKE CAMERA
        Camera.main.GetComponent <CameraShaker>().ShakeCam(cameraShakeDuration, cameraShakeMagnitude);
    }
示例#13
0
    public override void OnInspectorGUI()
    {
        enemyAttribute = serializedObject.targetObject as EnemyAttribute;

        if (enemyAttribute.values.Count > 0)
        {
            foreach (IEnemyValue iev in enemyAttribute.values)
            {
                EnemyValue <int> intval = iev as EnemyValue <int>;
                if (intval != null)
                {
                    EditorGUILayout.SelectableLabel("" + intval.Value);
                    EditorGUILayout.IntField(intval.Value);
                    continue;
                }
                EnemyValue <float> floatval = iev as EnemyValue <float>;
                if (floatval != null)
                {
                    EditorGUILayout.SelectableLabel("" + floatval.Value);
                    EditorGUILayout.FloatField(floatval.Value);
                    continue;
                }
                EnemyValue <string> stringval = iev as EnemyValue <string>;
                if (stringval != null)
                {
                    EditorGUILayout.SelectableLabel("" + stringval.Value);
                    EditorGUILayout.TextField(stringval.Value);
                    continue;
                }
            }
        }

        DrawDefaultInspector();
        if (GUILayout.Button("Swap all attributes"))
        {
            enemyAttribute.SwapAllAttributes(enemyAttribute.swapWith);
        }

        serializedObject.ApplyModifiedProperties();
    }
示例#14
0
    public void ChangeEnemyNum(int _num)
    {
        if (_num < 0)
        {
            _num = 0;
        }

        //spawnEnemyNum = _num;
        EnemyInitState[] newSpawnEnemys  = new EnemyInitState[_num];
        bool[]           newSpawnDirLeft = new bool[_num];
        float[]          newSpawnDelay   = new float[_num];
        EnemyValue[]     newEnemyValue   = new EnemyValue[_num];

        if (_num > spawnEnemyNum)
        {
            for (int i = 0; i < spawnEnemyNum; ++i)
            {
                newSpawnEnemys[i]  = spawnEnemy[i];
                newSpawnDirLeft[i] = spawnDirLeft[i];
                newSpawnDelay[i]   = spawnDelay[i];
                newEnemyValue[i]   = spawnEnemyValue[i];
            }
        }
        else
        {
            for (int i = 0; i < _num; ++i)
            {
                newSpawnEnemys[i]  = spawnEnemy[i];
                newSpawnDirLeft[i] = spawnDirLeft[i];
                newSpawnDelay[i]   = spawnDelay[i];
                newEnemyValue[i]   = spawnEnemyValue[i];
            }
        }

        spawnEnemyNum   = _num;
        spawnEnemy      = newSpawnEnemys;
        spawnDirLeft    = newSpawnDirLeft;
        spawnDelay      = newSpawnDelay;
        spawnEnemyValue = newEnemyValue;
    }
示例#15
0
    public EnemyValue calculatePassiveEnemy(Enemy enemy, List <Enemy> listOfAlteredEnemies, List <Enemy> listOfPassiveEnemies, float life, float strength, float nearAllies)
    {
        Enemy targetedEnemy      = null;                                                                             //This will be the target of the current enemy
        float targetedEnemyValue = Mathf.NegativeInfinity;                                                           //This float will be used to check what enemy will be targeted; the enemy with bigger value will be targeted

        for (int e = 0; e < listOfAlteredEnemies.Count; e++)                                                         //Iterates over the list of altered enemies to check the target
        {
            float distance = Vector2.Distance(listOfAlteredEnemies[e].transform.position, enemy.transform.position); //The distance from the enemy to the possible target

            //The lines below will call the function calculatePassiveTarget, which is
            //responsible for getting a numeric value to decide the target. You can see
            //more info about what is happening on the function itself
            float currentEnemyValue = calculatePassiveTarget(distance, enemy.getAimedBy().Count,
                                                             listOfPassiveEnemies.Count, listOfAlteredEnemies.Count, nearAllies, life,
                                                             listOfAlteredEnemies[e].getLife(), strength, listOfAlteredEnemies[e].getStrength());

            if (currentEnemyValue > targetedEnemyValue)
            {
                //If the enemy that is being analyzed now has a bigger value than the current
                //target, it will become the target
                targetedEnemy      = listOfAlteredEnemies[e];
                targetedEnemyValue = currentEnemyValue;
            }
        }

        EnemyValue newEnemyValue = new EnemyValue();

        newEnemyValue.enemy = targetedEnemy; //After checking all of the enemies, we can decide our target

        //The lines below will call the function calculatePassiveAction, which is
        //responsible for getting a numeric value to decide what will be the action of
        //this enemy. You can see more info about what is happening on the function itself
        newEnemyValue.action = calculatePassiveAction(enemy.getAimedBy().Count, listOfPassiveEnemies.Count,
                                                      listOfAlteredEnemies.Count, nearAllies, life, targetedEnemy.getLife(),
                                                      strength, targetedEnemy.getStrength());

        return(newEnemyValue); //Returns the target and the action to the enemy
    }
示例#16
0
    public void AddEnemyNum()
    {
        ++spawnEnemyNum;

        EnemyInitState[] newSpawnEnemys  = new EnemyInitState[spawnEnemyNum];
        bool[]           newSpawnDirLeft = new bool[spawnEnemyNum];
        float[]          newSpawnDelay   = new float[spawnEnemyNum];
        EnemyValue[]     newEnemeyValue  = new EnemyValue[spawnEnemyNum];


        for (int i = 0; i < spawnEnemyNum - 1; ++i)
        {
            newSpawnEnemys[i]  = spawnEnemy[i];
            newSpawnDirLeft[i] = spawnDirLeft[i];
            newSpawnDelay[i]   = spawnDelay[i];
            newEnemeyValue[i]  = spawnEnemyValue[i];
        }

        spawnEnemy      = newSpawnEnemys;
        spawnDirLeft    = newSpawnDirLeft;
        spawnDelay      = newSpawnDelay;
        spawnEnemyValue = newEnemeyValue;
    }
示例#17
0
 void SpawnEnnemy(EnemyValue enemy)
 {
     Instantiate(enemy.enemyPrefab, spawnPoint.position, spawnPoint.rotation, container);
     valueCurrentWave -= enemy.value;
     EnemiesAlives++;
 }
示例#18
0
    public void SyncVariableLength()
    {
        if (spawnEnemyNum == 0)
        {
            return;
        }

        //Debug.Log("spawnNum : " + spawnEnemyNum + "Asd : " + spawnEnemy.Length);
        if (spawnEnemyNum != spawnEnemy.Length)
        {
            EnemyInitState[] newSpawnEnemys = new EnemyInitState[spawnEnemyNum];
            for (int i = 0; i < newSpawnEnemys.Length; ++i)
            {
                if (i >= spawnEnemy.Length)
                {
                    break;
                }
                newSpawnEnemys[i] = spawnEnemy[i];
            }
            spawnEnemy = newSpawnEnemys;
        }

        if (spawnEnemyNum != spawnDirLeft.Length)
        {
            bool[] newSpawnDirLeft = new bool[spawnEnemyNum];
            for (int i = 0; i < newSpawnDirLeft.Length; ++i)
            {
                if (i >= spawnDirLeft.Length)
                {
                    break;
                }
                newSpawnDirLeft[i] = spawnDirLeft[i];
            }
            newSpawnDirLeft = spawnDirLeft;
        }

        if (spawnEnemyNum != spawnDelay.Length)
        {
            float[] newDelayEnemys = new float[spawnEnemyNum];
            for (int i = 0; i < newDelayEnemys.Length; ++i)
            {
                if (i >= spawnDelay.Length)
                {
                    break;
                }
                newDelayEnemys[i] = spawnDelay[i];
            }
            spawnDelay = newDelayEnemys;
        }


        if (spawnEnemyNum != spawnEnemyValue.Length)
        {
            EnemyValue[] newSpawnEnemyValue = new EnemyValue[spawnEnemyNum];
            for (int i = 0; i < newSpawnEnemyValue.Length; ++i)
            {
                if (i >= spawnEnemyValue.Length)
                {
                    break;
                }

                newSpawnEnemyValue[i] = spawnEnemyValue[i];
            }
            spawnEnemyValue = newSpawnEnemyValue;
        }
    }