Skip to content
This repository has been archived by the owner on Jul 10, 2023. It is now read-only.

Android: Optimize per-game config workflow #1318

Merged
merged 1 commit into from
Aug 23, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatDelegate;

import com.android.util.DreamTime;
Expand Down Expand Up @@ -110,27 +108,16 @@ public void loadConfigurationPrefs() {
JNIdc.dreamtime(DreamTime.getDreamtime());
}

public void getGameConfiguration(String gameId) {
public void loadGameConfiguration(String gameId) {
SharedPreferences mPrefs = getSharedPreferences(gameId, Activity.MODE_PRIVATE);
Emulator.unstableopt = mPrefs.getBoolean(pref_unstable, unstableopt);
Emulator.dynsafemode = mPrefs.getBoolean(pref_dynsafemode, dynsafemode);
Emulator.interrupt = mPrefs.getBoolean(pref_interrupt, interrupt);
Emulator.frameskip = mPrefs.getInt(pref_frameskip, frameskip);
Emulator.pvrrender = mPrefs.getBoolean(pref_pvrrender, pvrrender);
Emulator.syncedrender = mPrefs.getBoolean(pref_syncedrender, syncedrender);
Emulator.queuerender = mPrefs.getBoolean(pref_queuerender, queuerender);
Emulator.modvols = mPrefs.getBoolean(pref_modvols, modvols);
}

public void loadGameConfiguration() {
JNIdc.unstable(Emulator.unstableopt ? 1 : 0);
JNIdc.safemode(Emulator.dynsafemode ? 1 : 0);
JNIdc.interrupthack(Emulator.interrupt ? 1 : 0);
JNIdc.frameskip(Emulator.frameskip);
JNIdc.pvrrender(Emulator.pvrrender ? 1 : 0);
JNIdc.syncedrender(Emulator.syncedrender ? 1 : 0);
JNIdc.queuerender(Emulator.queuerender ? 1 : 0);
JNIdc.modvols(Emulator.modvols ? 1 : 0);
JNIdc.unstable(mPrefs.getBoolean(pref_unstable, unstableopt) ? 1 : 0);
JNIdc.safemode(mPrefs.getBoolean(pref_dynsafemode, dynsafemode) ? 1 : 0);
JNIdc.interrupthack(mPrefs.getBoolean(pref_interrupt, interrupt) ? 1 : 0);
JNIdc.frameskip(mPrefs.getInt(pref_frameskip, frameskip));
JNIdc.pvrrender(mPrefs.getBoolean(pref_pvrrender, pvrrender) ? 1 : 0);
JNIdc.syncedrender(mPrefs.getBoolean(pref_syncedrender, syncedrender) ? 1 : 0);
JNIdc.queuerender(mPrefs.getBoolean(pref_queuerender, queuerender) ? 1 : 0);
JNIdc.modvols(mPrefs.getBoolean(pref_modvols, modvols) ? 1 : 0);
}

static {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ public class Config {
public static final String pref_touchvibe = "touch_vibration_enabled";
public static final String pref_vibrationDuration = "vibration_duration";

public static final String game_title = "game_title";

public static int vibrationDuration = 20;

public static final String pref_vmu = "vmu_floating";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public class InputModFragment extends Fragment {
private TextView dpad_right_text;
private TextView start_button_text;
private TextView select_button_text;
private TextView vert_axis_text;
private TextView horz_axis_text;

private String player = "_A";
private int sS = 2;
Expand Down Expand Up @@ -518,43 +520,22 @@ private int mapButton(int keyCode, KeyEvent event) {
return keyCode;
}

public boolean dispatchTouchEvent(MotionEvent ev) {
private void mapAxis(View view, final int axis) {
if (isMapping) {
if ((ev.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
if (ev.getAxisValue(MotionEvent.AXIS_HAT_X) != 0) {

}
if (ev.getAxisValue(MotionEvent.AXIS_HAT_Y) != 0) {

}
if (ev.getAxisValue(MotionEvent.AXIS_Z) != 0) {

}
if (ev.getAxisValue(MotionEvent.AXIS_RZ) != 0) {

}
if (ev.getAxisValue(MotionEvent.AXIS_RTRIGGER) != 0) {

}
if (ev.getAxisValue(MotionEvent.AXIS_LTRIGGER) != 0) {

}
if (ev.getAxisValue(MotionEvent.AXIS_THROTTLE) != 0) {

}
if (ev.getAxisValue(MotionEvent.AXIS_BRAKE) != 0) {

}
String label = output.getText().toString();
if (label.contains(":")) {
label = label.substring(0, label.indexOf(":"));
view.setOnGenericMotionListener(new View.OnGenericMotionListener() {
@Override
public boolean onGenericMotion(View view, MotionEvent event) {
if ((event.getSource() & InputDevice.SOURCE_JOYSTICK) ==
InputDevice.SOURCE_JOYSTICK &&
event.getAction() == MotionEvent.ACTION_MOVE) {
mPrefs.edit().putInt(axis + player, event.getActionIndex ()).apply();
isMapping = false;
return true;
}
return false;
}

output.setText(label + ": " + ev.getAction());
}

});
}
return dispatchTouchEvent(ev);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
package com.reicast.emulator.config;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
Expand All @@ -16,6 +14,7 @@
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
Expand All @@ -24,7 +23,6 @@
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
Expand All @@ -35,15 +33,8 @@
import com.reicast.emulator.Emulator;
import com.reicast.emulator.R;

import org.apache.commons.lang3.StringUtils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.ref.WeakReference;
import java.util.Collection;
import java.util.HashMap;
Expand Down Expand Up @@ -88,8 +79,8 @@ public void onViewCreated(View view, Bundle savedInstanceState) {
app.getConfigurationPrefs(PreferenceManager.getDefaultSharedPreferences(getActivity()));

mSpnrConfigs = (Spinner) getView().findViewById(R.id.config_spinner);
new LocateConfigs(PGConfigFragment.this).execute(
getActivity().getFilesDir().getAbsolutePath());
new LocateConfigs(PGConfigFragment.this).execute("/data/data/"
+ getActivity().getPackageName() + "/shared_prefs/");

unstable_opt = (CompoundButton) getView().findViewById(R.id.unstable_option);
safemode_opt = (CompoundButton) getView().findViewById(R.id.dynarec_safemode);
Expand Down Expand Up @@ -179,21 +170,13 @@ private static class LocateConfigs extends AsyncTask<String, Integer, List<File>
@Override
protected List<File> doInBackground(String... paths) {
File storage = new File(paths[0]);
String[] mediaTypes = options.get().getResources().getStringArray(R.array.configs);
FilenameFilter[] filter = new FilenameFilter[mediaTypes.length];
int i = 0;
for (final String type : mediaTypes) {
filter[i] = new FilenameFilter() {
public boolean accept(File dir, String name) {
if (dir.getName().startsWith(".") || name.startsWith(".")) {
return false;
} else {
return StringUtils.endsWithIgnoreCase(name, "." + type);
}
}
};
i++;
}
Log.d("Files", storage.getAbsolutePath());
FilenameFilter[] filter = new FilenameFilter[1];
filter[0] = new FilenameFilter() {
public boolean accept(File dir, String name) {
return !name.endsWith("_preferences.xml");
}
};
FileUtils fileUtils = new FileUtils();
Collection<File> files = fileUtils.listFiles(storage, filter, 0);
return (List<File>) files;
Expand All @@ -206,26 +189,11 @@ protected void onPostExecute(List<File> items) {
String[] titles = new String[items.size()];
for (int i = 0; i < items.size(); i ++) {
String filename = items.get(i).getName();
try {
InputStream iS = options.get().getActivity().openFileInput(filename);

if (iS != null) {
InputStreamReader iSR = new InputStreamReader(iS);
BufferedReader bR = new BufferedReader(iSR);
String readString = "";
StringBuilder stringBuilder = new StringBuilder();

while ( (readString = bR.readLine()) != null ) {
stringBuilder.append(readString);
}

iS.close();
titles[i] = stringBuilder.toString();
gameMap.put(titles[i], filename.substring(0, filename.length() - 4));
}
} catch (IOException e) {
// TODO: Appropriate error message
}
String gameFile = filename.substring(0, filename.length() - 4);
SharedPreferences mPrefs = options.get().getActivity()
.getSharedPreferences(gameFile, Activity.MODE_PRIVATE);
titles[i] = mPrefs.getString(Config.game_title, "Title Unavailable");
gameMap.put(titles[i], gameFile);
}
ArrayAdapter<String> configAdapter = new ArrayAdapter<String>(
options.get().getActivity(), android.R.layout.simple_spinner_item, titles);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@
import com.reicast.emulator.emu.OnScreenMenu.FpsPopup;
import com.reicast.emulator.periph.VJoy;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

import javax.microedition.khronos.egl.EGLConfig;
Expand Down Expand Up @@ -678,18 +676,10 @@ void Die() {

void reiosInfo(String reiosId, String reiosSoftware) {
String gameId = reiosId.replaceAll("[^a-zA-Z0-9]+", "").toLowerCase();
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(
context.openFileOutput(gameId + ".pgc", Context.MODE_PRIVATE));
outputStreamWriter.write(reiosSoftware);
outputStreamWriter.close();
}
catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
SharedPreferences mPrefs = context.getSharedPreferences(gameId, Activity.MODE_PRIVATE);
Emulator app = (Emulator) context.getApplicationContext();
app.getGameConfiguration(gameId);
app.loadGameConfiguration();
app.loadGameConfiguration(gameId);
mPrefs.edit().putString(Config.game_title, reiosSoftware.trim()).apply();
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<item>24</item>
<item>32</item>
</string-array>

<string-array name="flash">
<item>bin</item>
</string-array>
Expand Down Expand Up @@ -63,10 +63,6 @@
<item>K</item>
</string-array>

<string-array name="configs">
<item>pgc</item>
</string-array>

<string-array name="peripherals">
<item>None</item>
<item>VMU</item>
Expand Down