Esempio n. 1
0
        public void CancelQuest(QuestInfo quest)
        {
            bool available = false, current = false, completed = false;

            ClientUserQuest userQuest = GameScene.Game.QuestLog.FirstOrDefault(x => x.Quest == quest);

            if (userQuest == null)
            {
                return;
            }

            if (CompletedTab.Quests.Contains(quest))
            {
                CompletedTab.Quests.Remove(quest);
                completed = true;
            }

            if (CurrentTab.Quests.Contains(quest))
            {
                CurrentTab.Quests.Remove(quest);
                current = true;
            }

            if (GameScene.Game.CanAccept(quest))
            {
                if (!AvailableTab.Quests.Contains(quest))
                {
                    AvailableTab.Quests.Add(quest);
                    available = true;
                }
            }

            GameScene.Game.QuestLog.Remove(userQuest);

            if (available)
            {
                AvailableTab.NeedUpdate = true;
                AvailableTab.UpdateQuestDisplay();
            }
            if (current)
            {
                CurrentTab.NeedUpdate = true;
                CurrentTab.UpdateQuestDisplay();
            }
            if (completed)
            {
                CompletedTab.NeedUpdate = true;
                CompletedTab.UpdateQuestDisplay();
            }
        }
Esempio n. 2
0
        public void QuestChanged(ClientUserQuest quest)
        {
            if (AvailableTab.SelectedQuest?.QuestInfo == quest.Quest)
            {
                AvailableTab.UpdateQuestDisplay();
            }

            if (CurrentTab.SelectedQuest?.QuestInfo == quest.Quest)
            {
                CurrentTab.UpdateQuestDisplay();
            }

            if (CompletedTab.SelectedQuest?.QuestInfo == quest.Quest)
            {
                CompletedTab.UpdateQuestDisplay();
            }
        }
Esempio n. 3
0
        public void PopulateQuests()
        {
            bool available = false, current = false, completed = false;

            foreach (QuestInfo quest in Globals.QuestInfoList.Binding)
            {
                ClientUserQuest userQuest = GameScene.Game.QuestLog.FirstOrDefault(x => x.Quest == quest);

                if (userQuest == null)
                {
                    if (!GameScene.Game.CanAccept(quest))
                    {
                        continue;
                    }

                    if (AvailableTab.Quests.Contains(quest))
                    {
                        continue;
                    }

                    AvailableTab.Quests.Add(quest);
                    available = true;
                    continue;
                }


                if (AvailableTab.Quests.Contains(quest))
                {
                    AvailableTab.Quests.Remove(quest);
                    available = true;
                }

                if (userQuest.Completed)
                {
                    if (CompletedTab.Quests.Contains(quest))
                    {
                        continue;
                    }

                    CompletedTab.Quests.Add(quest);
                    completed = true;

                    if (!CurrentTab.Quests.Contains(quest))
                    {
                        continue;
                    }

                    CurrentTab.Quests.Remove(quest);
                    current = true;

                    continue;
                }

                if (CurrentTab.Quests.Contains(quest))
                {
                    continue;
                }

                CurrentTab.Quests.Add(quest);
                current = true;
            }


            if (available)
            {
                AvailableTab.NeedUpdate = true;
                AvailableTab.UpdateQuestDisplay();
            }
            if (current)
            {
                CurrentTab.NeedUpdate = true;
                CurrentTab.UpdateQuestDisplay();
            }
            if (completed)
            {
                CompletedTab.NeedUpdate = true;
                CompletedTab.UpdateQuestDisplay();
            }
        }
        public void PopulateQuests()
        {
            foreach (DXLabel line in Lines)
            {
                line.Dispose();
            }

            Lines.Clear();

            if (!Config.QuestTrackerVisible)
            {
                Visible = false;
                return;
            }

            foreach (QuestInfo quest in GameScene.Game.QuestBox.CurrentTab.Quests)
            {
                ClientUserQuest userQuest = GameScene.Game.QuestLog.First(x => x.Quest == quest);

                if (!userQuest.Track)
                {
                    continue;
                }

                DXLabel label = new DXLabel
                {
                    Text          = quest.QuestName,
                    Parent        = TextPanel,
                    Outline       = true,
                    OutlineColour = Color.Black,
                    IsControl     = false,
                    Location      = new Point(15, Lines.Count * 15)
                };


                DXAnimatedControl QuestIcon = new DXAnimatedControl
                {
                    Parent         = TextPanel,
                    Location       = new Point(2, Lines.Count * 15),
                    Loop           = true,
                    LibraryFile    = LibraryFile.Interface,
                    BaseIndex      = 83,
                    FrameCount     = 2,
                    AnimationDelay = TimeSpan.FromSeconds(1),
                    IsControl      = false,
                };
                label.Disposing += (o, e) =>
                {
                    QuestIcon.Dispose();
                };

                label.LocationChanged += (o, e) =>
                {
                    QuestIcon.Location = new Point(QuestIcon.Location.X, label.Location.Y);
                };

                QuestIcon.BaseIndex = !userQuest.IsComplete ? 85 : 93;


                if (userQuest.IsComplete)
                {
                    label.Text += " (Complete)";
                }

                Lines.Add(label);

                if (userQuest.IsComplete)
                {
                    DXLabel label1 = new DXLabel
                    {
                        Text          = $"Goto {quest.FinishNPC.NPCName} in {quest.FinishNPC.RegionName}",
                        Parent        = TextPanel,
                        ForeColour    = Color.White,
                        Outline       = true,
                        OutlineColour = Color.Black,
                        IsControl     = false,
                        Location      = new Point(25, Lines.Count * 15)
                    };

                    Lines.Add(label1);
                }
                else
                {
                    foreach (QuestTask task in quest.Tasks)
                    {
                        ClientUserQuestTask userTask = userQuest.Tasks.FirstOrDefault(x => x.Task == task);

                        if (userTask != null && userTask.Completed)
                        {
                            continue;
                        }

                        DXLabel label1 = new DXLabel
                        {
                            Text          = GameScene.Game.GetTaskText(task, userQuest),
                            Parent        = TextPanel,
                            ForeColour    = Color.White,
                            Outline       = true,
                            OutlineColour = Color.Black,
                            IsControl     = false,
                            Location      = new Point(25, Lines.Count * 15)
                        };

                        Lines.Add(label1);
                    }
                }
            }


            Visible = Lines.Count > 0;
            UpdateScrollBar();
        }