public void PickQuest([NotNull] IQuest quest) { if (quest == null) throw new ArgumentNullException(nameof(quest)); var idx = PickableQuests.FindIndex(q => q == quest); if (idx < 0) return; PickableQuests.Remove(quest); quest.Activate(); SaveDataManager.instance.SaveData.currentQuests.Add(quest); SaveDataManager.instance.ApplyToFile(); OnQuestPicked(); //new UnityTask(TestComplete(quest, 2f)); }
public void AddNewPickableQuest(Type type) { if (PickableQuests.Count >= 3) return; if (Activator.CreateInstance(type) is Quest quest) { switch (quest) { case LevelUpQuest levelUpQuest: levelUpQuest.Prepare(0, (uint)Random.Range(1, 4)); break; case MonsterDamageQuest monsterDamageQuest: monsterDamageQuest.Prepare(0, (uint)(Random.Range(250, 500) * 100)); break; case MonsterKillQuest monsterKillQuest: monsterKillQuest.Prepare(0, (uint)Random.Range(5, 10)); break; } quest.QuestCompleted += OnQuestCompleted; quest.ProgressChanged += OnQuestProgressChanged; PickableQuests.Add(quest); SaveDataManager.instance.ApplyToFile(); } }