Example #1
0
        public virtual async UniTask <GameStateMap> QuickSaveAsync()
        {
            // Free first quick save slot by shifting existing ones by one.
            for (int i = Configuration.QuickSaveSlotLimit; i > 0; i--)
            {
                var curSlotId  = Configuration.IndexToQuickSaveSlotId(i);
                var prevSlotId = Configuration.IndexToQuickSaveSlotId(i + 1);
                GameSlotManager.RenameSaveSlot(curSlotId, prevSlotId);
            }

            // Delete the last slot in case it's out of the limit.
            var outOfLimitSlotId = Configuration.IndexToQuickSaveSlotId(Configuration.QuickSaveSlotLimit + 1);

            if (GameSlotManager.SaveSlotExists(outOfLimitSlotId))
            {
                GameSlotManager.DeleteSaveSlot(outOfLimitSlotId);
            }

            var firstSlotId = string.Format(Configuration.QuickSaveSlotMask, 1);

            return(await SaveGameAsync(firstSlotId));
        }