private static Quest CreateQuest( QuestSheet.Row row, QuestReward reward, EquipmentItemRecipeSheet equipmentItemRecipeSheet) { Quest quest = default; switch (row) { case CollectQuestSheet.Row r: quest = new CollectQuest(r, reward); break; case CombinationQuestSheet.Row r: quest = new CombinationQuest(r, reward); break; case GeneralQuestSheet.Row r: quest = new GeneralQuest(r, reward); break; case ItemEnhancementQuestSheet.Row r: quest = new ItemEnhancementQuest(r, reward); break; case ItemGradeQuestSheet.Row r: quest = new ItemGradeQuest(r, reward); break; case MonsterQuestSheet.Row r: quest = new MonsterQuest(r, reward); break; case TradeQuestSheet.Row r: quest = new TradeQuest(r, reward); break; case WorldQuestSheet.Row r: quest = new WorldQuest(r, reward); break; case ItemTypeCollectQuestSheet.Row r: quest = new ItemTypeCollectQuest(r, reward); break; case GoldQuestSheet.Row r: quest = new GoldQuest(r, reward); break; case CombinationEquipmentQuestSheet.Row r: int stageId; var recipeRow = equipmentItemRecipeSheet.Values .FirstOrDefault(e => e.Id == r.RecipeId); if (recipeRow is null) { throw new ArgumentException($"Invalid Recipe Id : {r.RecipeId}"); } stageId = recipeRow.UnlockStage; quest = new CombinationEquipmentQuest(r, reward, stageId); break; } return(quest); }
protected Quest(QuestSheet.Row data, QuestReward reward) { Id = data.Id; Goal = data.Goal; Reward = reward; }