Пример #1
0
    public void CompleteAct()
    {
        if (PF_GamePlay.QuestProgress != null)
        {
            //this.gameplayController.directionController;
            PF_GamePlay.QuestProgress.CurrentAct.Value.IsActCompleted = true;


            if (PF_GamePlay.encounters.Count > 1)
            {
                // more acts to go
                GameplayController.RaiseGameplayEvent(GlobalStrings.ACT_COMPLETE_EVENT, PF_GamePlay.GameplayEventTypes.OutroAct);
            }
            else
            {
                // no more acts, complete quest
                PF_GamePlay.QuestProgress.isQuestWon = true;

                UB_GamePlayEncounter topOfStack = new UB_GamePlayEncounter();
                topOfStack = PF_GamePlay.encounters.First();
                PF_GamePlay.QuestProgress.CompletedEncounters.Add(topOfStack);
                PF_GamePlay.encounters.Remove(PF_GamePlay.encounters.First());

                //CycleNextEncounter();
                GameplayController.RaiseGameplayEvent(GlobalStrings.QUEST_COMPLETE_EVENT, PF_GamePlay.GameplayEventTypes.OutroQuest);
            }
        }
    }
Пример #2
0
    public void CycleNextEncounter()
    {
        this.currentEncounter = GetNextEncounter();
        if (this.currentEncounter != null)
        {
            UnityAction callback = () =>
            {
                UnityAction afterTransition = () =>
                {
                    if (this.currentEncounter.Data.EncounterType.ToString().Contains(GlobalStrings.ENCOUNTER_CREEP) && this.currentPlayer.PlayerVitals.Speed * 1.5f < this.currentEncounter.Data.Vitals.Speed)
                    {
                        this.CurrentTurn = PF_GamePlay.TurnStates.Enemy;
                        gameplayController.EnemyAttackPlayer(true);
                        this.gameplayController.playerController.EncounterBar.EnableEncounterOptions(this.currentEncounter.Data.EncounterType, this.currentEncounter.DisplayName, true);
                    }
                    else
                    {
                        this.CurrentTurn = PF_GamePlay.TurnStates.Player;
                        //this.gameplayController.playerController.EncounterBar.EnableEncounterOptions(this.currentEncounter.Data.EncounterType, this.currentEncounter.DisplayName);
                        this.gameplayController.playerController.TransitionActionBarIn();
                    }

                    GameplayController.RaiseGameplayEvent(GlobalStrings.NEXT_ENCOUNTER_EVENT, PF_GamePlay.GameplayEventTypes.IntroEncounter);
                };

                this.gameplayController.enemyController.currentEncounter.UpdateCurrentEncounter(this.currentEncounter);
                this.gameplayController.enemyController.nextController.UpdateNextEncounters();
                this.gameplayController.enemyController.TransitionCurrentEncounterIn(afterTransition);
            };

            this.gameplayController.enemyController.TransitionCurrentEncounterOut(callback);
        }
    }
Пример #3
0
    public UB_GamePlayEncounter GetNextEncounter(bool isFirstEncounter = false)
    {
        if (PF_GamePlay.encounters != null && PF_GamePlay.encounters.Count > 0)
        {
            // pop off top and move to PF_Gameplay QuestTracker
            // But not ON THE FIRST ENCOUNTER

            if (PF_GamePlay.QuestProgress.CompletedEncounters.Count != 0 || !isFirstEncounter)
            {
                //LogCompletedEncounterStats();
                UB_GamePlayEncounter topOfStack = new UB_GamePlayEncounter();
                topOfStack = PF_GamePlay.encounters.First();
                PF_GamePlay.QuestProgress.CompletedEncounters.Add(topOfStack);
                PF_GamePlay.encounters.Remove(PF_GamePlay.encounters.First());

                if (PF_GamePlay.encounters.Count == 0)
                {
                    return(null);
                }
                else
                {
                    var next = PF_GamePlay.encounters.First();

                    next.Data.Vitals.SetMaxVitals();
                    next.Data.SetSpellDetails();

                    if (next.Data.EncounterType == EncounterTypes.BossCreep)
                    {
                        GameplayController.RaiseGameplayEvent(GlobalStrings.BOSS_BATTLE_EVENT, PF_GamePlay.GameplayEventTypes.StartBossBattle);
                    }

                    return(next);
                }
            }
            else
            {
                var next = PF_GamePlay.encounters.First();

                next.Data.Vitals.SetMaxVitals();
                next.Data.SetSpellDetails();

                if (next.Data.EncounterType == EncounterTypes.BossCreep)
                {
                    GameplayController.RaiseGameplayEvent(GlobalStrings.BOSS_BATTLE_EVENT, PF_GamePlay.GameplayEventTypes.StartBossBattle);
                }
                return(next);
            }
        }

        // end of the list or something!?
        return(null);
    }
