void Awake()
    {
        if (instance != null)
        {
            Destroy(gameObject);
            return;
        }
        instance = this;
        DontDestroyOnLoad(gameObject);

        currentsound = GetComponent <AudioSource>();
    }
Beispiel #2
0
        void Start()
        {
            heroGoldRewardInput.onValueChanged.AddListener((value) => {
                if (string.IsNullOrEmpty(value))
                {
                    value = "0";
                }
                int goldValue = int.Parse(value);
                QuestDetailsWindow.Instance.SelectedGoldRewards[m_HeroNumber] = goldValue;

                CheckPostButtonStatus();
            });

            heroGoldRewardInput.onDeselect.AddListener((value) => {
                if (string.IsNullOrEmpty(value))
                {
                    heroGoldRewardInput.text = "0";
                }
            });

            heroRewardItemDropdown.onValueChanged.AddListener((value) => {
                m_SelectedItemReward = value;
                GameItem item        = null;

                if (m_SelectedItemReward != 0)
                {
                    item = InventoryManager.OwnedItems[m_SelectedItemReward - 1];
                }

                heroRewardItemDropdown.GetComponent <GameItemPopupCaller>().associatedItem = item;

                QuestDetailsWindow.Instance.SelectedItemRewards[m_HeroNumber] = item;

                CheckPostButtonStatus();
            });

            heroSelectButton.onClick.AddListener(() => {
                AvailableHeroes.Clear();
                foreach (HeroInstance hero in HeroManager.GetAvailableHeroes())
                {
                    if (CurrentQuest.WouldHeroAccept(hero, m_HeroNumber) &&
                        !QuestDetailsWindow.Instance.HasHeroSelected(hero))
                    {
                        AvailableHeroes.Add(hero);
                    }
                }

                RightSideSwitch.Instance.ActivateObject(ReputationUI.Instance.gameObject, false);
                ReputationUI.Instance.SetAvailableHeroes(AvailableHeroes, SetSelectedHero);
            });
        }
Beispiel #3
0
        private void GetCurrentQuests(string npcID, string playerID, BsonArray playerQuestsInProgress)
        {
            //get the list of available quests the NPC can give
            //may need to modify this in the future what if an NPC gets killed?  If they respawn they will have a new ID.
            //maybe some quests qet lost when an NPC dies and maybe some other NPC's can't die only get knocked unconcious. (gonna need a flag for that)
            BsonArray availableQuests = MongoUtils.MongoData.GetCollection("Characters", "NPCQuests").FindOneAs <BsonArray>(MongoDB.Driver.Builders.Query.EQ("_id", npcID));

            //I'm going to want to keep the in-progress and completed quests under the Player information
            //need to find all the in progress quests this player has with this NPC that way they can have multiple quests from the same NPC
            //and not have to visit the NPC once for every single quest he can give.
            foreach (BsonDocument quest in availableQuests)
            {
                if (playerQuestsInProgress.Contains(quest["ID"]))   //if the player has an in-progress quest that belongs to this NPC load it.
                {
                    CurrentQuest.Add(quest["ID"].AsString);
                }
            }
        }
Beispiel #4
0
        private void CheckPostButtonStatus()
        {
            bool isPostable = true;

            if ((InventoryManager.Gold < CurrentQuest.GetTotalGoldCount() && InventoryManager.Gold >= 0) ||
                (QuestDetailsWindow.Instance.SelectedGoldRewards[m_HeroNumber] == 0 && m_SelectedItemReward == 0))
            {
                isPostable = false;
            }

            QuestDetailsWindow.Instance.PostButtonStatuses[m_HeroNumber] = isPostable;

            if (isPostable)
            {
                UIHighlighter.Instance.GetGroup(QuestDetailsWindow.HIGHLIGHT_GROUP_ID).RemoveObjects(highlightsRewards);
            }
            else
            {
                UIHighlighter.Instance.GetGroup(QuestDetailsWindow.HIGHLIGHT_GROUP_ID).AddObjects(highlightsRewards, UIHighlighter.Instance.redHighlightColor, highlightsRewards[0].color);
            }

            QuestDetailsWindow.Instance.CheckPostButtonStatus();
        }
Beispiel #5
0
 public void RemoveQuestEffect()
 {
     CurrentQuest = null;
     QuestEffect?.Remove();
     QuestEffect = null;
 }
