コード例 #1
0
    void SpawnGeneric(SpaceMonster genericMonster, int numberSpawnedAtOnce, int spawnRoundPowerCap)
    {
        //TODO: fix this up later
        for (int i = 0; i < numberSpawnedAtOnce; i++)
        {
            if (currentNumberOfEnemies == maxNumberOfEnemies)
            {
                atEnemyCapacity = true;
                break;
            }
            SpaceMonster genericMonster_ = enemiesToAppearOnThisLevel.enemyTypes[UnityEngine.Random.Range(0, enemiesToAppearOnThisLevel.enemyTypes.Count - 1)];

            SpaceMonster ourNewMonster = genericMonster.GetPooledInstance <SpaceMonster>();
            ourNewMonster.transform.position = FindLocationInSafeZone.FindLocationInCircleExclusion(gameStateHandler.darkStar, 3.0f);
            // BlueDwarf newBlueDwarf = blueDwarfPrefab.GetPooledInstance<BlueDwarf>();
            // newBlueDwarf.transform.position = FindLocationInSafeZone.FindLocationInCircleExclusion(gameStateHandler.darkStar, 3.0f);
            Type ourType = ourNewMonster.GetType();
            if (!enemyDirectory.ContainsKey(ourType))
            {
                List <GameObject> newGOsOfThisSpaceMonsterTypeList = new List <GameObject>();
                enemyDirectory.Add(ourType, newGOsOfThisSpaceMonsterTypeList);
                enemyDirectory[ourType].Add(ourNewMonster.gameObject);
                // List<GameObject> blueDwarfList = new List<GameObject>();
                // enemyDirectory.Add(typeof(BlueDwarf), blueDwarfList);
                // enemyDirectory[typeof(BlueDwarf)].Add(ourNewMonster.gameObject);
            }
            else
            {
                //enemyDirectory[typeof(BlueDwarf)].Add(ourNewMonster.gameObject);
                enemyDirectory[ourType].Add(ourNewMonster.gameObject);
            }
            currentNumberOfEnemies++;
        }
    }
コード例 #2
0
    void SpawnGeneric_(int numberSpawnedAtOnce, int spawnRoundPowerCap)
    {
        for (int i = 0; i < numberSpawnedAtOnce; i++)
        {
            if (currentNumberOfEnemies == maxNumberOfEnemies)
            {
                atEnemyCapacity = true;
                break;
            }

            SpaceMonster genericMonster_ = MakeSureUnderPowerCap(numberSpawnedAtOnce, currentPowerLevel);//enemiesToAppearOnThisLevel.enemyTypes[UnityEngine.Random.Range(0, enemiesToAppearOnThisLevel.enemyTypes.Count - 1)];

            genericMonster_.transform.position = FindLocationInSafeZone.FindLocationInCircleExclusion(gameStateHandler.darkStar, 3.0f);
            Type ourType = genericMonster_.GetType();
            if (!enemyDirectory.ContainsKey(ourType))
            {
                List <GameObject> newGOsOfThisSpaceMonsterTypeList = new List <GameObject>();
                enemyDirectory.Add(ourType, newGOsOfThisSpaceMonsterTypeList);
                enemyDirectory[ourType].Add(genericMonster_.gameObject);
            }
            else
            {
                enemyDirectory[ourType].Add(genericMonster_.gameObject);
            }
            currentNumberOfEnemies++;
        }
    }
