diff --git a/src/android/app/src/main/java/org/citra/citra_emu/CitraApplication.kt b/src/android/app/src/main/java/org/citra/citra_emu/CitraApplication.kt index 64ff3eb72..be66a3931 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/CitraApplication.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/CitraApplication.kt @@ -12,10 +12,9 @@ import android.content.Context import androidx.preference.PreferenceManager import org.citra.citra_emu.utils.DirectoryInitialization import org.citra.citra_emu.utils.DocumentsTree -import org.citra.citra_emu.utils.GpuDriverHelper import org.citra.citra_emu.utils.Log import org.citra.citra_emu.utils.PermissionsHandler -import org.citra.citra_emu.vr.VRUtils +import org.citra.citra_emu.vr.utils.VRUtils class CitraApplication : Application() { private fun createNotificationChannel() { diff --git a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt index 0f8d973e2..a62d0b735 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt @@ -44,7 +44,7 @@ import org.citra.citra_emu.utils.EmulationMenuSettings import org.citra.citra_emu.utils.Log import org.citra.citra_emu.utils.ThemeUtil import org.citra.citra_emu.viewmodel.EmulationViewModel -import org.citra.citra_emu.vr.VRUtils +import org.citra.citra_emu.vr.utils.VRUtils open class EmulationActivity : AppCompatActivity() { private val preferences: SharedPreferences diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt index 63ec850bb..35061a3eb 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt @@ -4,8 +4,8 @@ package org.citra.citra_emu.features.settings.model -import org.citra.citra_emu.vr.VRUtils -import org.citra.citra_emu.vr.VRUtils.hMDType +import org.citra.citra_emu.vr.utils.VRUtils +import org.citra.citra_emu.vr.utils.VRUtils.hMDType enum class IntSetting( diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt index 29b4825be..9a1201213 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt @@ -60,9 +60,8 @@ import org.citra.citra_emu.features.settings.ui.viewholder.SubmenuViewHolder import org.citra.citra_emu.features.settings.ui.viewholder.SwitchSettingViewHolder import org.citra.citra_emu.fragments.MessageDialogFragment import org.citra.citra_emu.fragments.MotionBottomSheetDialogFragment -import org.citra.citra_emu.utils.Log import org.citra.citra_emu.utils.SystemSaveGame -import org.citra.citra_emu.vr.VRUtils +import org.citra.citra_emu.vr.utils.VRUtils import java.lang.IllegalStateException import java.lang.NumberFormatException import java.text.SimpleDateFormat diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SliderViewHolder.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SliderViewHolder.kt index c3186a02e..2839d4665 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SliderViewHolder.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SliderViewHolder.kt @@ -5,7 +5,6 @@ package org.citra.citra_emu.features.settings.ui.viewholder import android.view.View -import org.citra.citra_emu.R import org.citra.citra_emu.databinding.ListItemSettingBinding import org.citra.citra_emu.features.settings.model.AbstractFloatSetting import org.citra.citra_emu.features.settings.model.AbstractIntSetting @@ -15,7 +14,7 @@ import org.citra.citra_emu.features.settings.model.ScaledFloatSetting import org.citra.citra_emu.features.settings.model.view.SettingsItem import org.citra.citra_emu.features.settings.model.view.SliderSetting import org.citra.citra_emu.features.settings.ui.SettingsAdapter -import org.citra.citra_emu.vr.VRUtils +import org.citra.citra_emu.vr.utils.VRUtils class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : SettingViewHolder(binding.root, adapter) { diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.kt index 4149e5932..5a83a8715 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.kt @@ -55,8 +55,9 @@ import org.citra.citra_emu.utils.PermissionsHandler import org.citra.citra_emu.utils.ThemeUtil import org.citra.citra_emu.viewmodel.GamesViewModel import org.citra.citra_emu.viewmodel.HomeViewModel -import org.citra.citra_emu.vr.VRUtils +import org.citra.citra_emu.vr.utils.VRUtils import org.citra.citra_emu.vr.VrActivity +import org.citra.citra_emu.vr.utils.VrReleaseVersion class MainActivity : AppCompatActivity(), ThemeProvider { private lateinit var binding: ActivityMainBinding @@ -82,18 +83,6 @@ class MainActivity : AppCompatActivity(), ThemeProvider { ThemeUtil.setTheme(this) super.onCreate(savedInstanceState) - val preferences = PreferenceManager.getDefaultSharedPreferences(applicationContext) - val releaseVersionPrev : String = preferences.getString(VRUtils.PREF_RELEASE_VERSION_NAME_LAUNCH_PREV, "")!! - val releaseVersionCur : String = preferences.getString(VRUtils.PREF_RELEASE_VERSION_NAME_LAUNCH_CURRENT, "")!! - // This means this is a first-time install, an app reinstall wiped app data, or the last app version was below - // V0.4.0. In all these cases, we want to wipe the previous config Because the earlier versions may have introduced input issues. - if (VRUtils.isReleaseVersion(releaseVersionCur) && VRUtils.hasLowerVersionThan(releaseVersionPrev, VRUtils.createVersionString(0, 4, 0))) { - Log.info("New install from prev version \"${releaseVersionPrev}\" needs update. Wiping config.ini") - SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_CONFIG)?.delete() - } - // If this is the first time installing CitraVR s - SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_CONFIG)?.delete() - binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/vr/VRUtils.kt b/src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VRUtils.kt similarity index 66% rename from src/android/app/src/main/java/org/citra/citra_emu/vr/VRUtils.kt rename to src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VRUtils.kt index f99463a04..cdd1e482a 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/vr/VRUtils.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VRUtils.kt @@ -1,4 +1,4 @@ -package org.citra.citra_emu.vr +package org.citra.citra_emu.vr.utils import android.view.KeyEvent import org.citra.citra_emu.NativeLibrary @@ -70,41 +70,4 @@ object VRUtils { const val PREF_RELEASE_VERSION_NAME_LAUNCH_CURRENT = "VR_ReleaseVersionName_LaunchCurrent" const val PREF_RELEASE_VERSION_NAME_LAUNCH_PREV = "VR_ReleaseVersionName_LaunchPrev" - - // release versions are in the form "v\d+\.\d+\.\d+". All other values are build versions - fun isReleaseVersion(version: String): Boolean { - return version.startsWith("v") - } - fun getVersionMajor(version: String): Int { - return if (isReleaseVersion(version)) version.split(".")[0].removePrefix("v").toInt() else -1 - } - fun getVersionMinor(version: String): Int { - return if (isReleaseVersion(version)) version.split(".")[1].toInt() else -1 - } - fun getVersionPatch(version: String): Int { - return if (isReleaseVersion(version)) version.split(".")[2].toInt() else -1 - } - - fun hasLowerVersionThan(versionOrig: String, versionComp: String): Boolean { - val majorOrig = getVersionMajor(versionOrig) - val majorComp = getVersionMajor(versionComp) - if (majorOrig < majorComp) return true - if (majorOrig > majorComp) return false - - val minorOrig = getVersionMinor(versionOrig) - val minorComp = getVersionMinor(versionComp) - if (minorOrig < minorComp) return true - if (minorOrig > minorComp) return false - - val patchOrig = getVersionPatch(versionOrig) - val patchComp = getVersionPatch(versionComp) - if (patchOrig < patchComp) return true - if (patchOrig > patchComp) return false - - return false - } - - fun createVersionString(major: Int, minor: Int, patch: Int): String { - return "v$major.$minor.$patch" - } } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VrReleaseVersion.kt b/src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VrReleaseVersion.kt new file mode 100644 index 000000000..39de6079d --- /dev/null +++ b/src/android/app/src/main/java/org/citra/citra_emu/vr/utils/VrReleaseVersion.kt @@ -0,0 +1,62 @@ +package org.citra.citra_emu.vr.utils + +/** Represents a release version of Citra VR. + * These version codes started being used in v0.4.0. + **/ +open class VrReleaseVersion(version: String) { + private var isRealVersion: Boolean + private var major: Int + private var minor: Int + private var patch: Int + init { + isRealVersion = isReleaseVersion(version) + major = getVersionMajor(version) + minor = getVersionMinor(version) + patch = getVersionPatch(version) + } + + fun isRealVersion() : Boolean { return isRealVersion } + fun getMajor() : Int { return major } + fun getMinor() : Int { return minor } + fun getPatch() : Int { return patch } + fun hasLowerVersionThan(versionComp: VrReleaseVersion): Boolean { + val majorOrig = major + val majorComp = versionComp.major + if (majorOrig < majorComp) return true + if (majorOrig > majorComp) return false + + val minorOrig = minor + val minorComp = versionComp.minor + if (minorOrig < minorComp) return true + if (minorOrig > minorComp) return false + + val patchOrig = patch + val patchComp = versionComp.patch + if (patchOrig < patchComp) return true + if (patchOrig > patchComp) return false + + return false + } + + // Release versions are in the form "v\d+\.\d+\.\d+". + companion object { + val RELEASE_VERSION_0_4_0 = VrReleaseVersion("v0.4.0") + private fun isReleaseVersion(version: String): Boolean { + return version.startsWith("v") + } + + private fun getVersionMajor(version: String): Int { + return if (isReleaseVersion(version)) version.split(".")[0].removePrefix("v") + .toInt() else -1 + } + + private fun getVersionMinor(version: String): Int { + return if (isReleaseVersion(version)) version.split(".")[1].toInt() else -1 + } + + private fun getVersionPatch(version: String): Int { + return if (isReleaseVersion(version)) version.split(".")[2].toInt() else -1 + } + } + +} diff --git a/src/android/app/src/main/jni/vr/vr_main.cpp b/src/android/app/src/main/jni/vr/vr_main.cpp index f2ad9fbdf..0cb6ee38b 100644 --- a/src/android/app/src/main/jni/vr/vr_main.cpp +++ b/src/android/app/src/main/jni/vr/vr_main.cpp @@ -895,12 +895,12 @@ extern "C" JNIEXPORT void JNICALL Java_org_citra_citra_1emu_vr_ErrorMessageLayer gShouldShowErrorMessage = should_show_error; } -extern "C" JNIEXPORT jint JNICALL Java_org_citra_citra_1emu_vr_VRUtils_getHMDType(JNIEnv* env, +extern "C" JNIEXPORT jint JNICALL Java_org_citra_citra_1emu_vr_utils_VRUtils_getHMDType(JNIEnv* env, jclass clazz) { return static_cast(VRSettings::HmdTypeFromStr(VRSettings::GetHMDTypeStr())); } extern "C" JNIEXPORT jint JNICALL -Java_org_citra_citra_1emu_vr_VRUtils_getDefaultResolutionFactor(JNIEnv* env, jclass clazz) { +Java_org_citra_citra_1emu_vr_utils_VRUtils_getDefaultResolutionFactor(JNIEnv* env, jclass clazz) { const VRSettings::HMDType hmdType = VRSettings::HmdTypeFromStr(VRSettings::GetHMDTypeStr()); return GetDefaultGameResolutionFactorForHmd(hmdType); }