Exemplo n.º 1
0
    //Chooses random enemy from list of available enemies
    private Enemy FindEnemyToSpawn(Wave currWave)
    {
        int enemyIndex            = Random.Range(0, currWave.enemiesToSpawn.Count);
        EnemyTypeCounter eCounter = currWave.enemiesToSpawn[enemyIndex];

        eCounter.spawnAmount--;
        currWave.enemiesToSpawn[enemyIndex] = eCounter;

        //If wave has spawn its allotted number of an enemy type, remove it as an option
        if (eCounter.spawnAmount <= 0)
        {
            currWave.enemiesToSpawn.Remove(eCounter);
        }
        return(eCounter.enemyType);
    }
Exemplo n.º 2
0
    private void EnableInitiation()
    {
        if (EnemyGenerator.instance != null)
        {
            AddObjectToAllObjectList();
        }
        else
        {
            StartCoroutine(AddObjectToObjectListTimedOut());
        }

        if (MainCount.instance != null)
        {
            float mass = MainCount.instance.FloatRandom(enemyScriptable.enemyMassMin, enemyScriptable.enemyMassMax);
            if (incomeingData != null && incomeingData.isSecondGeneratedObject)
            {
                stats.xSpeed    = incomeingData.xSpeed;
                stats.ySpeed    = incomeingData.ySpeed;
                stats.moveRight = incomeingData.moveRight;
                stats.moveUp    = incomeingData.moveUp;
            }
            else
            {
                stats.speedMin = enemyScriptable.speedMin;
                stats.speedMax = enemyScriptable.speedMax;
            }
            rb2d.mass  = mass;
            stats.mass = mass;
            stats.consumePercentage = MainCount.instance.FloatRandom(enemyScriptable.minConsumeValue, enemyScriptable.maxConsumeValue) / 100;
            stats.solidValue        = MainCount.instance.FloatRandom(enemyScriptable.minSolidValue, enemyScriptable.maxSolidValue);
            stats.consumeType       = enemyScriptable.consumeType;
            stats.enemyType         = EnemyTypeCounter.GetEnemyType(mass, stats.solidValue);
            stats.isRandomMovement  = enemyScriptable.isRandomMovement;
            ChangeType(stats.enemyType);

            enemyMovement.Move(rb2d, stats);

            BaseDistanseCheck baseDistanseCheck = new BaseDistanseCheck(this);
        }
    }
Exemplo n.º 3
0
    private void ChangeType(SpaceBodyType newEnemyType)//2
    {
        EnemyAbiliteesCounter enemyAbiliteesCounter = new EnemyAbiliteesCounter();
        EnemyAbiliteesDTO     enemyAbiliteesDTO     = enemyAbiliteesCounter.GetEnemyAbilitees(newEnemyType);

        stats.hasGavity    = enemyAbiliteesDTO.hasGavity;
        stats.gravityRange = enemyAbiliteesDTO.gravityRange;
        stats.gravityValue = enemyAbiliteesDTO.gravityValue;
        enemyAttractor.Attract(gameObject, stats);
        if (stats.enemyType != newEnemyType)
        {
            //image here
            stats.enemyType = EnemyTypeCounter.GetEnemyType(stats.mass, stats.solidValue);
            EnemyParametaers parametaers = EnemyParametersLibrary.instance.GetEnemyParametaers(stats.enemyType);
            spriteRenderer.sprite = parametaers.sprite;
            circleCollider.radius = parametaers.colliderRadius;
            if (parametaers.isChangingColor)
            {
                spriteRenderer.color = GetEnemyColorAccordingToPlayerStats();
            }
        }
    }
Exemplo n.º 4
0
    //WARNING: Inefficient implementation as its the last week of development
    // and I didn't know Unity allows you to edit custom structs in the inspector
    private void InitializeWaves()
    {
        //Wave 1:
        //Create enemy types + amounts featured in wave
        List <EnemyTypeCounter> eList1 = new List <EnemyTypeCounter>();

        EnemyTypeCounter eGrunt1 = new EnemyTypeCounter(grunt_prefab, 10);

        //Add those types + amounts to the list of enemiesTypes.
        eList1.Add(eGrunt1);

        //Create wave and add it to the list of waves
        Wave wave1 = new Wave(1, eList1, false, null, false, null);

        waves.Add(wave1);

        //Wave 2:
        List <EnemyTypeCounter> eList2 = new List <EnemyTypeCounter>();

        EnemyTypeCounter eGrunt2 = new EnemyTypeCounter(grunt_prefab, 10);
        EnemyTypeCounter eMage2  = new EnemyTypeCounter(mage_prefab, 5);
        EnemyTypeCounter eSmall2 = new EnemyTypeCounter(small_prefab, 3);

        eList2.Add(eGrunt2);
        eList2.Add(eMage2);
        eList2.Add(eSmall2);
        Wave wave2 = new Wave(2, eList2, false, null, false, null);

        waves.Add(wave2);

        //Wave 3:
        List <EnemyTypeCounter> eList3 = new List <EnemyTypeCounter>();

        Enemy[]          wave3Start = { grunt_prefab, grunt_prefab, grunt_prefab, grunt_prefab, grunt_prefab };
        EnemyTypeCounter eGrunt3    = new EnemyTypeCounter(grunt_prefab, 6);
        EnemyTypeCounter eBomber3   = new EnemyTypeCounter(bomber_prefab, 7);
        EnemyTypeCounter eMage3     = new EnemyTypeCounter(mage_prefab, 2);

        Enemy[] wave3End = { big_prefab };

        eList3.Add(eGrunt3);
        eList3.Add(eBomber3);
        eList3.Add(eMage3);
        Wave wave3 = new Wave(3, eList3, true, wave3Start, true, wave3End);

        waves.Add(wave3);

        //Wave 4:
        List <EnemyTypeCounter> eList4 = new List <EnemyTypeCounter>();

        Enemy[]          wave4Start = { big_prefab };
        EnemyTypeCounter eGrunt4    = new EnemyTypeCounter(grunt_prefab, 12);
        EnemyTypeCounter eMage4     = new EnemyTypeCounter(mage_prefab, 6);
        EnemyTypeCounter eBomber4   = new EnemyTypeCounter(bomber_prefab, 4);
        EnemyTypeCounter eSmall4    = new EnemyTypeCounter(small_prefab, 2);

        Enemy[] wave4End = { big_prefab };

        eList4.Add(eGrunt4);
        eList4.Add(eMage4);
        eList4.Add(eBomber4);
        eList4.Add(eSmall4);
        Wave wave4 = new Wave(4, eList4, true, wave4Start, true, wave4End);

        waves.Add(wave4);
    }
Exemplo n.º 5
0
 public virtual SpaceBodyType GetType(float mass, float solid)
 {
     return(EnemyTypeCounter.GetEnemyType(mass, solid));
 }