Esempio n. 1
0
    private IEnumerator StartNewBasicEncounterEventCoroutine(Action action, EnemyWaveSO enemyWave = null)
    {
        // Disable player's ability to click on encounter buttons and start new encounters
        WorldManager.Instance.canSelectNewEncounter = false;

        // fade out view, wait until completed
        Action fadeOut = BlackScreenManager.Instance.FadeOut(BlackScreenManager.Instance.aboveEverything, 6, 1, true);

        yield return(new WaitUntil(() => fadeOut.ActionResolved() == true));

        // Destroy the previous level and tiles + reset values/properties, turn off unneeded views
        ClearPreviousEncounter();

        // make char roster canvas turn off when disabled
        combatSceneIsActive = true;

        // Create a new level
        LevelManager.Instance.CreateLevel();

        // Reset Camera
        CameraManager.Instance.ResetCameraOnCombatStart();

        // Set up activation window holders
        ActivationManager.Instance.CreateSlotAndWindowHolders();

        // Create defender GO's
        CharacterRoster.Instance.InstantiateDefenders();

        // Instantiate enemies
        EnemySpawner.Instance.SpawnEnemyWave("Basic", enemyWave);

        // disable unneed UI views
        UIManager.Instance.DisableUnneededCanvasesOnCombatStart();

        // Set encounter type
        currentEncounterType = WorldEncounter.EncounterType.BasicEnemy;

        // Fade scene back in, wait until completed
        Action fadeIn = BlackScreenManager.Instance.FadeIn(BlackScreenManager.Instance.aboveEverything, 6, 0, false);

        yield return(new WaitUntil(() => fadeIn.ActionResolved() == true));

        // Apply Relevant State Effects
        Action stateApplications = StateManager.Instance.ApplyAllStateEffectsToLivingEntities();

        yield return(new WaitUntil(() => stateApplications.ActionResolved() == true));

        // Check for expired states and remove them
        Action stateExpirations = StateManager.Instance.CheckForStateExpirationsOnCombatStart();

        yield return(new WaitUntil(() => stateExpirations.ActionResolved() == true));

        // Start activations / combat start events
        ActivationManager.Instance.OnNewCombatEventStarted();

        // declare this event complete
        action.actionResolved = true;
    }
Esempio n. 2
0
    public void StartNewLootRewardEvent(WorldEncounter.EncounterType encounterType)
    {
        Debug.Log("EventManager.StartNewLootRewardEvent() called, encounter type = " + encounterType.ToString());

        if (encounterType == WorldEncounter.EncounterType.BasicEnemy)
        {
            UIManager.Instance.EnableRewardScreenView();
            RewardScreen.Instance.CreateGoldRewardButton();
            RewardScreen.Instance.CreateCommonItemRewardButton();
            RewardScreen.Instance.PopulateItemScreen(WorldEncounter.EncounterType.BasicEnemy);

            // 50% chance to get a consumable from basic encounters
            int consumableRoll = Random.Range(1, 101);
            if (consumableRoll > 50)
            {
                RewardScreen.Instance.CreateConsumableRewardButton();
            }
        }

        else if (encounterType == WorldEncounter.EncounterType.EliteEnemy)
        {
            UIManager.Instance.EnableRewardScreenView();
            RewardScreen.Instance.CreateGoldRewardButton();
            RewardScreen.Instance.CreateCommonItemRewardButton();
            RewardScreen.Instance.CreateRareItemRewardButton();
            RewardScreen.Instance.CreateConsumableRewardButton();
            RewardScreen.Instance.CreateStateRewardButton();

            RewardScreen.Instance.PopulateStateRewardScreen(true, true, false);
            RewardScreen.Instance.PopulateItemScreen(WorldEncounter.EncounterType.EliteEnemy);
        }

        else if (encounterType == WorldEncounter.EncounterType.Boss)
        {
            UIManager.Instance.EnableRewardScreenView();
            RewardScreen.Instance.CreateGoldRewardButton();
            RewardScreen.Instance.CreateCommonItemRewardButton();
            RewardScreen.Instance.CreateEpicItemRewardButton();
            RewardScreen.Instance.CreateConsumableRewardButton();
            RewardScreen.Instance.CreateStateRewardButton();

            RewardScreen.Instance.PopulateStateRewardScreen(false, false, true);
            RewardScreen.Instance.PopulateItemScreen(WorldEncounter.EncounterType.Boss);
        }

        else if (encounterType == WorldEncounter.EncounterType.Treasure)
        {
            UIManager.Instance.EnableRewardScreenView();
            RewardScreen.Instance.CreateStateRewardButton();
            RewardScreen.Instance.PopulateStateRewardScreen(true, true, false);
        }
    }
