private void Save(SavedPositionType positionType, string filePrefix = null, byte[] screenshotBytes = null) { var newSaveFilePath = GetSavePath(positionType, filePrefix); var screenshotFile = screenshotBytes == null ? screenShotService.CaptureScreenshotFile(newSaveFilePath) : ScreenShotService.WriteScreenshotBytesToPng(newSaveFilePath, screenshotBytes); if (string.IsNullOrEmpty(screenshotFile)) { ReportMessage(Strings.SaveFailed, false); return; } CreateSaveFile(positionType, screenshotFile, newSaveFilePath); }
private void CreateSaveFile(SavedPositionType positionType, string screenshotFile, string newSaveFilePath) { var newSave = new SavedPosition() { GridSize = environment.GridSize, WorldTileSide = environment.WorldTileSideSize, positionType = positionType, OriginalOffset = terrain.InitialWorldOffset, TraversedOffset = terrain.TraversedOffset, CharacterPosition = characterTransform.position, CharacterRotation = characterTransform.rotation, ScreenShotFileName = screenshotFile, DateTimeTicks = DateTime.Now.Ticks, BuiltElements = GetBuildDescriptions(BuiltElementsStoreController.GetBuiltElements()) }; var saveResult = FileServices.SavePosition(newSave, newSaveFilePath); ReportMessage(saveResult ? Strings.SaveSuccessful : Strings.SaveFailed, saveResult); OnFileSave?.Invoke(saveResult); }
public string GetUniqueSaveName(SavedPositionType positionType, string filePrefix = null) { CheckSaveFolderPath(); var regularSaveFileName = string.IsNullOrEmpty(filePrefix) ? saveFilePrefix : filePrefix; var nameBase = positionType == SavedPositionType.QuickSave ? quickSaveFilePrefix : regularSaveFileName; var existingSaves = Directory.GetFiles(GetSaveFolderPath()).Where(file => file.Contains(nameBase) && file.EndsWith(saveFileExtension)).ToList(); var counterSuffix = existingSaves.Count <= 0 ? "" : (existingSaves.Count).ToString(); var newFileName = $"{nameBase}{counterSuffix}{saveFileExtension}"; while (existingSaves.Where(file => file.Contains(newFileName)).ToList().Count > 0) { if (int.TryParse(counterSuffix, out var innerCounter)) { innerCounter += 1; } newFileName = $"{nameBase}{innerCounter}{saveFileExtension}"; } return(newFileName); }
private string GetSavePath(SavedPositionType positionType, string filePrefix = null) { return(Path.Combine(GetSaveFolderPath(), GetUniqueSaveName(positionType, filePrefix))); }