예제 #1
0
        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();
            }
        }
예제 #2
0
        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;
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
 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);
 }
예제 #6
0
        /***
         * 附带刷每个任务接取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);
        }