public MTBTaskCacheData() { firstInitMark = false; EventManager.RegisterEvent(EventMacro.FIRST_INIT_TASK, onFirstInitTask); initMark = false; if (!checkCanInitTask()) { canConductTaskList = new Dictionary <int, MTBTaskData>(); initMark = true; return; } taskCacheData data = MTBTaskCacheDataLoader.loadData(); if (data.taskId <= 1 && data.stepId == 0) { int[] picIds = { 1, 2 }; ComicInfo comicinfo = new ComicInfo(picIds, 7); MTBComicController.Instance.playComicByTime(comicinfo); } canConductTaskList = data.canConductTaskList; PrepareInitNpcMap = data.PrepareInitNpcMap; curStep = data.stepId; if (data.taskId != 0) { curConDuctTaskData = canConductTaskList[data.taskId]; } initMark = true; if (firstInitMark) { initNpc(); } }
public static void saveData(taskCacheData data) { FileInfo fi = new FileInfo(CACHEDATAPATH); if (!fi.Directory.Exists) { fi.Directory.Create(); } writeFs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite); writeFs.Position = 0; Serialization.WriteIntToStream(writeFs, data.taskId); Serialization.WriteIntToStream(writeFs, data.stepId); Serialization.WriteIntToStream(writeFs, data.canConductTaskList.Values.Count); foreach (int key in data.canConductTaskList.Keys) { Serialization.WriteIntToStream(writeFs, key); } Serialization.WriteIntToStream(writeFs, data.PrepareInitNpcMap.Keys.Count); foreach (Vector3 key in data.PrepareInitNpcMap.Keys) { Serialization.WriteIntToStream(writeFs, (int)data.PrepareInitNpcMap[key].position.x); Serialization.WriteIntToStream(writeFs, (int)data.PrepareInitNpcMap[key].position.y); Serialization.WriteIntToStream(writeFs, (int)data.PrepareInitNpcMap[key].position.z); Serialization.WriteIntToStream(writeFs, data.PrepareInitNpcMap[key].NPCId); Serialization.WriteIntToStream(writeFs, data.PrepareInitNpcMap[key].taskId); Serialization.WriteIntToStream(writeFs, data.PrepareInitNpcMap[key].stepId); } writeFs.Flush(); writeFs.Close(); writeFs = null; }
public static taskCacheData loadData() { taskCacheData data = new taskCacheData(); FileInfo fi = new FileInfo(CACHEDATAPATH); if (!fi.Directory.Exists) { fi.Directory.Create(); } readFs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite); readFs.Position = 0; if (readFs.Length == 0) { data.canConductTaskList.Add(1, MTBTaskDataManager.Instance.getData(1)); readFs.Close(); readFs.Dispose(); readFs = null; data.taskId = 0; data.stepId = 0; saveData(data); EventManager.SendEvent(EventMacro.FIRST_INIT_TASK); return(data); } int curTaskId = Serialization.ReadIntFromStream(readFs); int curStepId = Serialization.ReadIntFromStream(readFs); int count = Serialization.ReadIntFromStream(readFs); for (int i = 0; i < count; i++) { int key = Serialization.ReadIntFromStream(readFs); data.canConductTaskList.Add(key, MTBTaskDataManager.Instance.getData(key)); } int count2 = Serialization.ReadIntFromStream(readFs); data.PrepareInitNpcMap.Clear(); for (int i = 0; i < count2; i++) { Vector3 key = new Vector3(Serialization.ReadIntFromStream(readFs), Serialization.ReadIntFromStream(readFs), Serialization.ReadIntFromStream(readFs)); NPCInfo info = new NPCInfo(); info.NPCId = Serialization.ReadIntFromStream(readFs); info.taskId = Serialization.ReadIntFromStream(readFs); info.stepId = Serialization.ReadIntFromStream(readFs); data.PrepareInitNpcMap.Add(key, info); } readFs.Flush(); readFs.Close(); readFs = null; data.taskId = curTaskId; data.stepId = curStepId; return(data); }
public void addPrepareInitNpc(NPCInfo info) { if (!MTBTaskController.Instance.taskCacherData.PrepareInitNpcMap.ContainsKey(info.position)) { MTBTaskController.Instance.taskCacherData.PrepareInitNpcMap.Add(info.position, info); } else { MTBTaskController.Instance.taskCacherData.PrepareInitNpcMap[info.position] = info; } taskCacheData data = MTBTaskCacheDataLoader.loadData(); data.PrepareInitNpcMap = PrepareInitNpcMap; MTBTaskCacheDataLoader.saveData(data); }
public bool finishStep(int taskId, int stepId) { if (taskId == 0 || stepId == 0) { return(false); } if (canConductTaskList.ContainsKey(taskId)) { taskCacheData data = MTBTaskCacheDataLoader.loadData(); data.canConductTaskList = canConductTaskList; data.taskId = taskId; data.stepId = stepId + 1; MTBTaskCacheDataLoader.saveData(data); return(true); } return(false); }
/*** * 附带刷每个任务接取npc * ***/ private void checkAndInitTask(int taskId) { if (taskId == 0) { return; } if (!canConductTaskList.ContainsKey(taskId)) { canConductTaskList.Add(taskId, MTBTaskDataManager.Instance.getData(taskId)); } taskCacheData data = MTBTaskCacheDataLoader.loadData(); data.canConductTaskList = canConductTaskList; data.taskId = taskId; data.stepId = 0; MTBTaskCacheDataLoader.saveData(data); HasActionObjectManager.Instance.npcManager.InitNPC(taskId, 1); }