Improve launch, fix touch

This commit is contained in:
mittorn 2016-05-04 21:02:09 +00:00
parent 76cac2a352
commit cd81aa82ea

View file

@ -28,7 +28,10 @@ public class XashActivity extends Activity {
// Main components // Main components
protected static XashActivity mSingleton; protected static XashActivity mSingleton;
private static EngineSurface mSurface; private static EngineSurface mSurface;
private static String mArgv; private static String mArgv[];
// Preferences
public static SharedPreferences mPref = null;
// Audio // Audio
private static Thread mAudioThread; private static Thread mAudioThread;
@ -52,7 +55,44 @@ public class XashActivity extends Activity {
setContentView(mSurface); setContentView(mSurface);
SurfaceHolder holder = mSurface.getHolder(); SurfaceHolder holder = mSurface.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_GPU); holder.setType(SurfaceHolder.SURFACE_TYPE_GPU);
setenv( "XASH3D_BASEDIR", "/sdcard/xash", true ); mPref = this.getSharedPreferences("engine", 0);
String argv = intent.getStringExtra("argv");
if(argv == null) argv = mPref.getString("argv", "-dev 3 -log");
if(argv == null) argv = "-dev 3 -log";
mArgv= argv.split(" ");
String gamelibdir = intent.getStringExtra("gamelibdir");
if(gamelibdir == null)
gamelibdir = getFilesDir().getParentFile().getPath() + "/lib";
String gamedir = intent.getStringExtra("gamedir");
if(gamedir == null)
gamedir = "valve";
String basedir = intent.getStringExtra("basedir");
if(basedir == null)
basedir = mPref.getString("basedir","/sdcard/xash/");
setenv("XASH3D_BASEDIR", basedir, true);
setenv("XASH3D_ENGLIBDIR", getFilesDir().getParentFile().getPath() + "/lib", true);
setenv("XASH3D_GAMELIBDIR", gamelibdir, true);
setenv("XASH3D_GAMEDIR", gamedir, true);
//extractPAK(this, false);
setenv("XASH3D_EXTRAS_PAK1", getFilesDir().getPath() + "/extras.pak", true);
String pakfile = intent.getStringExtra("pakfile");
if( pakfile != null && pakfile != "" )
setenv("XASH3D_EXTRAS_PAK2", pakfile, true);
String[] env = intent.getStringArrayExtra("env");
try
{
if( env != null )
for(int i = 0; i+1 < env.length; i+=2)
{
setenv(env[i],env[i+1], true);
}
}
catch(Exception e)
{
e.printStackTrace();
}
} }
// Events // Events
@ -89,7 +129,7 @@ public class XashActivity extends Activity {
{ {
return "-dev 5 -log -noch".split(" "); return "-dev 5 -log +map crossfire -noch +deathmatch 1 +map crossfire".split(" ");
} }
// C functions we call // C functions we call
public static native int nativeInit(Object arguments); public static native int nativeInit(Object arguments);
@ -97,9 +137,9 @@ public class XashActivity extends Activity {
public static native void onNativeResize(int x, int y); public static native void onNativeResize(int x, int y);
public static native void onNativeKeyDown(int keycode); public static native void onNativeKeyDown(int keycode);
public static native void onNativeKeyUp(int keycode); public static native void onNativeKeyUp(int keycode);
public static native void onNativeTouch(int touchDevId, int pointerFingerId, public static native void nativeTouch(int pointerFingerId,
int action, float x, int action, float x,
float y, float p); float y);
public static native void onNativeAccel(float x, float y, float z); public static native void onNativeAccel(float x, float y, float z);
public static native void nativeRunAudioThread(); public static native void nativeRunAudioThread();
public static native int setenv(String key, String value, boolean overwrite); public static native int setenv(String key, String value, boolean overwrite);
@ -461,7 +501,6 @@ View.OnKeyListener, View.OnTouchListener {
// Touch events // Touch events
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
/*
final int touchDevId = event.getDeviceId(); final int touchDevId = event.getDeviceId();
final int pointerCount = event.getPointerCount(); final int pointerCount = event.getPointerCount();
// touchId, pointerId, action, x, y, pressure // touchId, pointerId, action, x, y, pressure
@ -471,7 +510,6 @@ View.OnKeyListener, View.OnTouchListener {
float x = event.getX(actionPointerIndex); float x = event.getX(actionPointerIndex);
float y = event.getY(actionPointerIndex); float y = event.getY(actionPointerIndex);
float p = event.getPressure(actionPointerIndex);
if (action == MotionEvent.ACTION_MOVE && pointerCount > 1) { if (action == MotionEvent.ACTION_MOVE && pointerCount > 1) {
// TODO send motion to every pointer if its position has // TODO send motion to every pointer if its position has
@ -480,14 +518,11 @@ View.OnKeyListener, View.OnTouchListener {
pointerFingerId = event.getPointerId(i); pointerFingerId = event.getPointerId(i);
x = event.getX(i); x = event.getX(i);
y = event.getY(i); y = event.getY(i);
p = event.getPressure(i); XashActivity.nativeTouch(pointerFingerId, action, x, y);
XashActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p);
} }
} else { } else {
XashActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p); XashActivity.nativeTouch(pointerFingerId, action, x, y);
} }
}*/
//XashActivity.controlInterp.onTouchEvent(event);
return true; return true;
} }