moved VrReleaseVersion stuff into its own class and created utils directory for VrUtils

This commit is contained in:
amwatson 2024-01-28 17:25:15 -06:00
parent 55078ad93a
commit 792992fcfc
9 changed files with 73 additions and 62 deletions

View file

@ -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() {

View file

@ -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

View file

@ -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(

View file

@ -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

View file

@ -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) {

View file

@ -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)

View file

@ -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"
}
}

View file

@ -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
}
}
}

View file

@ -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<jint>(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);
}