Beispiel #1
0
        public static bool SavePosition(SavedPosition position, string fullPath)
        {
            if (position == null)
            {
                return(false);
            }

            var json = JsonService.SerializeToJson(position);

            return(SaveFile(fullPath, json));
        }
#pragma warning restore 649

        // public void Initialize(Texture2D image, string title, long timestampTicks, bool isQuickSave)
        public void Initialize(SavedPosition position)
        {
            savedPosition = position;
            var previewImage = screenShotService.LoadScreenshot(position.ScreenShotFileName);
            var title        = FileServices.ExtractPositionTitleFromScreenshotPath(position.ScreenShotFileName);

            Image.texture      = previewImage;
            TitleMesh.text     = title;
            TimeStampMesh.text = new DateTime(position.DateTimeTicks).ToString("d MMMM yyyy hh:mm");
            QuickSaveIndicator.SetActive(position.positionType == SavedPositionType.QuickSave);
        }
        private void SetWorldFromPositionData(SavedPosition data)
        {
            environment.GridSize          = data.GridSize;
            environment.WorldTileSideSize = data.WorldTileSide;
            InitialWorldOffset            = data.OriginalOffset;
            TraversedOffset = data.TraversedOffset;

            FindObjectOfType <CharacterController>().transform.SetPositionAndRotation(
                data.CharacterPosition,
                data.CharacterRotation);

            characterPosition.OldGridPosition = data.CharacterPosition.ToVector3Int();
        }
        /// <summary>
        /// Run from SaveLoadController on successful load
        /// </summary>
        /// <param name="data"></param>
        public void RebuildWorld(SavedPosition data)
        {
            characterPosition.OnPositionChanged.RemoveListener(SpawnNewLine);

            var gameController = FindObjectOfType <GameController>();

            gameController.InputEnabled = false;

            ClearElementStores();

            SetWorldFromPositionData(data);

            SpawnTerrainElements(false);

            InstantiateBuiltElementsFromPosition(data.BuiltElements);

            gameController.InputEnabled = true;
            characterPosition.OnPositionChanged.AddListener(SpawnNewLine);
        }
        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);
        }
        private void InstantiatePreviewForAnchor(int anchorIndex, SavedPosition position)
        {
            LoadPreviewController preview;

            switch (anchorIndex)
            {
            case 0:
                preview = preview1;
                preview1.gameObject.SetActive(true); break;

            case 1:
                preview = preview2;
                preview2.gameObject.SetActive(true); break;

            case 2:
                preview = preview3;
                preview3.gameObject.SetActive(true); break;

            default: throw new ArgumentOutOfRangeException($"Anchor index \"{anchorIndex}\" out of range");
            }

            preview.Initialize(position);
        }
Beispiel #7
0
        public void SaveWindowPositions()
        {
            IntPtr shellWindow = GetShellWindow();

            this.windows.Clear();

            EnumWindows(delegate(IntPtr _ptr, int lParam)
            {
                if (_ptr == shellWindow)
                {
                    return(true);
                }
                if (!IsWindowVisible(_ptr))
                {
                    return(true);
                }

                int length = GetWindowTextLength(_ptr);
                if (length == 0)
                {
                    return(true);
                }

                Rect getRect = new Rect();
                GetWindowRect(_ptr, ref getRect);
                tagWINDOWPLACEMENT tagWINDOWPLACEMENT = new tagWINDOWPLACEMENT();
                GetWindowPlacement(_ptr, ref tagWINDOWPLACEMENT);
                SavedPosition savedPosition = new SavedPosition()
                {
                    Rect      = getRect,
                    Maximized = tagWINDOWPLACEMENT.showCmd == SW_SHOWMAXIMIZED
                };
                this.windows.Add(_ptr, savedPosition);
                return(true);
            }, 0);
        }