Add Controller capability

This commit is contained in:
2023-12-13 22:24:01 +03:00
parent 5c8a58beac
commit d1de9be97f
14 changed files with 176 additions and 376 deletions
@@ -1,11 +1,13 @@
package com.ea.ironmonkey
import android.annotation.SuppressLint
import android.app.AlertDialog
import android.content.DialogInterface
import android.content.Intent
import android.content.pm.ActivityInfo
import android.graphics.BitmapFactory
import android.hardware.SensorManager
import android.hardware.input.InputManager
import android.media.AudioManager
import android.opengl.GLES20
import android.opengl.GLUtils
@@ -15,17 +17,26 @@ import android.os.PowerManager
import android.os.PowerManager.WakeLock
import android.util.DisplayMetrics
import android.util.Log
import android.view.InputDevice
import android.view.KeyEvent
import android.view.MotionEvent
import android.view.inputmethod.InputMethodManager
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.lifecycle.Lifecycle
import com.bda.controller.StateEvent
import com.ea.EAIO.EAIO
import com.ea.EAMIO.StorageDirectory
import com.ea.easp.EASPHandler
import com.ea.games.nfs13_na.BuildConfig
import com.ea.games.nfs13_na.R
import com.ea.nimble.ApplicationLifecycle
import com.megboyzz.devmenu.util.SaveFileObserver
import com.megboyzz.actionForAllControllers
import com.megboyzz.androidKeyEventToBda
import com.megboyzz.androidMotionEventToBda
import com.megboyzz.createConnectEvent
import com.megboyzz.createDisconnectEvent
import com.megboyzz.registerControllerHandlers
import java.io.BufferedReader
import java.io.File
import java.io.FileReader
@@ -60,8 +71,6 @@ class GameActivity : ComponentActivity(), DrawFrameListener {
private val saveFile = "/data/data/${BuildConfig.APPLICATION_ID}/files/var/nfstr_save.sb"
private val dest = "/sdcard/Android/data/${BuildConfig.APPLICATION_ID}/files/saveTracking"
private val saveFileObserver = com.megboyzz.devmenu.util.SaveFileObserver(saveFile, dest)
companion object {
const val STATE_RESTORE_CONTEXT = 7
@@ -120,6 +129,7 @@ class GameActivity : ComponentActivity(), DrawFrameListener {
Log.w(this.localClassName, "Missing WAKE_LOCK permission.")
}
}
this.assets
}
private fun wakeLockRelease() {
@@ -295,10 +305,24 @@ class GameActivity : ComponentActivity(), DrawFrameListener {
public override fun onCreate(bundle: Bundle?) {
saveFileObserver.startWatching()
super.onCreate(bundle)
registerControllerHandlers(
onInputDeviceAdded = {
Log.i("Controller", "controller is connected!")
val event = createConnectEvent(it)
MogaController.nativeOnStateEvent(event)
},
onInputDeviceRemoved = {
Log.i("Controller", "controller is disconnected!")
val event = createDisconnectEvent(it)
MogaController.nativeOnStateEvent(event)
},
onInputDeviceChanged = {
Log.i("Controller", "controller is changed!")
}
)
val className = this.localClassName
val currentState = lifecycle.currentState
@@ -347,13 +371,12 @@ class GameActivity : ComponentActivity(), DrawFrameListener {
ApplicationLifecycle.onActivityCreate(bundle, this)
Log.d(className, "nativeOnCreate")
nativeOnCreate()
}
public override fun onDestroy() {
saveFileObserver.stopWatching()
Log.i("Debug", "onDestroy")
Log.i(this.localClassName, "onDestroy")
super.onDestroy()
@@ -367,7 +390,27 @@ class GameActivity : ComponentActivity(), DrawFrameListener {
exitProcess(0)
}
override fun dispatchGenericMotionEvent(ev: MotionEvent?): Boolean {
Log.i("GameActivity", ev.toString())
MogaController.onMotionEvent(androidMotionEventToBda(ev!!))
return super.dispatchGenericMotionEvent(ev)
}
@SuppressLint("RestrictedApi")
override fun dispatchKeyEvent(event: KeyEvent?): Boolean {
MogaController.onKeyEvent(androidKeyEventToBda(event!!))
return super.dispatchKeyEvent(event)
}
override fun onDrawFrame(gl10: GL10) {
//InputDevice.getDeviceIds()
//InputDevice.getDevice(0).sources
Log.d(this.localClassName, "onDrawFrame state=$state")
var isStarted = false
when (state) {
@@ -479,6 +522,10 @@ class GameActivity : ComponentActivity(), DrawFrameListener {
gameGLSurfaceView.onResume()
ApplicationLifecycle.onActivityResume(this)
nativeOnResume()
actionForAllControllers {
val event = createConnectEvent(it)
MogaController.nativeOnStateEvent(event)
}
}
public override fun onSaveInstanceState(bundle: Bundle) {