示例#1
0
    /// <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);
    }
示例#3
0
 /// <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);
 }
示例#5
0
 /// <summary>
 /// 设置存储数据
 /// </summary>
 /// <param name="worldData"></param>
 public void SetChunkSaveData(ChunkSaveBean chunkSaveData)
 {
     this.chunkSaveData = chunkSaveData;
 }
示例#6
0
 /// <summary>
 /// 保存游戏数据
 /// </summary>
 /// <param name="data"></param>
 public void SetChunkSaveData(ChunkSaveBean data)
 {
     serviceChunkSave.UpdateData(data);
 }
示例#7
0
    /// <summary>
    /// 获取游戏数据
    /// </summary>
    /// <returns></returns>
    public ChunkSaveBean GetChunkSaveData(string userId, WorldTypeEnum worldType, Vector3Int position)
    {
        ChunkSaveBean data = serviceChunkSave.QueryData(userId, worldType, position);

        return(data);
    }