private TypeOfEnemy GetMutantData(string[] mutantStrings, GameObject enemyPrefab)
    {
        string      mutantDataString = " " + mutantStrings[1];
        TypeOfEnemy mutantData       = GetMutationByName(mutantDataString, enemyPrefab);

        return(mutantData);
    }
    private MutatedEnemy ConvertStringToMutatedEnemy(string mutatedEnemyToBeGenerated)
    {
        string[]    mutantStrings = mutatedEnemyToBeGenerated.Split(null);
        GameObject  enemyPrefab   = GetEnemyPrefab(mutantStrings);
        TypeOfEnemy mutantData    = GetMutantData(mutantStrings, enemyPrefab);

        return(new MutatedEnemy(enemyPrefab, mutantData));
    }
예제 #3
0
 public void SetEnemyType(TypeOfEnemy type)
 {
     typeOfEnemy = type;
     if (typeOfEnemy.GetEnemyTypeTag() != "target")
     {
         //InitializePerformanceCalculationMethod();
     }
 }
예제 #4
0
    private GameObject GenerateMutantEnemy()
    {
        MutatedEnemy mutatedEnemyData = mutationManager.GetRandomMutatedEnemy();

        GameObject  enemyToMutate    = mutatedEnemyData.GetEnemyPrefab();
        TypeOfEnemy mutatedEnemyInfo = mutatedEnemyData.GetMutantData();
        GameObject  mutatedEnemy     = GenerateMutatedEnemy(new MutatedEnemy(enemyToMutate, mutatedEnemyInfo));

        EnemyLibraryData.SetMutant(new MutatedEnemy(enemyToMutate, mutatedEnemyInfo));
        return(mutatedEnemy);
    }
    private TypeOfEnemy GetMutationByName(string mutationString, GameObject enemyToMutate)
    {
        TypeOfEnemy enemyToMutateInfo = enemyToMutate.GetComponent <EnemyData>().GetTypeOfEnemy();
        var         mutatedEnemyInfo  = Instantiate(enemyToMutateInfo);

        foreach (Mutation mutation in possibleMutations)
        {
            if (string.Equals(mutation.GetMutatedStatString(), mutationString))
            {
                mutatedEnemyInfo.MutateStat(mutation.GetMutatedStat());
            }
        }
        return(mutatedEnemyInfo);
    }
    private void ApplyCharacteristics(GameObject enemy, TypeOfEnemy typeOfEnemy)
    {
        var    enemyTier = DungeonManager.instance.tierOfEnemies[typeOfEnemy];
        string tierName  = "";

        //Convert 0,1,2,3,4,5 to default, Tier1, Tier2 as in the loaded json file
        if (enemyTier == 0 || enemyTier == 1)
        {
            tierName = "default";
        }
        if (enemyTier == 2 || enemyTier == 3)
        {
            tierName = "Tier1";
        }
        if (enemyTier == 4)
        {
            tierName = "Tier2";
        }
        var mInfo = DungeonManager.instance.monstersInfo[enemy.name][tierName];

        if (enemy.name == "iceZombieTest")
        {
            enemy.GetComponent <IceZombieController>().timeBetweenAttacksInSecs        = mInfo.timeBetweenAttacks;
            enemy.GetComponent <IceZombiePhysicalAttack>().DurationOfAttackInSecs      = mInfo.durationOfAttacks;
            enemy.GetComponent <IceZombiePhysicalAttack>().attackFlightSpeed           = mInfo.attackSpeed;
            enemy.GetComponent <Thesis.Enemy.EnemyMovement>().stoppingDistanceToPlayer = mInfo.stoppingDistance;
            enemy.GetComponent <Thesis.Enemy.EnemyMovement>().movementSpeed            = mInfo.movementSpeed;
        }
        else
        {
            var enemyCharac = enemy.GetComponentInChildren <BulletSpawner>();
            enemyCharac.numberOfBullets       = (int)mInfo.numberBullets;
            enemyCharac.bulletSpeed           = (int)mInfo.bulletSpeed;
            enemyCharac.numberOfWaves         = (int)mInfo.numberOfWaves;
            enemyCharac.secondsBetweenWaves   = (int)mInfo.secBtwWaves;
            enemyCharac.secondsBetweenShots   = mInfo.secBtwShots;
            enemyCharac.angleToShootInDegrees = mInfo.angleToShoot;
            enemy.GetComponent <Thesis.Enemy.EnemyController>().attackDistance                     = mInfo.attackDistance;
            enemy.GetComponent <Thesis.Enemy.EnemyMovement>().stoppingDistanceToPlayer             = mInfo.stoppingDistance;
            enemy.GetComponent <Thesis.Enemy.EnemyMovement>().movementSpeed                        = mInfo.movementSpeed;
            enemy.GetComponentInChildren <Thesis.Enemy.EnemyShoot>().timeToWaitBeforeShootingAgain = mInfo.attackSpeed;
        }
    }
    private void ApplyAuraEffect(GameObject enemy, TypeOfEnemy typeOfEnemy)
    {
        var enemyTier = DungeonManager.instance.tierOfEnemies[typeOfEnemy];
        var effects   = DungeonManager.instance.tierEffects;

        //Convert 0,1,2,3,4,5 to default, Tier1, Tier2 as in the loaded json file
        if (enemyTier == 0 || enemyTier == 1)
        {
            Instantiate(effects[0].particleSystem, enemy.transform.position, Quaternion.identity, enemy.transform);
        }

        if (enemyTier == 2 || enemyTier == 3)
        {
            Instantiate(effects[1].particleSystem, enemy.transform.position, Quaternion.identity, enemy.transform);
        }

        if (enemyTier == 4)
        {
            Instantiate(effects[2].particleSystem, enemy.transform.position, Quaternion.identity, enemy.transform);
        }
    }
예제 #8
0
    private void InitializePossibleEnemies()
    {
        List <GameObject> enemiesToRemoveFromPrefab;

        enemiesToRemoveFromPrefab = new List <GameObject>();
        foreach (GameObject enemyPrefab in enemyTypePrefabs)
        {
            if (enemyPrefab != null)
            {
                TypeOfEnemy enemyType = enemyPrefab.GetComponent <EnemyData>().GetTypeOfEnemy();
                typeOfEnemyToPrefab.Add(enemyType, enemyPrefab);
                possibleEnemies.Add(enemyType);
            }
            else
            {
                enemiesToRemoveFromPrefab.Add(enemyPrefab);
            }
        }
        foreach (GameObject emptyEnemyToRemove in enemiesToRemoveFromPrefab)
        {
            enemyTypePrefabs.Remove(emptyEnemyToRemove);
        }
    }
 public MutatedEnemy(GameObject enemyPrefab, TypeOfEnemy mutantData)
 {
     this.enemyPrefab = enemyPrefab;
     this.mutantData  = mutantData;
 }
예제 #10
0
 public GameObject GetEnemyTypePrefab(TypeOfEnemy toe)
 {
     return(typeOfEnemyToPrefab[toe]);
 }