public Chunk(World world, ChunkPos chunkPos) { World = world; Pos = chunkPos; _storageKey = StorageKey.Get("ChunkData", chunkPos); var saveFile = world?.Universe?.SaveFile; var savedValue = saveFile?.ReadAsync(_storageKey)?.Result; if (savedValue != null) { var chunkData = savedValue.Deserialize <ChunkData>(); if (chunkData != null) { try { PasteChunkData(chunkData); } catch { _data = null; _isCreated = false; _chunkData = null; ContentHash = 0; } } } _saveFile = saveFile; }
public ushort this[BlockPos p] { get { if (p.Y < -200) { return(1); } var chunk = PeekChunk((ChunkPos)p); if (chunk == null) { return(0); } return(chunk[p.X & _chunkMask, p.Y & _chunkMask, p.Z & _chunkMask]); } set { var chunkPos = (ChunkPos)p; var chunk = GetChunk(chunkPos); if (chunk.IsCreated) { chunk[p.X & _chunkMask, p.Y & _chunkMask, p.Z & _chunkMask] = value; Universe?.SaveFile?.Write(StorageKey.Get("ChunkData", chunkPos), StorageValue.Serialize(chunk.GetChunkData())); } } }
public T Get <T>(string section, string key) { // TODO 2: Almacenamos una Key en el diccionario m_serialized Debug.Assert(m_serialized.ContainsKey(section), "La sección " + section + " no existe"); StorageKey storageKey = m_serialized[section]; Debug.Assert(storageKey.ContainsKey(key)); return(storageKey.Get <T>(key)); }
public T Get <T>(string section, string key) { // TODO 2: Almacenamos una Key en el diccionario m_serialized Debug.Assert(m_serialized.ContainsKey(section), "Section " + section + "not exist"); StorageKey sk = m_serialized[section]; Debug.Assert(sk.ContainsKey(key), "The Key " + key + " in section " + section + " not exist"); return(sk.Get <T>(key)); }
private async void LoadOrGenerate(Chunk chunk) { var savedValueTask = Universe?.SaveFile?.ReadAsync(StorageKey.Get("ChunkData", chunk.Pos)); StorageValue savedValue = savedValueTask == null ? null : await savedValueTask; if (savedValue != null) { var chunkData = savedValue.Deserialize <ChunkData>(); if (chunkData != null) { chunk.PasteChunkData(savedValue.Deserialize <ChunkData>()); } } else if (Generator != null) { Generator.CreateChunk(chunk); } }