Ejemplo n.º 1
0
    void SwitchToBossScenario(int depth)
    {
        mapController.gameObject.SetActive(false);
        EnemySpawnGroupData bossSpawnGroup = DataRetriever.GetBossSpawnGroup();

        scenarioManager.GenerateAndDrawBossScenario(bossSpawnGroup);
    }
Ejemplo n.º 2
0
    public void GenerateAndDrawBossScenario(EnemySpawnGroupData bossSpawnGroup)
    {
        gameObject.SetActive(true);
        GameBoard board = boardController.GenerateBoard(true);

        CurrentScenarioState = ScenarioStateGenerator.GenerateNewScenarioState(board, bossSpawnGroup, true);
        GenerateNextTurnStack(CurrentScenarioState);

        GameStateDelegates.OnNewScenario?.Invoke(CurrentScenarioState);
        GameStateDelegates.OnCurrentScenarioStateChange(CurrentScenarioState, upcomingScenarioStates);
    }
Ejemplo n.º 3
0
    // Cribbed, with love, from http://hyperfoxstudios.com/loot-drop-table-implementation-unity3d/
    void ValidateAndCacheSpawnTable(List <EnemySpawnGroupData> newSpawnTable)
    {
        cachedSpawnTable = DataRetriever.GetEnemySpawnGroups();
        float currentProbabilityWeightTotal = 0f;

        for (int i = 0; i < cachedSpawnTable.Count; i++)
        {
            EnemySpawnGroupData spawnGroup = cachedSpawnTable[i];
            spawnGroup.probabilityRangeFrom = currentProbabilityWeightTotal;
            currentProbabilityWeightTotal  += spawnGroup.probabilityWeight;
            spawnGroup.probabilityRangeTo   = currentProbabilityWeightTotal;
        }

        probabilityTotalWeight = currentProbabilityWeightTotal;
    }
Ejemplo n.º 4
0
    public void GenerateAndDrawScenario(EnemySpawnGroupData enemySpawnGroup)
    {
        exitArrow.SetActive(false);
        gameObject.SetActive(true);
        GameBoard board = boardController.GenerateBoard();

        CurrentScenarioState = ScenarioStateGenerator.GenerateNewScenarioState(board, enemySpawnGroup);
        GenerateNextTurnStack(CurrentScenarioState);
        if (board.Exit != null)
        {
            PlaceExitArrow(exitArrow, boardController.currentBoard.Exit.Position, boardController.currentBoard.Width);
        }

        GameStateDelegates.OnNewScenario?.Invoke(CurrentScenarioState);
        GameStateDelegates.OnCurrentScenarioStateChange(CurrentScenarioState, upcomingScenarioStates);
    }
Ejemplo n.º 5
0
    public static ScenarioState GenerateNewScenarioState(GameBoard board, EnemySpawnGroupData enemySpawnGroup, bool isBossScenario = false)
    {
        List <EntityData> enemies = enemySpawnGroup.EnemiesToSpawn.Select(e => ScriptableObject.Instantiate(e)).ToList();

        List <ItemData> items = enemySpawnGroup.ItemsToSpawn.Select(t => ScriptableObject.Instantiate(t)).ToList();

        SpeedComparer comparer = new SpeedComparer();

        enemies.Sort(comparer);

        Direction stagnationDirection = GetStagnationDirectionFromEntrance(board.Entrance.Position, board.Width);

        ScenarioState generatedState = new ScenarioState(enemies, items, enemySpawnGroup.scenarioReward, stagnationDirection, isBossScenario);
        EntityData    player         = generatedState.player;

        player.SetPosition(board.Entrance.Position, generatedState);
        generatedState = RandomizeEntityStartingCoordinates(generatedState, enemies, board.Width, board.GetTileAtPosition(player.Position), board);

        Vector2Int exitPosition = board.Exit == null ? Vector2Int.zero : board.Exit.Position;

        generatedState = RandomizeItemStartingCoordinates(generatedState, items, exitPosition, board.Width);

        return(generatedState);
    }
Ejemplo n.º 6
0
 void SwitchToScenario(EnemySpawnGroupData enemySpawnGroup)
 {
     mapController.gameObject.SetActive(false);
     scenarioManager.GenerateAndDrawScenario(enemySpawnGroup);
 }
Ejemplo n.º 7
0
    void HandleTriggerScenario(string stringData, int intData)
    {
        EnemySpawnGroupData enemySpawnGroup = enemySpawnGroupManager.GetEventScenarioEnemySpawn(stringData);

        SwitchToScenario(enemySpawnGroup);
    }
Ejemplo n.º 8
0
    public void GenerateAndDrawScenario(int depth, float nodeDistance)
    {
        EnemySpawnGroupData enemySpawnGroup = enemySpawnGroupManager.GetEnemySpawnGroup(depth, nodeDistance);

        GenerateAndDrawScenario(enemySpawnGroup);
    }