Пример #4
0
    public void UpdateCurrentEncounter(UB_GamePlayEncounter encounter)
    {
        // change the health bar
        this.lifeBar.maxValue = encounter.Data.Vitals.Health;
        StartCoroutine(this.lifeBar.UpdateBar(encounter.Data.Vitals.Health, true));

        // change banner color
        if (encounter.Data.EncounterType.ToString().Contains(GlobalStrings.ENCOUNTER_CREEP))
        {
            this.encounterBanner.color = Color.red;
        }
        else if (encounter.Data.EncounterType.ToString().Contains(GlobalStrings.ENCOUNTER_STORE))
        {
            this.encounterBanner.color = Color.green;
        }
        else if (encounter.Data.EncounterType.ToString().Contains(GlobalStrings.ENCOUNTER_HERO))
        {
            this.encounterBanner.color = Color.cyan;
        }

        // change icon
        this.encounterIcon.overrideSprite = GameController.Instance.iconManager.GetIconById(encounter.Data.Icon);

        // change name
        this.encounterName.text = encounter.DisplayName;


        // change level and flag color
        if (encounter.Data.EncounterType.ToString().Contains(GlobalStrings.ENCOUNTER_CREEP))
        {
            if (encounter.Data.Vitals.CharacterLevel <= PF_PlayerData.activeCharacter.characterData.CharacterLevel)
            {
                this.encounterFlag.color = Color.green;
            }
            else if (encounter.Data.Vitals.CharacterLevel <= PF_PlayerData.activeCharacter.characterData.CharacterLevel + 3)
            {
                this.encounterFlag.color = Color.yellow;
            }
            else
            {
                this.encounterFlag.color = Color.red;
            }
            this.encounterLevel.text = "" + encounter.Data.Vitals.CharacterLevel;
        }
        else
        {
            this.encounterFlag.color = new Color(188, 0, 255, 255);
            this.encounterLevel.text = string.Empty;
        }
    }
Пример #5
0
    void OnGameplayEventReceived(string message, PF_GamePlay.GameplayEventTypes type)
    {
        if (type == PF_GamePlay.GameplayEventTypes.IntroQuest)
        {
            AdvanceAct();
            this.currentEncounter = GetNextEncounter(true);
            this.gameplayController.enemyController.currentEncounter.UpdateCurrentEncounter(this.currentEncounter);
            this.gameplayController.enemyController.nextController.UpdateNextEncounters();

            this.currentTurnNumber = 1;
            //this.currentEncounter =  PF_GamePlay.encounters.First();
            this.currentPlayer = PF_PlayerData.activeCharacter;
        }

        if (type == PF_GamePlay.GameplayEventTypes.StartQuest)
        {
            StartTurn();
        }

        if (type == PF_GamePlay.GameplayEventTypes.OutroEncounter)
        {
            CompleteEncounter();
            return;
        }

        if (type == PF_GamePlay.GameplayEventTypes.EnemyTurnEnds || type == PF_GamePlay.GameplayEventTypes.PlayerTurnEnds)
        {
            if (message.Contains(GlobalStrings.PLAYER_RESPAWN_EVENT))
            {
                gameplayController.playerController.UpdateQuestStats();
                StartCoroutine(gameplayController.playerController.LifeBar.UpdateBar(gameplayController.playerController.LifeBar.maxValue));
            }
            else
            {
                ToggleTurn();
            }
        }
    }