Commit Graph

702 Commits

Author SHA1 Message Date
Riley Testut
15e228f287 Adds GameSave.sha1 to sync hash between devices
Fixes redundant record uploads post-sync due to comparing hashes against locally-cached hash via extended attributes.
2023-06-28 13:33:16 -05:00
Riley Testut
707116a39b Automatically resolves Cheat + ControllerSkin sync conflicts 2023-06-27 18:58:41 -05:00
Riley Testut
750740ac16 Updates app version to 1.5b3 (69) 2023-06-22 13:11:13 -05:00
Riley Testut
6909b6248f Skips checksum verification when importing zipped games
Verification can take an annoyingly long time, especially for larger ROMs.
2023-06-19 19:19:40 -05:00
Riley Testut
8bd6fe1e11 Replaces UIDocumentBrowserViewController with UIDocumentPickerViewController on iOS 17+
Prior to iOS 17, UIDocumentPickerViewController was too buggy to reliably use with iCloud Drive.
2023-06-19 19:19:40 -05:00
Riley Testut
4cf705f141 [ExpFeat] Fixes saving screenshots to Photos as JPEGs 2023-06-16 16:57:00 -05:00
Riley Testut
99417b418a [ExpFeat] Adds missing @unknown default to PHAuthorizationStatus switch statement 2023-06-16 16:46:35 -05:00
Riley Testut
648e9b8393 [ExpFeat] Fixes saving screenshots to Photos with .limited authorization 2023-06-16 16:44:24 -05:00
Riley Testut
69eff8fa28 Fixes displaying system name in dark text (again) when remapping inputs on iOS 17 2023-06-16 15:55:51 -05:00
Riley Testut
3e858c652f Fixes crash loading save states on iOS 17
Crashes due to GridCollectionViewLayout returning outdated cached layout information when inserting “Auto” save states section for the first time.

To fix this, we now clear the layout cache in invalidateLayout(with:) when relevant.
2023-06-16 15:25:49 -05:00
Riley Testut
21147969ea Fixes GridCollectionViewCell "Unable to simultaneously satisfy constraints" runtime error 2023-06-16 15:18:02 -05:00
Riley Testut
731de7023f Merge branch 'app_store' into develop 2023-06-16 15:14:39 -05:00
Riley Testut
810bc4572c Replaces app icon variants with single 1024x1024 version 2023-06-16 15:11:59 -05:00
Riley Testut
4e8580b8f5 Obfuscates private API usage to pass TestFlight App Review 2023-06-16 15:04:47 -05:00
Riley Testut
2e21141bc6 [Pods] Removes Fabric + Crashlytics 2023-05-10 13:36:44 -05:00
Riley Testut
08a40b3516 [Pods] Updates GoogleSignIn dependency to 5.0.2
* GoogleSignIn (4.4.0 -> 5.0.2)
* GTMSessionFetcher (1.5.0 -> 1.7.2)
* GoogleToolboxForMac (Removed)
2023-05-10 13:30:30 -05:00
Riley Testut
7b9ab2488e Fixes accidentally deleting Games directory during sync in rare circumstances
If a Game with empty filename happens to be deleted (e.g. during sync merge), it will accidentally delete the *entire* Games folder due to its fileURL being “Games/[empty]”.

To prevent this, we now explicitly check that a Game’s identifier isn’t empty AND that that Game.fileURL doesn’t point to a directory before deleting local files.
2023-05-02 14:29:23 -05:00
Riley Testut
00121bd31f [iPad] Fixes crash when resolving sync merge conflicts 2023-05-02 14:29:23 -05:00
Riley Testut
ea260cb8a6 Updates Settings to use large titles where appropriate
* SettingsViewController
* PreferredControllerSkinsViewController
2023-05-02 14:29:23 -05:00
Riley Testut
b0bd5ba906 Updates most Settings view controllers to use .insetGrouped style
Excludes PreferredControllerSkinsViewController and ControllerSkinsViewController
2023-04-28 17:22:20 -05:00
Riley Testut
726c4ab93b Resolves Settings.storyboard ambiguity warnings
Expands static UITableViewController subclasses to show all static cells.