Beispiel #6
0
        public override void UpdateQuests()
        {
            if (NPCInfo.CurrentQuest == null)
            {
                RemoveQuestEffect();
                return;
            }

            if (CurrentQuest == NPCInfo.CurrentQuest)
            {
                return;
            }

            RemoveQuestEffect();

            CurrentQuest = NPCInfo.CurrentQuest;

            int startIndex = 0;

            switch (CurrentQuest.Type)
            {
            case QuestType.General:
                startIndex = 10;
                break;

            case QuestType.Daily:
                startIndex = 70;
                break;

            case QuestType.Repeatable:
                startIndex = 10;
                break;

            case QuestType.Story:
                startIndex = 50;
                break;
                //case QuestType.Account:
                //    startIndex = 30;
                //    break;
            }

            switch (CurrentQuest.Icon)
            {
            case QuestIcon.New:
                startIndex += 0;
                break;

            case QuestIcon.Incomplete:
                startIndex = 0;
                break;

            case QuestIcon.Complete:
                startIndex += 2;
                break;
            }

            QuestEffect = new MirEffect(startIndex, 2, TimeSpan.FromMilliseconds(500), LibraryFile.QuestIcon, 0, 0, Color.Empty)
            {
                Loop             = true,
                MapTarget        = CurrentLocation,
                Blend            = false,
                DrawType         = DrawType.Final,
                AdditionalOffSet = new Point(0, -80)
            };
            QuestEffect.Process();
        }
        public void SetSelectedHero(HeroInstance hero, int heroNumber)
        {
            SelectedHeroes[heroNumber] = hero;

            successText.text = GetSuccessRateForPercentage(CurrentQuest.GetTotalSuccessRate(SelectedHeroes));
        }
        void Start()
        {
            closeButton.onClick.AddListener(() => {
                CloseWindow();
            });

            skipButton.onClick.AddListener(() => {
                CloseWindow();
            });

            cancelButton.onClick.AddListener(() => {
                CurrentQuest.RefundQuestRewards(true, true);
                QuestManager.PostedQuests.Remove(CurrentQuest);
                QuestManager.Requests.Add(CurrentQuest);
                QuestsWindow.Instance.Reload();
                CloseWindow();
            });

            acceptButton.onClick.AddListener(() => {
                foreach (HeroInstance hero in SelectedHeroes)
                {
                    if (hero == null)
                    {
                        continue;
                    }
                    HeroManager.SetHeroToState(hero, HeroStates.ON_QUEST);
                }

                QuestManager.PostedQuests.Remove(CurrentQuest);
                QuestManager.ActiveQuests.Add(CurrentQuest, SelectedHeroes.Clone() as HeroInstance[]);
                QuestsWindow.Instance.Reload();
                CloseWindow();
            });

            completeButton.onClick.AddListener(() => {
                foreach (HeroInstance hero in QuestManager.ActiveQuests[CurrentQuest])
                {
                    if (hero == null)
                    {
                        continue;
                    }
                    HeroManager.SetHeroToState(hero, HeroStates.IDLE);
                }

                QuestManager.ActiveQuests.Remove(CurrentQuest);
                QuestsWindow.Instance.Reload();
                CloseWindow();
            });

            postButton.onClick.AddListener(() => {
                QuestManager.Requests.Remove(CurrentQuest);
                QuestManager.PostedQuests.Add(CurrentQuest);
                QuestsWindow.Instance.Reload();

                for (int i = 0; i < SelectedGoldRewards.Length; i++)
                {
                    CurrentQuest.GoldRewards[i]           = new QuestRewardGold();
                    CurrentQuest.GoldRewards[i].GoldCount = SelectedGoldRewards[i];
                }

                for (int i = 0; i < SelectedItemRewards.Length; i++)
                {
                    GameItem item = SelectedItemRewards[i];
                    if (item == null)
                    {
                        continue;
                    }

                    CurrentQuest.ItemRewards[i] = new QuestRewardItem(item);
                    InventoryManager.MoveItemToReserved(item);
                }

                InventoryManager.Gold -= CurrentQuest.GetTotalGoldCount();

                CloseWindow();
            });

            Instance = this;
            gameObject.SetActive(false);
        }
Beispiel #9
0
 void QuestCompleted(CurrentQuest quest)
 {
     Debug.Log("Quest Completed: " + quest.Quest.QuestName);
 }