static List<QuestStartCondition> GetConditions(Quest quest, string name) { List<String> conds = new List<string>(); Utility<Quest>.Instance.Export(quest, name, conds); List<QuestStartCondition> startConditions = new List<QuestStartCondition>(); if (conds.Count > 0) { foreach (string cond in conds) { string[] parseString = cond.Split(new string[] { " ", "," }, StringSplitOptions.RemoveEmptyEntries); var finalConds = new Dictionary<int, QuestStep>(); var condition = new QuestStartCondition(); condition.questSteps = new List<QuestStep>(); foreach (string c in parseString) { string[] condData = c.Split('_'); string questIdStep = (condData.Length > 1 ? condData[1] : condData[0]).TrimStart('q', 'Q'); condData = questIdStep.Split(':'); int questId = Int32.Parse(condData[0]); int rewardNo = 0; if (condData.Length > 1) rewardNo = Int32.Parse(condData[1]); QuestStep qs = new QuestStep(questId, rewardNo); if (finalConds.ContainsKey(questId)) { QuestStep qsOld = finalConds[questId]; } else { finalConds.Add(questId, qs); } } condition.questSteps = finalConds.OrderBy(p => p.Key).Select(p => p.Value).ToList(); startConditions.Add(condition); } } return startConditions; }
static List<QuestItemsOur> GetSelectableRewards(Quest quest, string name) { List<QuestItemsOur> list = new List<QuestItemsOur>(1); Utility<Quest>.Instance.Export(quest, name, list); list = list.Where(r => r.count > 0).ToList(); if (list.Count == 0) list = null; return list; }
static void AddQuest(string eventCategory, Quest quest) { if (!String.IsNullOrEmpty(eventCategory)) { if (questsByCategory.ContainsKey(eventCategory)) { questsByCategory[eventCategory].Add(quest); } else { questsByCategory.Add(eventCategory, new List<Quest>() { quest }); } } }