//Quests #region Quest System public void UpdateBestQuestIcon() { ClientQuestProgress quests = GetAvailableQuests(true).FirstOrDefault(); QuestIcon bestIcon = QuestIcon.None; if (quests != null) { bestIcon = quests.Icon; } QuestIcon = bestIcon; }
public void RemoveQuest(ClientQuestProgress quest) { TrackedQuestsIds.Remove(quest.Id); DisplayQuests(); }
public void AddQuest(ClientQuestProgress quest) { if (TrackedQuestsIds.Any(d => d == quest.Id) || TrackedQuestsIds.Count >= 5) return; TrackedQuestsIds.Add(quest.Id); DisplayQuests(); }
protected override void Dispose(bool disposing) { base.Dispose(disposing); Quest = null; _questLabel.Dispose(); _questLabel = null; }
public QuestSingleQuestItem(ClientQuestProgress quest) { Quest = quest; Size = new Size(250, 15); TrackQuest = GameScene.Scene.QuestTrackingDialog.TrackedQuestsIds.Contains(quest.Id); string name = Quest.QuestInfo.Name; string level = string.Format("Lv{0}", Quest.QuestInfo.MinLevelNeeded); string state = quest.Completed ? "(Complete)" : "(In Progress)"; bool lowLevelQuest = (MapObject.User.Level - quest.QuestInfo.MinLevelNeeded) > 10; BeforeDraw += QuestTaskSingleItem_BeforeDraw; AfterDraw += QuestTaskSingleItem_AfterDraw; _selectedImage = new MirImageControl { Index = 956, Library = Libraries.Prguse, Location = new Point(-10, 0), Parent = this, Visible = false }; _questLabel = new MirLabel { Text = string.Format("{0,-4} {1}", level, name), AutoSize = true, Font = new Font(Settings.FontName, 8F), ForeColour = lowLevelQuest ? Color.Gray : quest.New ? Color.Yellow : Color.White, Parent = this, Location = new Point(0, 0), Sound = SoundList.ButtonA }; _questLabel.Click += (o, e) => { MouseEventArgs me = e as MouseEventArgs; if (me == null) return; switch (me.Button) { case MouseButtons.Left: GameScene.Scene.QuestDetailDialog.DisplayQuestDetails(Quest); break; case MouseButtons.Right: { if (TrackQuest) { GameScene.Scene.QuestTrackingDialog.RemoveQuest(Quest); } else { if (GameScene.Scene.QuestTrackingDialog.TrackedQuestsIds.Count >= 5) return; GameScene.Scene.QuestTrackingDialog.AddQuest(Quest); } TrackQuest = !TrackQuest; } break; } OnSelectedQuestChanged(); }; _stateLabel = new MirLabel { Text = string.Format("{0}", state), AutoSize = true, Font = new Font(Settings.FontName, 8F), ForeColour = lowLevelQuest ? Color.Gray : quest.New ? Color.Yellow : Color.White, Parent = this, Location = new Point(185, 0), Sound = SoundList.ButtonA }; }
protected override void Dispose(bool disposing) { base.Dispose(disposing); Quest = null; NameLabel = null; RequirementLabel = null; SelectedImage = null; IconImage = null; Selected = false; }
protected override void Dispose(bool disposing) { base.Dispose(disposing); Quest = null; foreach (QuestCell cell in FixedItems.Where(cell => cell != null && !cell.IsDisposed)) { cell.Dispose(); } foreach (QuestCell cell in SelectItems.Where(cell => cell != null && !cell.IsDisposed)) { cell.Dispose(); } }
protected override void ReadPacket(BinaryReader reader) { Quest = new ClientQuestProgress(reader); QuestState = (QuestState)reader.ReadByte(); TrackQuest = reader.ReadBoolean(); }
protected override void Dispose(bool disposing) { base.Dispose(disposing); Quest = null; ScrollUpButton = null; ScrollDownButton = null; PositionBar = null; CurrentLines.Clear(); }
public void UpdateQuest(ClientQuestProgress quest) { Quest = quest; CurrentLines.Clear(); //add quest title at the beginning CurrentLines.Insert(0, Quest.QuestInfo.Name); if (Quest.Taken && !Quest.QuestInfo.SameFinishNPC && Quest.QuestInfo.CompletionDescription.Count > 0 && GameScene.Scene.QuestListDialog.CurrentNPCID == Quest.QuestInfo.FinishNPCIndex) { foreach (var line in Quest.QuestInfo.CompletionDescription) { CurrentLines.Add(line); } } else { foreach (var line in Quest.QuestInfo.Description) { CurrentLines.Add(line); } AdjustDescription(); } NewText(CurrentLines); }
protected override void Dispose(bool disposing) { base.Dispose(disposing); Quests.Clear(); SelectedQuest = null; Message = null; Reward = null; foreach (QuestRow row in Rows.Where(row => row != null && !row.IsDisposed)) { row.Dispose(); } }
public void UpdateRows() { if (SelectedQuest == null) { if (Rows[0] == null) return; SelectedQuest = Rows[0].Quest; Reward.UpdateRewards(SelectedQuest); Message.UpdateQuest(SelectedQuest); } for (int i = 0; i < Rows.Length; i++) { if (Rows[i] == null) continue; Rows[i].Selected = false; if (Rows[i].Quest == SelectedQuest) { Rows[i].Selected = true; } Rows[i].UpdateInterface(); } }
public void Reset() { StartIndex = 0; SelectedIndex = 0; SelectedQuest = null; Message.Visible = false; Reward.Visible = false; for (int i = 0; i < Rows.Length; i++) { if(Rows[i] != null) Rows[i].Dispose(); Rows[i] = null; } }
public static void BindQuest(ClientQuestProgress quest) { for (int i = 0; i < QuestInfoList.Count; i++) { if (QuestInfoList[i].Index != quest.Id) continue; quest.QuestInfo = QuestInfoList[i]; return; } }
public void DisplayQuestDetails(ClientQuestProgress quest) { if (quest == null) return; Quest = quest; Reward.UpdateRewards(Quest); Message.UpdateQuest(Quest); Show(); }
public void UpdateRewards(ClientQuestProgress quest) { Quest = quest; CleanRewards(); UpdateInterface(); Redraw(); }
public void RefreshInterface() { _availableQuestLabel.Text = string.Format("List: {0}", Quests.Count); int maxIndex = Quests.Count - Rows.Length; if (StartIndex > maxIndex) StartIndex = maxIndex; if (StartIndex < 0) StartIndex = 0; for (int i = 0; i < Rows.Length; i++) { if (i >= Quests.Count) break; if (Rows[i] != null) Rows[i].Dispose(); Rows[i] = new QuestRow { Quest = Quests[i + StartIndex], Location = new Point(9, 36 + i * 19), Parent = this, }; Rows[i].Click += (o, e) => { QuestRow row = (QuestRow) o; if (row.Quest != SelectedQuest) { SelectedQuest = row.Quest; Reward.UpdateRewards(SelectedQuest); Message.UpdateQuest(SelectedQuest); SelectedIndex = FindSelectedIndex(); UpdateRows(); ReDisplayButtons(); } }; if (SelectedQuest != null) { if (SelectedIndex == i) { SelectedQuest = Rows[i].Quest; Reward.UpdateRewards(SelectedQuest); Message.UpdateQuest(SelectedQuest); } } } UpdateRows(); ReDisplayButtons(); }
public void AddQuest(ClientQuestProgress quest, bool New = false) { if (TrackedQuestsIds.Any(d => d == quest.Id) || TrackedQuestsIds.Count >= 5) return; TrackedQuestsIds.Add(quest.Id); DisplayQuests(); if (!New) UpdateTrackedQuests(); }