drop component use

This commit is contained in:
qimiko committed 2022-10-29 04:20:15 -07:00
1 parent b4d05a4e6d
commit effe72eed3
1 file changed
+54 -36
@@ -9,14 +9,11 @@ import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.os.Environment import android.os.Environment
import android.util.Log import android.util.Log
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.activity.ComponentActivity import androidx.appcompat.app.AppCompatActivity
import androidx.activity.compose.setContent import androidx.core.view.WindowCompat
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Modifier
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.WindowInsetsControllerCompat
import com.customRobTop.BaseRobTopActivity import com.customRobTop.BaseRobTopActivity
@@ -30,7 +27,7 @@ import org.cocos2dx.lib.Cocos2dxRenderer
import org.fmod.FMOD import org.fmod.FMOD
class GeometryDashActivity : ComponentActivity(), Cocos2dxHelper.Cocos2dxHelperListener { class GeometryDashActivity : AppCompatActivity(), Cocos2dxHelper.Cocos2dxHelperListener {
private var mGLSurfaceView: Cocos2dxGLSurfaceView? = null private var mGLSurfaceView: Cocos2dxGLSurfaceView? = null
private val sTag = GeometryDashActivity::class.simpleName private val sTag = GeometryDashActivity::class.simpleName
private var mIsRunning = false private var mIsRunning = false
@@ -81,10 +78,21 @@ class GeometryDashActivity : ComponentActivity(), Cocos2dxHelper.Cocos2dxHelperL
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContent { setContentView(createView())
AndroidView(
modifier = Modifier.fillMaxSize(), Cocos2dxHelper.init(this, this)
factory = {
JniToCpp.setupHSSAssets(
gdPackageInfo.applicationInfo.sourceDir,
Environment.getExternalStorageDirectory().absolutePath
)
Cocos2dxHelper.nativeSetApkPath(gdPackageInfo.applicationInfo.sourceDir)
BaseRobTopActivity.setCurrentActivity(this)
registerReceiver()
}
private fun createView(): FrameLayout {
val frameLayoutParams = ViewGroup.LayoutParams(-1, -1) val frameLayoutParams = ViewGroup.LayoutParams(-1, -1)
val frameLayout = FrameLayout(this) val frameLayout = FrameLayout(this)
frameLayout.layoutParams = frameLayoutParams frameLayout.layoutParams = frameLayoutParams
@@ -110,21 +118,7 @@ class GeometryDashActivity : ComponentActivity(), Cocos2dxHelper.Cocos2dxHelperL
editText.inputType = 145 editText.inputType = 145
glSurfaceView.cocos2dxEditText = editText glSurfaceView.cocos2dxEditText = editText
frameLayout return frameLayout
}
)
}
Cocos2dxHelper.init(this, this)
JniToCpp.setupHSSAssets(
gdPackageInfo.applicationInfo.sourceDir,
Environment.getExternalStorageDirectory().absolutePath
)
Cocos2dxHelper.nativeSetApkPath(gdPackageInfo.applicationInfo.sourceDir)
BaseRobTopActivity.setCurrentActivity(this)
registerReceiver()
} }
private fun setupUIState() { private fun setupUIState() {
@@ -134,16 +128,37 @@ class GeometryDashActivity : ComponentActivity(), Cocos2dxHelper.Cocos2dxHelperL
} }
private fun hideSystemUi() { private fun hideSystemUi() {
val windowInsetsController = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
ViewCompat.getWindowInsetsController(window.decorView) ?: return // window compat is dumb!!
setLegacyVisibility()
window.decorView.setOnSystemUiVisibilityChangeListener { visibility ->
if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) {
setLegacyVisibility()
}
}
}
windowInsetsController.systemBarsBehavior = WindowCompat.getInsetsController(window, window.decorView).apply {
systemBarsBehavior =
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) hide(WindowInsetsCompat.Type.systemBars())
}
}
private fun setLegacyVisibility() {
// setDecorFitsSystemWindows doesn't hide anything
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
} }
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
unregisterReceivers()
FMOD.close() FMOD.close()
} }
@@ -178,10 +193,7 @@ class GeometryDashActivity : ComponentActivity(), Cocos2dxHelper.Cocos2dxHelperL
} }
private fun registerReceiver() { private fun registerReceiver() {
if (mReceiver != null) { unregisterReceivers()
unregisterReceiver(mReceiver)
mReceiver = null
}
try { try {
val filter = IntentFilter(Intent.ACTION_SCREEN_ON) val filter = IntentFilter(Intent.ACTION_SCREEN_ON)
filter.addAction(Intent.ACTION_SCREEN_OFF) filter.addAction(Intent.ACTION_SCREEN_OFF)
@@ -192,6 +204,13 @@ class GeometryDashActivity : ComponentActivity(), Cocos2dxHelper.Cocos2dxHelperL
} }
} }
private fun unregisterReceivers() {
if (mReceiver != null) {
unregisterReceiver(mReceiver)
mReceiver = null
}
}
override fun onWindowFocusChanged(hasWindowFocus: Boolean) { override fun onWindowFocusChanged(hasWindowFocus: Boolean) {
super.onWindowFocusChanged(hasWindowFocus) super.onWindowFocusChanged(hasWindowFocus)
mHasWindowFocus = hasWindowFocus mHasWindowFocus = hasWindowFocus
@@ -201,7 +220,7 @@ class GeometryDashActivity : ComponentActivity(), Cocos2dxHelper.Cocos2dxHelperL
} }
override fun runOnGLThread(runnable: Runnable) { override fun runOnGLThread(runnable: Runnable) {
TODO("Not yet implemented") mGLSurfaceView?.queueEvent(runnable)
} }
override fun showDialog(title: String, message: String) { override fun showDialog(title: String, message: String) {
@@ -219,7 +238,6 @@ class GeometryDashActivity : ComponentActivity(), Cocos2dxHelper.Cocos2dxHelperL
TODO("Not yet implemented") TODO("Not yet implemented")
} }
private fun isAndroidEmulator(): Boolean { private fun isAndroidEmulator(): Boolean {
Log.d(sTag, "model=" + Build.MODEL) Log.d(sTag, "model=" + Build.MODEL)
val product = Build.PRODUCT val product = Build.PRODUCT