Beispiel #1
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();
        }
        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);
        }