/// <summary> /// 处理 读取的方块 /// </summary> public void HandleForLoadBlock() { GameDataManager gameDataManager = GameDataHandler.Instance.manager; //获取数据中的chunk UserDataBean userData = gameDataManager.GetUserData(); ChunkSaveBean chunkSaveData = gameDataManager.GetChunkSaveData(userData.userId, WorldCreateHandler.Instance.manager.worldType, chunkData.positionForWorld); //如果没有世界数据 则创建一个 if (chunkSaveData == null) { chunkSaveData = new ChunkSaveBean(); chunkSaveData.workdType = (int)WorldCreateHandler.Instance.manager.worldType; chunkSaveData.userId = userData.userId; chunkSaveData.position = chunkData.positionForWorld; } chunkSaveData.InitData(); Dictionary <int, BlockBean> dicBlockData = chunkSaveData.dicBlockData; foreach (var itemData in dicBlockData) { BlockBean blockData = itemData.Value; Vector3Int positionBlock = blockData.localPosition; //添加方块 如果已经有该方块 则先删除,优先使用存档的方块 //chunkData.GetBlockForLocal(positionBlock, out Block block, out DirectionEnum direction); Block block = BlockHandler.Instance.manager.GetRegisterBlock(blockData.blockId); chunkData.SetBlockForLocal(positionBlock, block, blockData.direction); } SetChunkSaveData(chunkSaveData); }
/// <summary> /// 获取数据 /// </summary> /// <param name="action"></param> /// <returns></returns> public ChunkSaveBean GetChunkSaveData(string userId, WorldTypeEnum worldType, Vector3Int position, Action <ChunkSaveBean> action) { ChunkSaveBean data = GetModel().GetChunkSaveData(userId, worldType, position); if (data == null) { GetView().GetChunkSaveFail("没有数据", null); return(null); } GetView().GetChunkSaveSuccess(data, action); return(data); }
/// <summary> /// 异步保存游戏数据 /// </summary> public async void SaveGameDataAsync(ChunkSaveBean chunkSaveData) { await Task.Run(() => { lock (lockForSaveData) { chunkSaveData.SaveData(); controllerForUserData.SetUserData(userData); controllerForChunkSave.SetChunkSaveData(chunkSaveData, null); } }); }
/// <summary> /// 保存世界数据 /// </summary> /// <param name="worldData"></param> /// <param name="action"></param> public void SetChunkSaveData(ChunkSaveBean chunkSaveData, Action <ChunkSaveBean> action) { GetModel().SetChunkSaveData(chunkSaveData); }
/// <summary> /// 设置存储数据 /// </summary> /// <param name="worldData"></param> public void SetChunkSaveData(ChunkSaveBean chunkSaveData) { this.chunkSaveData = chunkSaveData; }
/// <summary> /// 保存游戏数据 /// </summary> /// <param name="data"></param> public void SetChunkSaveData(ChunkSaveBean data) { serviceChunkSave.UpdateData(data); }
/// <summary> /// 获取游戏数据 /// </summary> /// <returns></returns> public ChunkSaveBean GetChunkSaveData(string userId, WorldTypeEnum worldType, Vector3Int position) { ChunkSaveBean data = serviceChunkSave.QueryData(userId, worldType, position); return(data); }