crossbow-android 0.2.3

Cross-Platform build tools and toolkit for games
Documentation
@file:Suppress("DEPRECATION")

package com.crossbow.library

import android.util.Log
import android.os.Bundle
import android.app.Fragment
import android.app.Activity
import android.content.Intent
import android.app.NativeActivity
import android.content.pm.PackageManager
import android.widget.FrameLayout
import android.widget.FrameLayout.LayoutParams
import androidx.annotation.CallSuper

open class CrossbowNativeActivity : NativeActivity(), CrossbowHost {
    companion object {
        const val CONTENT_VIEW_ID = 10101010

        init {
            // This is necessary when any of the following happens:
            //     - crossbow_android library is not configured to the following line in the manifest:
            //        <meta-data android:name="android.app.lib_name" android:value="crossbow_android" />
            //     - GameActivity derived class calls to the native code before calling
            //       the super.onCreate() function.
            System.loadLibrary("crossbow_android")
        }
    }
	protected var crossbowFragment: Crossbow? = null

	override fun onCreate(savedInstanceState: Bundle?) {
		super.onCreate(savedInstanceState)

        val frame = FrameLayout(this)
        frame.setId(CONTENT_VIEW_ID)
        setContentView(frame, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT))

        if (savedInstanceState === null) {
            crossbowFragment = Crossbow()
            fragmentManager.beginTransaction().add(CONTENT_VIEW_ID, crossbowFragment).commit()
        }
	}

    override fun onDestroy() {
        Log.v(TAG, "Destroying Crossbow app...")
        super.onDestroy()
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        if (crossbowFragment !== null) {
            crossbowFragment?.onNewIntent(intent)
        }
    }

    @CallSuper
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (crossbowFragment !== null) {
            crossbowFragment?.onActivityResult(requestCode, resultCode, data)
        }
    }

    @CallSuper
    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (crossbowFragment !== null) {
            crossbowFragment?.onRequestPermissionsResult(requestCode, permissions, grantResults)
        }
    }

    override fun onBackPressed() {
        if (crossbowFragment !== null) {
            crossbowFragment?.onBackPressed()
        } else {
            super.onBackPressed()
        }
    }
}