Esempio n. 1
0
        private static bool IsQuestObjectiveActive(int questId, int questStepId, QuestStepObjectiveType objectiveType)
        {
            var currentQuest = QuestInfo.FromId(questId);

            if (currentQuest == null)
            {
                Logger.Debug("[Bounty] Failed to determine the step id. Reason: Quest not found.");
                return(false);
            }
            var step = currentQuest.QuestRecord.Steps.FirstOrDefault();

            if (step == null)
            {
                Logger.Debug("[Bounty] Failed to determine the step id. Reason: Step not found.");
                return(false);
            }
            var objectives = currentQuest.QuestRecord.Steps.First(qs => qs.StepId == questStepId).QuestStepObjectiveSet.QuestStepObjectives;
            int objectiveIndex;

            for (objectiveIndex = 0; objectiveIndex < objectives.Length; objectiveIndex++)
            {
                if (objectives[objectiveIndex].ObjectiveType == objectiveType)
                {
                    break;
                }
            }

            return(QuestObjectiveInfo.IsActiveObjective(questId, questStepId, objectiveIndex));
        }
        public static List <TrinityObjectiveInfo> GetObjectiveInfo()
        {
            // Why you make things so difficult for me nesox?
            var objectives = new List <TrinityObjectiveInfo>();
            var logger     = (log4net.Repository.Hierarchy.Logger)log4net.LogManager.GetLogger(typeof(QuestObjectiveInfo))?.Logger;

            if (logger == null)
            {
                return(objectives);
            }
            var dbLogger = (log4net.Repository.Hierarchy.Logger)log4net.LogManager.GetLogger(typeof(Demonbuddy.MainWindow))?.Logger;

            if (dbLogger == null)
            {
                return(objectives);
            }
            var asyncAppender = dbLogger.Parent.Appenders.ToArray().OfType <Zeta.Common.Logger.AsyncAppender>().FirstOrDefault();
            var repository    = (Hierarchy)LogManager.GetRepository();

            repository.Root.RemoveAppender(asyncAppender);
            var appender = new MemoryAppender();

            logger.AddAppender(appender);
            QuestObjectiveInfo.DumpObjectives();
            objectives.AddRange(appender.GetEvents().Select(e => new TrinityObjectiveInfo(e.RenderedMessage)));
            logger.RemoveAppender(appender);
            repository.Root.AddAppender(asyncAppender);
            return(objectives);
        }