mirror of
https://github.com/FWGS/xash3d-fwgs.git
synced 2026-08-05 03:24:56 +08:00
155 lines
4.3 KiB
Java
155 lines
4.3 KiB
Java
package su.xash.engine;
|
|
|
|
import android.annotation.SuppressLint;
|
|
import android.content.pm.ActivityInfo;
|
|
import android.content.res.AssetManager;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.os.Environment;
|
|
import android.provider.Settings.Secure;
|
|
import android.util.Log;
|
|
import android.view.KeyEvent;
|
|
import android.view.WindowManager;
|
|
|
|
import org.libsdl.app.SDLActivity;
|
|
|
|
import su.xash.engine.util.AndroidBug5497Workaround;
|
|
|
|
public class XashActivity extends SDLActivity {
|
|
private boolean mUseVolumeKeys;
|
|
private String mPackageName;
|
|
private static final String TAG = "XashActivity";
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
//getWindow().addFlags(WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES);
|
|
getWindow().getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
|
|
}
|
|
|
|
AndroidBug5497Workaround.assistActivity(this);
|
|
}
|
|
|
|
@Override
|
|
public void onDestroy() {
|
|
super.onDestroy();
|
|
|
|
// Now that we don't exit from native code, we need to exit here, resetting
|
|
// application state (actually global variables that we don't cleanup on exit)
|
|
//
|
|
// When the issue with global variables will be resolved, remove that exit() call
|
|
System.exit(0);
|
|
}
|
|
|
|
@Override
|
|
protected String[] getLibraries() {
|
|
return new String[]{"SDL2", "xash"};
|
|
}
|
|
|
|
@SuppressLint("HardwareIds")
|
|
private String getAndroidID() {
|
|
return Secure.getString(getContentResolver(), Secure.ANDROID_ID);
|
|
}
|
|
|
|
@SuppressLint("ApplySharedPref")
|
|
private void saveAndroidID(String id) {
|
|
getSharedPreferences("xash_preferences", MODE_PRIVATE).edit().putString("xash_id", id).commit();
|
|
}
|
|
|
|
private String loadAndroidID() {
|
|
return getSharedPreferences("xash_preferences", MODE_PRIVATE).getString("xash_id", "");
|
|
}
|
|
|
|
@Override
|
|
public String getCallingPackage() {
|
|
if (mPackageName != null) {
|
|
return mPackageName;
|
|
}
|
|
|
|
return super.getCallingPackage();
|
|
}
|
|
|
|
private AssetManager getAssets(boolean isEngine) {
|
|
AssetManager am = null;
|
|
|
|
if (isEngine) {
|
|
am = getAssets();
|
|
} else {
|
|
try {
|
|
am = getPackageManager().getResourcesForApplication(getCallingPackage()).getAssets();
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "Unable to load mod assets!");
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
return am;
|
|
}
|
|
|
|
private String[] getAssetsList(boolean isEngine, String path) {
|
|
AssetManager am = getAssets(isEngine);
|
|
|
|
try {
|
|
return am.list(path);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
return new String[]{};
|
|
}
|
|
|
|
@Override
|
|
public boolean dispatchKeyEvent(KeyEvent event) {
|
|
if (SDLActivity.mBrokenLibraries) {
|
|
return false;
|
|
}
|
|
|
|
int keyCode = event.getKeyCode();
|
|
if (!mUseVolumeKeys) {
|
|
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_CAMERA || keyCode == KeyEvent.KEYCODE_ZOOM_IN || keyCode == KeyEvent.KEYCODE_ZOOM_OUT) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return getWindow().superDispatchKeyEvent(event);
|
|
}
|
|
|
|
// TODO: REMOVE LATER, temporary launchers support?
|
|
@Override
|
|
protected String[] getArguments() {
|
|
String gamedir = getIntent().getStringExtra("gamedir");
|
|
if (gamedir == null) gamedir = "valve";
|
|
nativeSetenv("XASH3D_GAME", gamedir);
|
|
|
|
String gamelibdir = getIntent().getStringExtra("gamelibdir");
|
|
if (gamelibdir != null) nativeSetenv("XASH3D_GAMELIBDIR", gamelibdir);
|
|
|
|
String pakfile = getIntent().getStringExtra("pakfile");
|
|
if (pakfile != null) nativeSetenv("XASH3D_EXTRAS_PAK2", pakfile);
|
|
|
|
String basedir = getIntent().getStringExtra("basedir");
|
|
if (basedir != null) {
|
|
nativeSetenv("XASH3D_BASEDIR", basedir);
|
|
} else {
|
|
String rootPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/xash";
|
|
nativeSetenv("XASH3D_BASEDIR", rootPath);
|
|
}
|
|
|
|
mUseVolumeKeys = getIntent().getBooleanExtra("usevolume", false);
|
|
mPackageName = getIntent().getStringExtra("package");
|
|
|
|
String[] env = getIntent().getStringArrayExtra("env");
|
|
if (env != null) {
|
|
for (int i = 0; i < env.length; i += 2)
|
|
nativeSetenv(env[i], env[i + 1]);
|
|
}
|
|
|
|
String argv = getIntent().getStringExtra("argv");
|
|
if (argv == null) argv = "-console -log";
|
|
return argv.split(" ");
|
|
}
|
|
}
|