public string LoadUserQuests() { string query = $"SELECT * FROM dbo.PlayerQuests WHERE UserAccount = '{UserInfoProvider.Instance.UserAccount}'"; DataSet dataSet = ConnectDB_GetDataSet("PlayerInfo_DB", query); object[] dataArray = dataSet.Tables[0].Rows[0].ItemArray; string questCodesInProgressSTR = dataArray[1].ToString(); string questInProgress_Discussion_JSON = dataArray[2].ToString(); string questInProgress_KillMonster_JSON = dataArray[3].ToString(); string completedQuests = dataArray[4].ToString(); QuestProgress_Discussion progress_Discussion = JsonUtility.FromJson <QuestProgress_Discussion>(questInProgress_Discussion_JSON); QuestProgress_KillMonster progress_KillMonster = JsonUtility.FromJson <QuestProgress_KillMonster>(questInProgress_KillMonster_JSON); int[] progressQuestCodes = null; int[] completedQuestCodes = null; if (!string.IsNullOrEmpty(questCodesInProgressSTR)) { progressQuestCodes = CodesSTR_To_IntegerArray(questCodesInProgressSTR); } if (!string.IsNullOrEmpty(completedQuests)) { completedQuestCodes = CodesSTR_To_IntegerArray(completedQuests); } UserQuestProvider.Instance.Initialize(progressQuestCodes, completedQuestCodes, progress_Discussion, progress_KillMonster); return("Success"); }
public void Initialize(int[] questCodesInProgress, int[] questCodesCompleted, QuestProgress_Discussion progress_Discussion, QuestProgress_KillMonster progress_KillMonster) { if (questCodesInProgress != null) { for (int i = 0; i < questCodesInProgress.Length; ++i) { QuestData data = QuestDB.Instance.GetQuestData(questCodesInProgress[i]); questDatasInProgress.Add(data); } } if (questCodesCompleted != null) { for (int i = 0; i < questCodesCompleted.Length; ++i) { try { QuestData data = QuestDB.Instance.GetQuestData(questCodesCompleted[i]); completedQuests.Add(data); } catch (Exception) { Debug.Log($"UserQuestProvider : {questCodesCompleted[i]} 데이터가 존재하지 않음"); } } } questProgress_Discussion = progress_Discussion; questProgress_Discussion.Initiailize(); questProgress_KillMonster = progress_KillMonster; questProgress_KillMonster.Initialize(); }
// Singleton private UserQuestProvider() { questDatasInProgress = new List <QuestData>(); questProgress_Discussion = new QuestProgress_Discussion(); questProgress_Discussion.Initiailize(); questProgress_KillMonster = new QuestProgress_KillMonster(); questProgress_KillMonster.Initialize(); completedQuests = new List <QuestData>(); }
public void Initialize() { questObservers = new List <QuestObserver>(); questObservers.Add(QuestNoticePopup.Instance.GetComponent <QuestObserver>()); // 퀘스트 진행상황 불러오기 questsInProgress = new Dictionary <int, QuestTotalProgress>(); completedQuests = new Dictionary <int, QuestData>(); questProgress_Discussion = UserQuestProvider.Instance.QuestProgress_Discussion; questProgress_KillMonster = UserQuestProvider.Instance.QuestProgress_KillMonster; for (int i = 0; i < questObservers.Count; ++i) { questProgress_Discussion.AddObserver(questObservers[i]); questProgress_KillMonster.AddObserver(questObservers[i]); } if (UserQuestProvider.Instance.QuestDatasInProgress.Count > 0) { for (int i = 0; i < UserQuestProvider.Instance.QuestDatasInProgress.Count; ++i) { QuestTotalProgress totalProgress = new QuestTotalProgress(); totalProgress.Completed = false; totalProgress.OriginalQuestData = UserQuestProvider.Instance.QuestDatasInProgress[i]; for (int questTypeIdx = 0; i < totalProgress.OriginalQuestData.QuestCategorys.Length; ++i) { switch (totalProgress.OriginalQuestData.QuestCategorys[questTypeIdx]) { case "GetItem": totalProgress.OriginalQuestData.Behaviour_GetItem.Initialize(); for (int observerIdx = 0; observerIdx < questObservers.Count; ++observerIdx) { totalProgress.OriginalQuestData.Behaviour_GetItem.AddObserver(questObservers[observerIdx]); } break; case "Building": totalProgress.OriginalQuestData.Behaviour_Building.Initialize(); for (int observerIdx = 0; observerIdx < questObservers.Count; ++observerIdx) { totalProgress.OriginalQuestData.Behaviour_Building.AddObserver(questObservers[observerIdx]); } break; } } questsInProgress.Add(totalProgress.OriginalQuestData.QuestCode, totalProgress); } UpdateAllQuestProgress(); } // 완료된 퀘스트 불러오기 if (UserQuestProvider.Instance.CompletedQuests.Count > 0) { for (int i = 0; i < UserQuestProvider.Instance.CompletedQuests.Count; ++i) { QuestData data = UserQuestProvider.Instance.CompletedQuests[i]; completedQuests.Add(data.QuestCode, data); } } else { completedQuests = new Dictionary <int, QuestData>(); } }