Wow I wish I knew this years ago…
2023-04-28 16:54:21 -05:00
Riley Testut
5dc91c87c6 Updates app version to 1.5b2 2023-04-28 16:04:51 -05:00
Riley Testut
de7a812cbd [Contributors] Credits Chris Rittenhouse for experimental features
* Show Status Bar
* Game Screenshots
* Toast Notifications
2023-04-28 15:56:51 -05:00
Riley Testut
b1a3a5076f Merge branch 'experimental_features' into develop
# Conflicts:
#	Delta.xcodeproj/project.pbxproj
#	Delta/Emulation/GameViewController.swift
#	Delta/Pause Menu/PauseViewController.swift
2023-04-28 15:51:08 -05:00
Riley Testut
9470caf83a Sorts Delta’s Info.plist items alphabetically 2023-04-28 15:42:22 -05:00
Riley Testut
bdee5d17a5 Updates Xcode project file format
* Adds DEVELOPMENT_TEAM to Delta target
* Updates LD_RUNPATH_SEARCH_PATHS format
2023-04-28 15:42:22 -05:00
Riley Testut
85d53162c1 Fixes internal location of CharacterSet+Filename.swift in Xcode project 2023-04-28 15:42:22 -05:00
Riley Testut
75814ca04d [Experimental Feature] Adds VariableFastForward.allowUnrestrictedSpeeds @Option
When enabled, the user can choose any integer speed from 1x to 8x for their preferred Fast Forward speed, regardless of the system’s maximumFastForwardSpeed.
2023-04-28 15:42:22 -05:00
Riley Testut
2ead48ad40 [Features] Supports dynamic @Option values that may change over time
Uses @autoclosure to keep call site the same, but allows a single picker @Option to show different values depending on other factors (e.g. other @Options).
2023-04-28 15:42:11 -05:00
Riley Testut
6fd7f9e1d5 [Experimental Feature] Implements VariableFastForward feature 2023-04-28 15:42:10 -05:00
Riley Testut
7fceccc114 [Experimental Feature] Toast Notifications (#244)
commit c340cf842fbf5fea476a6637efe4928dbd734eba
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Thu Apr 27 17:24:30 2023 -0400

    Addresses Riley's requested changes
    - Minor code structure change in extension
    - Minor changes to text and phrasing

commit 2a928dfa637dfb503e861dc863f6f85f5240941a
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Wed Apr 26 20:11:38 2023 -0400

    Adds implementation for Toast Notifications Experimental Feature

commit 4fa7d139669994eff888c41bf7af9ac0b6cd2a75
Author: Chris Rittenhouse <dev@litritt.com>
Date:   Wed Apr 26 20:11:04 2023 -0400

    Adds @Feature and @Options for Toast Notifications Experimental Feature

Co-authored-by: Chris Rittenhouse <dev@litritt.com>
2023-04-28 15:32:13 -05:00
Chris Rittenhouse
6bdc05f640
[Experimental Feature] Game Screenshots (#242)
* Adds extension to handle interactions with Photos app
- isAuthorized to check/ask for authorization
- saveUIImage to save a UIImage to Photos

* Adds a Pause Menu button for taking game screenshots

* Adds @Feature and @Options for Game Screenshots

* Implements Game Screenshots feature in GameViewController

* Updates project settings

* Passes call to save to Photos as a closure into authorization prompt
- Ensures that the screenshot is saved when the user is first prompted for access to Photos
- More elegant extension code

---------

Co-authored-by: Riley Testut <riley@rileytestut.com>
2023-04-28 14:35:26 -05:00
Chris Rittenhouse
05e94902b8
[Experimental Feature] Show Status Bar (#241)
* Adds @Feature for Show Status Bar
* Shows the Status Bar if the @Feature is enabled
* Forces light content on Status Bar
2023-04-28 14:26:57 -05:00
Riley Testut
233ef7d418 Removes accidental togglePreviewsEnabled: action selector from isAltJITEnabled switch 2023-04-27 16:39:13 -05:00
Riley Testut
5cef975a9e Fixes incorrect controller skin appearance after rotating device 2023-04-27 15:20:14 -05:00
Riley Testut
39522fda58 [Experimental Feature] Supports AirPlay controller skins
Allows users to customize controller skin when AirPlaying games to an external display.
2023-04-27 14:58:51 -05:00
Riley Testut
1137189b57 Adds Nintendo DS AirPlay settings to customize how games appear on TV
* Top Screen Only = Shows just the top screen on TV
* Layout Horizontally = Places screens side-by-side on TV (instead of stacked vertically)
2023-04-26 16:07:17 -05:00
Riley Testut
32e7c1f93e Supports AirPlaying games to external displays 2023-04-26 14:56:45 -05:00
Riley Testut
7ad5df1949 [Features] Fixes potential crash when handling .settingsDidChange Notification
Handling .settingsDidChange notification in the same run loop as changing an @Option’s value can result in exclusive memory access violation due to accessing Option.settingsKey. As a workaround, we delay posting the notification until a later run loop via Task.
2023-04-25 15:14:16 -05:00
Riley Testut
77b26210ab [Experimental Features] Adds (unimplemented) VariableFastForward feature 2023-04-21 14:51:45 -05:00
Riley Testut
20749c5419 Adds “Experimental Features” section to SettingsViewController 2023-04-21 14:51:45 -05:00
Riley Testut
14adb41ff8 [Previews] Adds example “Random Dancing” experimental feature 2023-04-21 14:51:45 -05:00
Riley Testut
8efefd19a0 [Previews] Adds example “Custom Tint Color” feature to preview ExperimentalFeaturesView 2023-04-21 14:51:45 -05:00
Riley Testut
bd0c72e847 Adds ExperimentalFeaturesView to browse and configure experimental features 2023-04-21 14:03:10 -05:00
Riley Testut
5b4f9ea593 [Features] Removes redundant public access modifier from SettingsUserInfoKey constants 2023-04-21 13:43:24 -05:00
Riley Testut
ef47d78c64 [Features] Adds displayInline(_:) View modifier
Controls whether @Option detailView will be displayed inline in the Feature detail view in Delta’s settings, or as a full-screen view that’s pushed onto navigation stack when tapped.
2023-04-14 18:23:34 -05:00
Riley Testut
9f40223e6c [Features] Provides default toggle view for Bool @Options 2023-04-14 18:15:26 -05:00
Riley Testut
6d95924145 [Features] Provides default picker view for @Options with pre-set values
To use, pass in a collection of values to `values` parameter in @Option initializer.
2023-04-14 18:10:55 -05:00
Riley Testut
240b74de94 [Features] Supports user-facing @Options with custom SwiftUI views
@Options with non-nil names will be exposed in Delta’s settings and can be configured by users via provided SwiftUI view.
2023-04-14 16:41:16 -05:00
Riley Testut
4d30ef2929 [Features] Supports @Feature-specific settings via @Option property wrapper 2023-04-14 16:17:31 -05:00