public bool CheckAndAddQuest(int userLevel, Int64 영업턴, DBUserQuests userQuestInfo, Int64 traceId) { var userID = userQuestInfo._id; if (userQuestInfo.CQID == 0 && userQuestInfo.Quest.ID == 0) { var firstQuestData = Loader.First일반퀘스트(userLevel); if (firstQuestData == null) { OPLogger.Error(LOG_TYPE.NEW_NORMAL_QUEST, traceId, string.Format("첫 퀘스트가 없음. UserID:{0}", userID)); return(false); } AddQuest(영업턴, firstQuestData, userQuestInfo); return(true); } // 현재 진행 중인 것이 있으면 새로 받지 못한다. if (userQuestInfo.Quest.ID != 0) { return(false); } // 다음 퀘스트 조건에 부합하면 퀘스트를 받는다. var questData = Loader.Next일반퀘스트(userLevel, userQuestInfo.CQID, traceId); if (questData == null) { OPLogger.Trace(LOG_TYPE.T_NEW_QUEST, traceId, string.Format("{0} 다음의 일반 퀘스트가 없다. UserID:{1}, Level:{2}", userQuestInfo.CQID, userID, userLevel)); return(false); } AddQuest(영업턴, questData, userQuestInfo); return(true); }
public int Update(NoneSimulationQuestCountValue noneSimulCountValue, ref DBUserQuests userQuestInfo, Int64 traceId) { var userID = userQuestInfo._id; var hitCount = 0; if (noneSimulCountValue != null) { if (userQuestInfo.Quest.ID != 0 && userQuestInfo.Quest.IsC == false && userQuestInfo.Quest.ST > 0) { var quest = Loader.GetQuestData(userQuestInfo.Quest.ID); if (quest == null) { OPLogger.Error(LOG_TYPE.QUEST_PR_UPDATE, traceId, string.Format("UserID:{0}, 퀘스트ID:{1} 정보가 없음", userID, userQuestInfo.Quest.ID)); return(hitCount); } hitCount += noneSimulCountValue.Update(quest.SubjectID, quest.SubjectCountOpenStart, ref userQuestInfo.Quest.PR); CheckUpdateComplete(quest.SubjectCount, userQuestInfo.Quest.PR, ref userQuestInfo.Quest.IsC); } for (int i = 0; i < userQuestInfo.DQList.Count; ++i) { if (userQuestInfo.DQList[i].ID != 0 && userQuestInfo.DQList[i].IsC == false && userQuestInfo.DQList[i].ST > 0) { var quest = Loader.GetQuestData(userQuestInfo.DQList[i].ID); if (quest == null) { OPLogger.Error(LOG_TYPE.QUEST_PR_UPDATE, traceId, string.Format("UserID:{0}, 퀘스트ID:{1} 정보가 없음", userID, userQuestInfo.DQList[i].ID)); continue; } hitCount += noneSimulCountValue.Update(quest.SubjectID, quest.SubjectCountOpenStart, ref userQuestInfo.DQList[i].PR); CheckUpdateComplete(quest.SubjectCount, userQuestInfo.DQList[i].PR, ref userQuestInfo.DQList[i].IsC); } } } return(hitCount); }
public static async Task <int> Update(string userID, NoneSimulationQuestCountValue noneSimulCountValue, Int64 traceId = 0) { int updateCount = 0; var userQuestInfo = await DBUserGameData.GetQuestData(userID); if (userQuestInfo != null) { updateCount = CountUpdaterInst.Update(noneSimulCountValue, ref userQuestInfo, traceId); if (updateCount > 0) { await DBUserGameData.SaveQuestData(userQuestInfo); } } else { OPLogger.Error(LOG_TYPE.QUEST_PR_UPDATE, traceId, string.Format("{0} 유저의 퀘스트 정보가 없습니다", userID)); } return(updateCount); }