Esempio n. 3
0
    private IEnumerator StartActTwoLoadSequenceCoroutine(Action action)
    {
        Debug.Log("EventManager.StartActTwoLoadSequenceCoroutine() called...");

        // Destroy the previous level and tiles + reset values/properties, turn off unneeded views
        ClearPreviousEncounter();

        // Disable player's ability to click on encounter buttons and start new encounters
        WorldManager.Instance.canSelectNewEncounter = false;

        // fade out view, wait until completed
        Action fadeOut = BlackScreenManager.Instance.FadeOut(BlackScreenManager.Instance.aboveEverything, 3, 1, true);

        yield return(new WaitUntil(() => fadeOut.ActionResolved() == true));

        // Reset reward screen
        RewardScreen.Instance.ClearRewards();
        UIManager.Instance.DisableRewardScreenView();

        // Build new world
        WorldManager.Instance.OnActTwoStarted();

        // Heal all characters to full hp
        foreach (CharacterData character in CharacterRoster.Instance.allCharacterDataObjects)
        {
            character.ModifyCurrentHealth(character.maxHealth);
        }

        // Clear current encounter type
        currentEncounterType = WorldEncounter.EncounterType.NoType;

        // Enable world map view
        UIManager.Instance.EnableWorldMapView();

        // Enable player's ability to click on encounter buttons and start new encounters
        WorldManager.Instance.canSelectNewEncounter = true;

        // Refresh act transition bool
        actTransitionInProcess = false;

        // Fade scene back in, wait until completed
        Action fadeIn = BlackScreenManager.Instance.FadeIn(BlackScreenManager.Instance.aboveEverything, 3, 0, false);

        yield return(new WaitUntil(() => fadeIn.ActionResolved() == true));

        action.actionResolved = true;
    }
Esempio n. 4
0
    public void PopulateItemScreen(WorldEncounter.EncounterType encounterType)
    {
        if (encounterType == WorldEncounter.EncounterType.BasicEnemy)
        {
            PopulateCommonItemScreen();
        }

        else if (encounterType == WorldEncounter.EncounterType.EliteEnemy)
        {
            PopulateCommonItemScreen();
            PopulateRareItemScreen();
        }
        else if (encounterType == WorldEncounter.EncounterType.Boss)
        {
            PopulateCommonItemScreen();
            PopulateEpicItemScreen();
        }
    }
 public void StartNewEliteEncounterEvent()
 {
     // Disable player's ability to click on encounter buttons and start new encounters
     WorldMap.Instance.canSelectNewEncounter = false;
     // turn off hexagon highlights
     WorldMap.Instance.UnHighlightAllHexagons();
     // Destroy the previous level and tiles + reset values/properties
     ClearPreviousEncounter();
     // Create a new level
     LevelManager.Instance.CreateLevel();
     //EnemySpawner.Instance.PopulateEnemySpawnLocations();
     CharacterRoster.Instance.InstantiateDefenders();
     //DefenderManager.Instance.PlaceDefendersAtStartingLocations();
     // Instantiate enemies
     //EnemySpawner.Instance.SpawnEnemyWave("Elite");
     // reset turn manager properties
     TurnManager.Instance.ResetTurnManagerPropertiesOnCombatStart();
     // start player turn 1
     StartCoroutine(TurnManager.Instance.StartPlayerTurn());
     // disable world map view
     UIManager.Instance.DisableWorldMapView();
     currentEncounterType = WorldEncounter.EncounterType.EliteEnemy;
 }