コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 private string GetSavePath(SavedPositionType positionType, string filePrefix = null)
 {
     return(Path.Combine(GetSaveFolderPath(), GetUniqueSaveName(positionType, filePrefix)));
 }