public QuestList(QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet, EquipmentItemSubRecipeSheet equipmentItemSubRecipeSheet ) { _quests = new List <Quest>(); foreach (var questData in questSheet.OrderedList) { var reward = GetQuestReward( questData.QuestRewardId, questRewardSheet, questItemRewardSheet ); var quest = CreateQuest(questData, reward, equipmentItemRecipeSheet); if (quest is null) { continue; } _quests.Add(quest); } }
public void UpdateList( QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet) { UpdateListV1( _listVersion + 1, questSheet, questRewardSheet, questItemRewardSheet, equipmentItemRecipeSheet); }
public AvatarSheets( WorldSheet worldSheet, QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet, EquipmentItemSubRecipeSheet equipmentItemSubRecipeSheet ) { WorldSheet = worldSheet; QuestSheet = questSheet; QuestRewardSheet = questRewardSheet; QuestItemRewardSheet = questItemRewardSheet; EquipmentItemRecipeSheet = equipmentItemRecipeSheet; EquipmentItemSubRecipeSheet = equipmentItemSubRecipeSheet; }
public void UpdateListV1( int listVersion, QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet) { if (listVersion != _listVersion + 1) { throw new UpdateListVersionException(_listVersion + 1, listVersion); } if (questSheet.Count <= _quests.Count) { throw new UpdateListQuestsCountException(_quests.Count, questSheet.Count); } _listVersion = listVersion; ImmutableHashSet <int> questIds = _quests.Select(q => q.Id).ToImmutableHashSet(); foreach (var questRow in questSheet.OrderedList) { if (questIds.Contains(questRow.Id)) { continue; } var reward = GetQuestReward( questRow.QuestRewardId, questRewardSheet, questItemRewardSheet); Quest quest = CreateQuest(questRow, reward, equipmentItemRecipeSheet); if (quest is null) { continue; } _quests.Add(quest); } }
private static QuestReward GetQuestReward( int rewardId, QuestRewardSheet rewardSheet, QuestItemRewardSheet itemRewardSheet) { var itemMap = new Dictionary <int, int>(); if (rewardSheet.TryGetValue(rewardId, out var questRewardRow)) { foreach (var id in questRewardRow.RewardIds) { if (itemRewardSheet.TryGetValue(id, out var itemRewardRow)) { itemMap[itemRewardRow.ItemId] = itemRewardRow.Count; } } } return(new QuestReward(itemMap)); }
public QuestList(QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet, EquipmentItemSubRecipeSheet equipmentItemSubRecipeSheet ) { _quests = new List <Quest>(); foreach (var questData in questSheet.OrderedList) { Quest quest; QuestReward reward = GetQuestReward( questData.QuestRewardId, questRewardSheet, questItemRewardSheet ); switch (questData) { case CollectQuestSheet.Row row: quest = new CollectQuest(row, reward); _quests.Add(quest); break; case CombinationQuestSheet.Row row1: quest = new CombinationQuest(row1, reward); _quests.Add(quest); break; case GeneralQuestSheet.Row row2: quest = new GeneralQuest(row2, reward); _quests.Add(quest); break; case ItemEnhancementQuestSheet.Row row3: quest = new ItemEnhancementQuest(row3, reward); _quests.Add(quest); break; case ItemGradeQuestSheet.Row row4: quest = new ItemGradeQuest(row4, reward); _quests.Add(quest); break; case MonsterQuestSheet.Row row5: quest = new MonsterQuest(row5, reward); _quests.Add(quest); break; case TradeQuestSheet.Row row6: quest = new TradeQuest(row6, reward); _quests.Add(quest); break; case WorldQuestSheet.Row row7: quest = new WorldQuest(row7, reward); _quests.Add(quest); break; case ItemTypeCollectQuestSheet.Row row8: quest = new ItemTypeCollectQuest(row8, reward); _quests.Add(quest); break; case GoldQuestSheet.Row row9: quest = new GoldQuest(row9, reward); _quests.Add(quest); break; case CombinationEquipmentQuestSheet.Row row10: int stageId; var recipeRow = equipmentItemRecipeSheet.Values .FirstOrDefault(r => r.Id == row10.RecipeId); if (recipeRow is null) { throw new ArgumentException($"Invalid Recipe Id : {row10.RecipeId}"); } stageId = recipeRow.UnlockStage; if (row10.SubRecipeId.HasValue) { var subRow = equipmentItemSubRecipeSheet.Values .FirstOrDefault(r => r.Id == row10.SubRecipeId); if (subRow is null) { throw new ArgumentException($"Invalid Sub Recipe Id : {row10.SubRecipeId}"); } stageId = Math.Max(stageId, subRow.UnlockStage); } quest = new CombinationEquipmentQuest(row10, reward, stageId); _quests.Add(quest); break; } } }