示例#1
0
    public void GenerateEnemyList(int waveIndex)
    {
        this.currentWaveIndex = waveIndex;

        StageInfoContainer stageInfo = GameManager.Instance.gameState.GetCurrentStage();
        WaveInfoContainer  waveInfo  = stageInfo.GetWaveInfo(this.currentWaveIndex);

        List <JobActionsList> enemyList = waveInfo.GetEnemyList();

//        float mult = stageInfo.GetDifficultyMult();
        BattleType battleType = stageInfo.GetBattleType();

        for (int i = 0; i < enemyList.Count; i++)
        {
            JobActionsList jobList = enemyList[i];
            string         name    = jobList.prefab.Name + " (" + GetTargetNameFromIndex(i) + ")";
            int            index   = i;

            Enemy enemy = new Enemy();
            enemy.Initialize(jobList, name);
            EnemyObject instantiatedEnemy = enemy.InstantiateFromJob <EnemyObject>(jobList, name, index);

            // Apply stat adjustments based on difficulty

            PlayerStats stats = instantiatedEnemy.stats;

            /*
             * foreach(Stat stat in System.Enum.GetValues(typeof(Stat))) {
             *  stats.ModifyStat(stat, (int) (stats.GetStat(stat) * mult));
             * }
             */
            int level = waveInfo.GetWaveInfo().averageLevel;

            if (battleType == BattleType.HARD_BATTLE)
            {
                level += 3;
            }
            else if (battleType == BattleType.EASY_BATTLE)
            {
                level -= 1;
            }
            else if (battleType == BattleType.BOSS)
            {
                // level += 10; // Should be done from inspector side
            }

            stats.ApplyStatsBasedOnLevel(level);

            // TODO: Some sort of entrance animation

            instantiatedEnemy.SetSortingOrder(i);
            FighterSlot slot = enemySlots[i];
            slot.InitializePosition(instantiatedEnemy);

            GameManager.Instance.gameState.enemyParty.SetFighter(i, enemy);
        }
    }
示例#2
0
    public void SetStageInfoContainer(StageInfoContainer stageInfoContainer)
    {
        _stageInfoContainer = stageInfoContainer;

        // Set enemy list
        string listAsText = "";

        foreach (KeyValuePair <string, int> enemy in stageInfoContainer.GetEnemyTally())
        {
            // TODO: text display is temporary; switch to images or something later
            listAsText += enemy.Value + "x " + enemy.Key + "\n";
        }
        _infoText.gameObject.SetActive(true);
        _infoText.text = listAsText;
    }
    private void OnWaveComplete()
    {
        StageInfoContainer stageInfo = GameManager.Instance.gameState.GetCurrentStage();
        WaveInfoContainer  waveInfo  = stageInfo.GetWaveInfo(GameManager.Instance.battleComponents.field.currentWaveIndex);

        GameManager.Instance.battleComponents.field.currentWaveIndex++;
        if (GameManager.Instance.battleComponents.field.currentWaveIndex >= stageInfo.numWaves)
        {
            GameManager.Instance.battleComponents.stageController.LoadNextScene();
        }
        else
        {
            GameManager.Instance.battleComponents.field.GenerateEnemyList(GameManager.Instance.battleComponents.field.currentWaveIndex);
        }
    }
示例#4
0
    private void InitializeCombatStage(ZoneProperties properties, int stageCol, StageNode stage, BattleType battleType)
    {
        StageInfoContainer stageInfo = new StageInfoContainer(properties.columns[stageCol - 1], battleType);

        stage.SetStageInfoContainer(stageInfo);
    }
示例#5
0
 public void SetStage(StageInfoContainer stageInfoContainer)
 {
     _currStage = stageInfoContainer;
 }