コード例 #3
0
    SpaceMonster MakeSureUnderPowerCap(int spawnRoundPowerCap, int currentPowerLevel)
    {
        //List<SpaceMonster> newEnemiesToSpawn = new List<SpaceMonster>();
        SpaceMonster enemyToSpawn = null;
        int          runningPowerLevelOfGroupToSpawn = 0;

        //grab a random number from the enum that corresponds to a type
        EnemyGroup.EnemyTypes potentialType = (EnemyGroup.EnemyTypes)UnityEngine.Random.Range(0, System.Enum.GetValues(typeof(EnemyGroup.EnemyTypes)).Length);
        int potentialPowerCap = enemiesToAppearOnThisLevel.correspondingEnemyThreatLevel[potentialType];

        if (potentialPowerCap + runningPowerLevelOfGroupToSpawn <= spawnRoundPowerCap)
        {
            //if this enemy type's power level + how much our current power level is is less than the power cap we want for this group
            //choose this spacemonster to spawn
            enemyToSpawn = enemiesToAppearOnThisLevel.correspondingSpaceMonster[potentialType].GetPooledInstance <SpaceMonster>();

            //add the power cap to the total
            runningPowerLevelOfGroupToSpawn += potentialPowerCap;
            // newEnemiesToSpawn.Add(newEnemy) ;;
        }
        else
        {
            MakeSureUnderPowerCap(spawnRoundPowerCap, currentPowerLevel);
        }

        return(enemyToSpawn);
    }
コード例 #4
0
    // GameObject RandomSpawnFilter()
    // {
    //    GameObject newSpawn;
    //    for (int i = 0; i < spawnCap; i++)
    //    {
    //        newSpawn = fh.UnitTypes_[UnityEngine.Random.Range(0, (fh.UnitTypes_.Count))];
    //        Unit thisUnit = newSpawn.GetComponent<Unit>();
    //        int power = thisUnit.powerLevel;
    //        //For example, power level is 2
    //        if ((power + powerSum) > powerCap)
    //        { // if the power level in addition to other power levels goes over the power cap
    //            newSpawn = RandomSpawnFilter();
    //            //respawn it to get one that fits within the power level
    //        }
    //        else
    //        { //add power to power sum;
    //            powerSum += power;
    //            thisUnit.fh = fh;
    //            counter++;
    //        }
    //    }
    // }

    public void SpawnIndependent(SpaceMonster ourType, Vector2 position)
    {
        if (!atEnemyCapacity)
        {
            Debug.Log("We're being spawned!");


            SpaceMonster spaceMonster = ourType.GetPooledInstance <SpaceMonster>();
            spaceMonster.transform.position = new Vector2(gameObject.transform.position.x, gameObject.transform.position.y - 5.0f);
            currentNumberOfEnemies++;
            if (currentNumberOfEnemies == maxNumberOfEnemies)
            {
                atEnemyCapacity = true;
            }
        }
    }
コード例 #5
0
    public override bool perform(GameObject agent)
    {
        SpaceMonster currentSpaceMonster = agent.GetComponent <SpaceMonster>();

        if (currentSpaceMonster.stamina >= (500 - cost) && !isDashing)
        {
            currentSpaceMonster.stamina -= (500 - cost);
            dashTarget = Random.insideUnitCircle + (Vector2)transform.position * 3;
            isDashing  = true;

            return(true);
        }
        else
        {
            return(false);
        }
    }
コード例 #6
0
    public override bool perform(GameObject agent)
    {
        performing = true;
        SpaceMonster currentSpaceMonster = agent.GetComponent <SpaceMonster>();

        if (!isPulsing)
        {
            StartCoroutine(MiniPulse());


            return(true);
        }
        if (interrupted)
        {
            Debug.Log("We're being interrupted!" + " " + this.name);
            performing = false;
        }

        return(performing);
    }
コード例 #7
0
    public override bool perform(GameObject agent)
    {
        if (!setPerformancePrereqs)
        {
            fleeDirection         = GetDirection(agent);
            setPerformancePrereqs = true;
        }
        performing = true;

        SpaceMonster currentSpaceMonster = agent.GetComponent <SpaceMonster>();

        if (!isDashing)
        {
            //  dashTarget = UnityEngine.Random.insideUnitCircle + (Vector2)transform.position * 3;
            freeFromEnemy = false;
            isDashing     = true;
        }
        if (interrupted)
        {
            performing = false;
        }

        return(performing);
    }