public static List <SCCMLevelData> ListUserLevelsUnfinished() { var allfiles = FileHelper.Inst.ListData(); var result = new List <SCCMLevelData>(); foreach (var file in allfiles) { if (!file.StartsWith("CUSTOMLEVELDATA_")) { continue; } string content = null; try { var dat = new SCCMLevelData(); content = FileHelper.Inst.ReadDataOrNull(file); dat.DeserializeFromString(content); result.Add(dat); } catch (Exception e) { SAMLog.Error("SCCMU::READFAIL_LULU", "Could not read CustomLevelData", $"Exception: {e}\n\n\nFile: {file}\n\n\nContent:{content}"); } } return(result.OrderByDescending(r => r.LastChanged).ToList()); }
private bool SaveToDisk() { var sdata = SerializeToString(); try { FileHelper.Inst.WriteData(Filename, sdata); } catch (IOException e) { if (e.Message.Contains("Disk full")) { MainGame.Inst.DispatchBeginInvoke(() => { MainGame.Inst.ShowToast("SCCMLD::OOM", L10N.T(L10NImpl.STR_ERR_OUTOFMEMORY), 32, FlatColors.Flamingo, FlatColors.Foreground, 3f); }); return(false); } else { SAMLog.Error("SCCMLD::WRITE", e); return(false); } } #if DEBUG SAMLog.Debug($"SCCM saved ({sdata.Length})"); try { var p = new SCCMLevelData(); p.DeserializeFromString(sdata); var sdata2 = p.SerializeToString(); if (sdata2 != sdata) { SAMLog.Error("SCCMLD:Serialization_mismatch", "Serialization test mismatch", $"Data_1:\n{sdata}\n\n----------------\n\nData_2:\n{sdata2}"); } } catch (Exception e) { SAMLog.Error("SCCMLD:Serialization-Ex", "Serialization test mismatch", e.ToString()); } #endif return(true); }
public static void UpgradeLevel(SCCMLevelData oldData, byte[] newData) { FileHelper.Inst.DeleteDataIfExist(oldData.Filename); FileHelper.Inst.WriteBinData(oldData.FilenameUploaded, newData); }