void Awake() { if (instance != null) { Destroy(gameObject); return; } instance = this; DontDestroyOnLoad(gameObject); currentsound = GetComponent <AudioSource>(); }
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); }); }
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); } } }
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(); }
public void RemoveQuestEffect() { CurrentQuest = null; QuestEffect?.Remove(); QuestEffect = null; }
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); }
void QuestCompleted(CurrentQuest quest) { Debug.Log("Quest Completed: " + quest.Quest.QuestName); }