summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorzackhow <zackhow@gmail.com>2018-08-26 18:27:27 -0400
committerzackhow <zackhow@gmail.com>2018-10-28 20:22:06 -0400
commit5d93a10c60f25acd4f9045234156fd68720b1a87 (patch)
treea2cc8f25eef65ca3ad4158f2344dbfd01c44d32b /Source/Android/app/src/main/java
parentf1413dbbf6eeb8d95636a975ffe85653ac85751e (diff)
Android: Add game specific gc/wii controller settings
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java3
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java49
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java72
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameSettingsDialog.java98
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/InputBindingSetting.java11
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java3
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java30
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java391
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java5
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java75
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java30
12 files changed, 497 insertions, 278 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
index 3536a17776..933ba04285 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
@@ -248,6 +248,9 @@ public final class NativeLibrary
public static native void SetUserSetting(String gameID, String Section, String Key, String Value);
+ public static native void SetProfileSetting(String profile, String Section, String Key,
+ String Value);
+
public static native void InitGameIni(String gameID);
/**
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
index 67b6b77e7a..52312b29f9 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
@@ -12,10 +12,12 @@ import android.widget.Toast;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
+import org.dolphinemu.dolphinemu.dialogs.GameSettingsDialog;
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
import org.dolphinemu.dolphinemu.model.GameFile;
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
+import org.dolphinemu.dolphinemu.ui.platform.Platform;
import org.dolphinemu.dolphinemu.utils.PicassoUtils;
import org.dolphinemu.dolphinemu.viewholders.GameViewHolder;
@@ -147,49 +149,10 @@ public final class GameAdapter extends RecyclerView.Adapter<GameViewHolder> impl
return true;
}
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
- builder.setTitle("Game Settings")
- .setItems(R.array.gameSettingsMenus, new DialogInterface.OnClickListener()
- {
- public void onClick(DialogInterface dialog, int which)
- {
- switch (which)
- {
- case 0:
- SettingsActivity.launch(activity, MenuTag.CONFIG, gameId);
- break;
- case 1:
- SettingsActivity.launch(activity, MenuTag.GRAPHICS, gameId);
- break;
- case 2:
- String path =
- DirectoryInitialization.getUserDirectory() + "/GameSettings/" +
- gameId + ".ini";
- File gameSettingsFile = new File(path);
- if (gameSettingsFile.exists())
- {
- if (gameSettingsFile.delete())
- {
- Toast.makeText(view.getContext(), "Cleared settings for " + gameId,
- Toast.LENGTH_SHORT).show();
- }
- else
- {
- Toast.makeText(view.getContext(), "Unable to clear settings for " + gameId,
- Toast.LENGTH_SHORT).show();
- }
- }
- else
- {
- Toast.makeText(view.getContext(), "No game settings to delete",
- Toast.LENGTH_SHORT).show();
- }
- break;
- }
- }
- });
-
- builder.show();
+ GameSettingsDialog fragment =
+ GameSettingsDialog.newInstance(gameId, holder.gameFile.getPlatform());
+ ((FragmentActivity) view.getContext()).getSupportFragmentManager().beginTransaction()
+ .add(fragment, GameSettingsDialog.TAG).commit();
return true;
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
index 2cf23080b1..8047a438e8 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
@@ -14,6 +14,7 @@ import android.widget.ImageView;
import android.widget.Toast;
import org.dolphinemu.dolphinemu.R;
+import org.dolphinemu.dolphinemu.dialogs.GameSettingsDialog;
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
import org.dolphinemu.dolphinemu.model.GameFile;
@@ -80,73 +81,30 @@ public final class GameRowPresenter extends Presenter
Context context = holder.cardParent.getContext();
Drawable background = ContextCompat.getDrawable(context, backgroundId);
holder.cardParent.setInfoAreaBackground(background);
- holder.cardParent.setOnLongClickListener(new View.OnLongClickListener()
+ holder.cardParent.setOnLongClickListener((view) ->
{
- @Override
- public boolean onLongClick(View view)
- {
- FragmentActivity activity = (FragmentActivity) view.getContext();
- String gameId = gameFile.getGameId();
-
- if (gameId.isEmpty())
- {
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
- builder.setTitle("Game Settings");
- builder.setMessage("Files without game IDs don't support game-specific settings.");
-
- builder.show();
- return true;
- }
+ FragmentActivity activity = (FragmentActivity) view.getContext();
+ String gameId = gameFile.getGameId();
+ if (gameId.isEmpty())
+ {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
- builder.setTitle("Game Settings")
- .setItems(R.array.gameSettingsMenus, new DialogInterface.OnClickListener()
- {
- public void onClick(DialogInterface dialog, int which)
- {
- switch (which)
- {
- case 0:
- SettingsActivity.launch(activity, MenuTag.CONFIG, gameId);
- break;
- case 1:
- SettingsActivity.launch(activity, MenuTag.GRAPHICS, gameId);
- break;
- case 2:
- String path = DirectoryInitialization.getUserDirectory() +
- "/GameSettings/" + gameId + ".ini";
- File gameSettingsFile = new File(path);
- if (gameSettingsFile.exists())
- {
- if (gameSettingsFile.delete())
- {
- Toast.makeText(view.getContext(), "Cleared settings for " + gameId,
- Toast.LENGTH_SHORT).show();
- }
- else
- {
- Toast.makeText(view.getContext(),
- "Unable to clear settings for " + gameId, Toast.LENGTH_SHORT)
- .show();
- }
- }
- else
- {
- Toast.makeText(view.getContext(), "No game settings to delete",
- Toast.LENGTH_SHORT).show();
- }
- break;
- }
- }
- });
+ builder.setTitle("Game Settings");
+ builder.setMessage("Files without game IDs don't support game-specific settings.");
builder.show();
return true;
}
+
+ GameSettingsDialog fragment =
+ GameSettingsDialog.newInstance(gameId, holder.gameFile.getPlatform());
+ ((FragmentActivity) view.getContext()).getSupportFragmentManager().beginTransaction()
+ .add(fragment, GameSettingsDialog.TAG).commit();
+
+ return true;
});
}
-
@Override
public void onUnbindViewHolder(ViewHolder viewHolder)
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameSettingsDialog.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameSettingsDialog.java
new file mode 100644
index 0000000000..5639897d62
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GameSettingsDialog.java
@@ -0,0 +1,98 @@
+package org.dolphinemu.dolphinemu.dialogs;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
+import android.widget.Toast;
+
+import org.dolphinemu.dolphinemu.R;
+import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
+import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
+import org.dolphinemu.dolphinemu.ui.platform.Platform;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
+
+import java.io.File;
+
+public class GameSettingsDialog extends DialogFragment
+{
+ public static final String TAG = "GameSettingsDialog";
+ public static final String ARG_GAMEID = "game_id";
+ public static final String ARG_PLATFORM = "platform";
+
+ public static GameSettingsDialog newInstance(String gameId, int platform)
+ {
+ GameSettingsDialog fragment = new GameSettingsDialog();
+
+ Bundle arguments = new Bundle();
+ arguments.putString(ARG_GAMEID, gameId);
+ arguments.putInt(ARG_PLATFORM, platform);
+ fragment.setArguments(arguments);
+
+ return fragment;
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState)
+ {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+
+ String gameId = getArguments().getString(ARG_GAMEID);
+ int platform = getArguments().getInt(ARG_PLATFORM);
+
+ builder.setTitle(getActivity().getString(R.string.preferences_game_settings))
+ .setItems(platform == Platform.GAMECUBE.toInt() ?
+ R.array.gameSettingsMenusGC :
+ R.array.gameSettingsMenusWii, (dialog, which) ->
+ {
+ switch (which)
+ {
+ case 0:
+ SettingsActivity.launch(getContext(), MenuTag.CONFIG, gameId);
+ break;
+ case 1:
+ SettingsActivity.launch(getContext(), MenuTag.GRAPHICS, gameId);
+ break;
+ case 2:
+ SettingsActivity.launch(getContext(), MenuTag.GCPAD_TYPE, gameId);
+ break;
+ case 3:
+ // Clear option for GC, Wii controls for else
+ if (platform == Platform.GAMECUBE.toInt())
+ clearGameSettings(gameId);
+ else
+ SettingsActivity.launch(getActivity(), MenuTag.WIIMOTE, gameId);
+ break;
+ case 4:
+ clearGameSettings(gameId);
+ break;
+ }
+ });
+ return builder.create();
+ }
+
+
+ private void clearGameSettings(String gameId)
+ {
+ String path =
+ DirectoryInitialization.getUserDirectory() + "/GameSettings/" + gameId + ".ini";
+ File gameSettingsFile = new File(path);
+ if (gameSettingsFile.exists())
+ {
+ if (gameSettingsFile.delete())
+ {
+ Toast.makeText(getContext(), "Cleared settings for " + gameId, Toast.LENGTH_SHORT)
+ .show();
+ }
+ else
+ {
+ Toast.makeText(getContext(), "Unable to clear settings for " + gameId,
+ Toast.LENGTH_SHORT).show();
+ }
+ }
+ else
+ {
+ Toast.makeText(getContext(), "No game settings to delete", Toast.LENGTH_SHORT).show();
+ }
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
index d945512069..0f3ff9d717 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
@@ -26,6 +26,8 @@ public class Settings
public static final String SECTION_WIIMOTE = "Wiimote";
public static final String SECTION_BINDINGS = "Android";
+ public static final String SECTION_CONTROLS = "Controls";
+ public static final String SECTION_PROFILE = "Profile";
public static final String SECTION_ANALYTICS = "Analytics";
@@ -134,6 +136,11 @@ public class Settings
mergeSections(SettingsFile.readCustomGameSettings(gameId, view));
}
+ public void loadWiimoteProfile(String gameId, String padId)
+ {
+ mergeSections(SettingsFile.readWiimoteProfile(gameId, padId));
+ }
+
private void mergeSections(HashMap<String, SettingSection> updatedSections)
{
for (Map.Entry<String, SettingSection> entry : updatedSections.entrySet())
@@ -182,6 +189,5 @@ public class Settings
view.showToastMessage("Saved settings for " + gameId);
SettingsFile.saveCustomGameSettings(gameId, sections);
}
-
}
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/InputBindingSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/InputBindingSetting.java
index e3850cb447..0c6a3bc314 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/InputBindingSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/InputBindingSetting.java
@@ -11,9 +11,13 @@ import org.dolphinemu.dolphinemu.features.settings.model.StringSetting;
public class InputBindingSetting extends SettingsItem
{
- public InputBindingSetting(String key, String section, int titleId, Setting setting)
+ private String gameId;
+
+ public InputBindingSetting(String key, String section, int titleId, Setting setting,
+ String gameId)
{
super(key, section, setting, titleId, 0);
+ this.gameId = gameId;
}
public String getValue()
@@ -98,4 +102,9 @@ public class InputBindingSetting extends SettingsItem
{
return TYPE_INPUT_BINDING;
}
+
+ public String getGameId()
+ {
+ return gameId;
+ }
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java
index e3c798521f..48df22fc45 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java
@@ -1,7 +1,7 @@
package org.dolphinemu.dolphinemu.features.settings.model.view;
-import org.dolphinemu.dolphinemu.features.settings.model.Setting;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter;
+import org.dolphinemu.dolphinemu.features.settings.model.Setting;
/**
* ViewModel abstraction for an Item in the RecyclerView powering SettingsFragments.
@@ -39,6 +39,7 @@ public abstract class SettingsItem
* @param nameId Resource ID for a text string to be displayed as this setting's name.
* @param descriptionId Resource ID for a text string to be displayed as this setting's description.
*/
+
public SettingsItem(String key, String section, Setting setting, int nameId, int descriptionId)
{
mKey = key;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java
index a2392caefc..7d903ddd0a 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java
@@ -292,7 +292,14 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
else if (scSetting.getKey().equals(SettingsFile.KEY_WIIMOTE_EXTENSION))
{
putExtensionSetting(which, Character.getNumericValue(
- scSetting.getSection().charAt(scSetting.getSection().length() - 1)));
+ scSetting.getSection().charAt(scSetting.getSection().length() - 1)), false);
+ }
+ else if (scSetting.getKey().contains(SettingsFile.KEY_WIIMOTE_EXTENSION) &&
+ scSetting.getSection().equals(Settings.SECTION_CONTROLS))
+ {
+ putExtensionSetting(which, Character
+ .getNumericValue(scSetting.getKey().charAt(scSetting.getKey().length() - 1)),
+ true);
}
}
@@ -443,11 +450,22 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
mView.putSetting(gfxBackend);
}
- private void putExtensionSetting(int which, int wiimoteNumber)
+ private void putExtensionSetting(int which, int wiimoteNumber, boolean isGame)
{
- StringSetting extension = new StringSetting(SettingsFile.KEY_WIIMOTE_EXTENSION,
- Settings.SECTION_WIIMOTE + wiimoteNumber,
- mContext.getResources().getStringArray(R.array.wiimoteExtensionsEntries)[which]);
- mView.putSetting(extension);
+ if (!isGame)
+ {
+ StringSetting extension = new StringSetting(SettingsFile.KEY_WIIMOTE_EXTENSION,
+ Settings.SECTION_WIIMOTE + wiimoteNumber,
+ mContext.getResources().getStringArray(R.array.wiimoteExtensionsEntries)[which]);
+ mView.putSetting(extension);
+ }
+ else
+ {
+ StringSetting extension =
+ new StringSetting(SettingsFile.KEY_WIIMOTE_EXTENSION + wiimoteNumber,
+ Settings.SECTION_CONTROLS, mContext.getResources()
+ .getStringArray(R.array.wiimoteExtensionsEntries)[which]);
+ mView.putSetting(extension);
+ }
}
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index a7759be7f3..6359c340e2 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -336,12 +336,23 @@ public final class SettingsFragmentPresenter
{
for (int i = 0; i < 4; i++)
{
- // TODO This controller_0 + i business is quite the hack. It should work, but only if the definitions are kept together and in order.
- Setting gcPadSetting = mSettings.getSection(Settings.SECTION_INI_CORE)
- .getSetting(SettingsFile.KEY_GCPAD_TYPE + i);
- sl.add(new SingleChoiceSetting(SettingsFile.KEY_GCPAD_TYPE + i, Settings.SECTION_INI_CORE,
- R.string.controller_0 + i, 0, R.array.gcpadTypeEntries, R.array.gcpadTypeValues, 0,
- gcPadSetting, MenuTag.getGCPadMenuTag(i)));
+ if (mGameID.equals(""))
+ {
+ // TODO This controller_0 + i business is quite the hack. It should work, but only if the definitions are kept together and in order.
+ Setting gcPadSetting = mSettings.getSection(Settings.SECTION_INI_CORE)
+ .getSetting(SettingsFile.KEY_GCPAD_TYPE + i);
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_GCPAD_TYPE + i, Settings.SECTION_INI_CORE,
+ R.string.controller_0 + i, 0, R.array.gcpadTypeEntries, R.array.gcpadTypeValues, 0,
+ gcPadSetting, MenuTag.getGCPadMenuTag(i)));
+ }
+ else
+ {
+ Setting gcPadSetting = mSettings.getSection(Settings.SECTION_CONTROLS)
+ .getSetting(SettingsFile.KEY_GCPAD_G_TYPE + i);
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_GCPAD_G_TYPE + i, Settings.SECTION_CONTROLS,
+ R.string.controller_0 + i, 0, R.array.gcpadTypeEntries, R.array.gcpadTypeValues, 0,
+ gcPadSetting, MenuTag.getGCPadMenuTag(i)));
+ }
}
}
@@ -350,11 +361,23 @@ public final class SettingsFragmentPresenter
for (int i = 0; i < 4; i++)
{
// TODO This wiimote_0 + i business is quite the hack. It should work, but only if the definitions are kept together and in order.
- Setting wiimoteSetting = mSettings.getSection(Settings.SECTION_WIIMOTE + (i + 1))
- .getSetting(SettingsFile.KEY_WIIMOTE_TYPE);
- sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_TYPE, Settings.SECTION_WIIMOTE + i,
- R.string.wiimote_4 + i, 0, R.array.wiimoteTypeEntries, R.array.wiimoteTypeValues, 0,
- wiimoteSetting, MenuTag.getWiimoteMenuTag(i + 4)));
+ if (mGameID.equals(""))
+ {
+ Setting wiimoteSetting = mSettings.getSection(Settings.SECTION_WIIMOTE + (i + 1))
+ .getSetting(SettingsFile.KEY_WIIMOTE_TYPE);
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_TYPE,
+ Settings.SECTION_WIIMOTE + (i + 1), R.string.wiimote_4 + i, 0,
+ R.array.wiimoteTypeEntries, R.array.wiimoteTypeValues, 0, wiimoteSetting,
+ MenuTag.getWiimoteMenuTag(i + 4)));
+ }
+ else
+ {
+ Setting wiimoteSetting = mSettings.getSection(Settings.SECTION_CONTROLS)
+ .getSetting(SettingsFile.KEY_WIIMOTE_G_TYPE + i);
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_G_TYPE + i,
+ Settings.SECTION_CONTROLS, R.string.wiimote_4 + i, 0, R.array.wiimoteTypeEntries,
+ R.array.wiimoteTypeValues, 0, wiimoteSetting, MenuTag.getWiimoteMenuTag(i + 4)));
+ }
}
}
@@ -638,53 +661,53 @@ public final class SettingsFragmentPresenter
sl.add(new HeaderSetting(null, null, R.string.generic_buttons, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_A + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.button_a, bindA));
+ Settings.SECTION_BINDINGS, R.string.button_a, bindA, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_B + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.button_b, bindB));
+ Settings.SECTION_BINDINGS, R.string.button_b, bindB, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_X + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.button_x, bindX));
+ Settings.SECTION_BINDINGS, R.string.button_x, bindX, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_Y + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.button_y, bindY));
+ Settings.SECTION_BINDINGS, R.string.button_y, bindY, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_Z + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.button_z, bindZ));
+ Settings.SECTION_BINDINGS, R.string.button_z, bindZ, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_START + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.button_start, bindStart));
+ Settings.SECTION_BINDINGS, R.string.button_start, bindStart, mGameID));
sl.add(new HeaderSetting(null, null, R.string.controller_control, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_CONTROL_UP + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindControlUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindControlUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_CONTROL_DOWN + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindControlDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindControlDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_CONTROL_LEFT + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindControlLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindControlLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_CONTROL_RIGHT + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindControlRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindControlRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.controller_c, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_C_UP + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindCUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindCUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_C_DOWN + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindCDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindCDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_C_LEFT + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindCLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindCLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_C_RIGHT + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindCRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindCRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.controller_trig, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_TRIGGER_L + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.trigger_left, bindTriggerL));
+ Settings.SECTION_BINDINGS, R.string.trigger_left, bindTriggerL, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_TRIGGER_R + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.trigger_right, bindTriggerR));
+ Settings.SECTION_BINDINGS, R.string.trigger_right, bindTriggerR, mGameID));
sl.add(new HeaderSetting(null, null, R.string.controller_dpad, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_DPAD_UP + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindDPadUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindDPadUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_DPAD_DOWN + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindDPadDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindDPadDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_DPAD_LEFT + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindDPadLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindDPadLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_GCBIND_DPAD_RIGHT + gcPadNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindDPadRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindDPadRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.emulation_control_rumble, 0));
@@ -709,10 +732,7 @@ public final class SettingsFragmentPresenter
{
SettingSection bindingsSection = mSettings.getSection(Settings.SECTION_BINDINGS);
- // Bindings use controller numbers 4-7 (0-3 are GameCube), but the extension setting uses 1-4.
- IntSetting extension = new IntSetting(SettingsFile.KEY_WIIMOTE_EXTENSION,
- Settings.SECTION_WIIMOTE + wiimoteNumber, getExtensionValue(wiimoteNumber - 3),
- MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber));
+
Setting bindA = bindingsSection.getSetting(SettingsFile.KEY_WIIBIND_A + wiimoteNumber);
Setting bindB = bindingsSection.getSetting(SettingsFile.KEY_WIIBIND_B + wiimoteNumber);
Setting bind1 = bindingsSection.getSetting(SettingsFile.KEY_WIIBIND_1 + wiimoteNumber);
@@ -772,87 +792,110 @@ public final class SettingsFragmentPresenter
Setting wiiEmuRumble =
bindingsSection.getSetting(SettingsFile.KEY_EMU_RUMBLE + wiimoteNumber);
- sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_EXTENSION,
- Settings.SECTION_WIIMOTE + (wiimoteNumber - 3), R.string.wiimote_extensions,
- R.string.wiimote_extensions_description, R.array.wiimoteExtensionsEntries,
- R.array.wiimoteExtensionsValues, 0, extension,
- MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber)));
+ // Bindings use controller numbers 4-7 (0-3 are GameCube), but the extension setting uses 1-4.
+ // But game game specific extension settings are saved in their own profile. These profiles
+ // do not have any way to specify the controller that is loaded outside of knowing the filename
+ // of the profile that was loaded.
+ IntSetting extension;
+ if (mGameID.equals(""))
+ {
+ extension = new IntSetting(SettingsFile.KEY_WIIMOTE_EXTENSION,
+ Settings.SECTION_WIIMOTE + wiimoteNumber, getExtensionValue(wiimoteNumber - 3),
+ MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber));
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_EXTENSION,
+ Settings.SECTION_WIIMOTE + (wiimoteNumber - 3), R.string.wiimote_extensions,
+ R.string.wiimote_extensions_description, R.array.wiimoteExtensionsEntries,
+ R.array.wiimoteExtensionsValues, 0, extension,
+ MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber)));
+ }
+ else
+ {
+ mSettings.loadWiimoteProfile(mGameID, String.valueOf(wiimoteNumber - 4));
+ extension = new IntSetting(SettingsFile.KEY_WIIMOTE_EXTENSION + (wiimoteNumber - 4),
+ Settings.SECTION_CONTROLS, getExtensionValue(wiimoteNumber - 4),
+ MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber));
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_EXTENSION + (wiimoteNumber - 4),
+ Settings.SECTION_CONTROLS, R.string.wiimote_extensions,
+ R.string.wiimote_extensions_description, R.array.wiimoteExtensionsEntries,
+ R.array.wiimoteExtensionsValues, 0, extension,
+ MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber)));
+ }
sl.add(new HeaderSetting(null, null, R.string.generic_buttons, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_A + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_a, bindA));
+ Settings.SECTION_BINDINGS, R.string.button_a, bindA, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_B + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_b, bindB));
+ Settings.SECTION_BINDINGS, R.string.button_b, bindB, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_1 + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_one, bind1));
+ Settings.SECTION_BINDINGS, R.string.button_one, bind1, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_2 + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_two, bind2));
+ Settings.SECTION_BINDINGS, R.string.button_two, bind2, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_MINUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_minus, bindMinus));
+ Settings.SECTION_BINDINGS, R.string.button_minus, bindMinus, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_PLUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_plus, bindPlus));
+ Settings.SECTION_BINDINGS, R.string.button_plus, bindPlus, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_HOME + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_home, bindHome));
+ Settings.SECTION_BINDINGS, R.string.button_home, bindHome, mGameID));
sl.add(new HeaderSetting(null, null, R.string.wiimote_ir, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_IR_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindIRUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindIRUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_IR_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindIRDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindIRDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_IR_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindIRLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindIRLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_IR_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindIRRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindIRRight, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_IR_FORWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_forward, bindIRForward));
+ Settings.SECTION_BINDINGS, R.string.generic_forward, bindIRForward, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_IR_BACKWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_backward, bindIRBackward));
+ Settings.SECTION_BINDINGS, R.string.generic_backward, bindIRBackward, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_IR_HIDE + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.ir_hide, bindIRHide));
+ Settings.SECTION_BINDINGS, R.string.ir_hide, bindIRHide, mGameID));
sl.add(new HeaderSetting(null, null, R.string.wiimote_swing, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_SWING_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindSwingUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindSwingUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_SWING_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindSwingDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindSwingDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_SWING_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindSwingLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindSwingLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_SWING_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindSwingRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindSwingRight, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_SWING_FORWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_forward, bindSwingForward));
+ Settings.SECTION_BINDINGS, R.string.generic_forward, bindSwingForward, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_SWING_BACKWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_backward, bindSwingBackward));
+ Settings.SECTION_BINDINGS, R.string.generic_backward, bindSwingBackward, mGameID));
sl.add(new HeaderSetting(null, null, R.string.wiimote_tilt, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TILT_FORWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_forward, bindTiltForward));
+ Settings.SECTION_BINDINGS, R.string.generic_forward, bindTiltForward, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TILT_BACKWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_backward, bindTiltBackward));
+ Settings.SECTION_BINDINGS, R.string.generic_backward, bindTiltBackward, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TILT_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindTiltLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindTiltLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TILT_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindTiltRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindTiltRight, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TILT_MODIFIER + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.tilt_modifier, bindTiltModifier));
+ Settings.SECTION_BINDINGS, R.string.tilt_modifier, bindTiltModifier, mGameID));
sl.add(new HeaderSetting(null, null, R.string.wiimote_shake, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_SHAKE_X + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.shake_x, bindShakeX));
+ Settings.SECTION_BINDINGS, R.string.shake_x, bindShakeX, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_SHAKE_Y + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.shake_y, bindShakeY));
+ Settings.SECTION_BINDINGS, R.string.shake_y, bindShakeY, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_SHAKE_Z + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.shake_z, bindShakeZ));
+ Settings.SECTION_BINDINGS, R.string.shake_z, bindShakeZ, mGameID));
sl.add(new HeaderSetting(null, null, R.string.controller_dpad, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DPAD_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindDPadUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindDPadUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DPAD_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindDPadDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindDPadDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DPAD_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindDPadLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindDPadLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DPAD_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindDPadRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindDPadRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.emulation_control_rumble, 0));
@@ -911,58 +954,58 @@ public final class SettingsFragmentPresenter
sl.add(new HeaderSetting(null, null, R.string.generic_buttons, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_C + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.nunchuk_button_c, bindC));
+ Settings.SECTION_BINDINGS, R.string.nunchuk_button_c, bindC, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_Z + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_z, bindZ));
+ Settings.SECTION_BINDINGS, R.string.button_z, bindZ, mGameID));
sl.add(new HeaderSetting(null, null, R.string.generic_stick, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.wiimote_swing, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_SWING_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindSwingUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindSwingUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_SWING_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindSwingDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindSwingDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_SWING_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindSwingLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindSwingLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_SWING_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindSwingRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindSwingRight, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_NUNCHUK_SWING_FORWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_forward, bindSwingForward));
+ Settings.SECTION_BINDINGS, R.string.generic_forward, bindSwingForward, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_NUNCHUK_SWING_BACKWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_backward, bindSwingBackward));
+ Settings.SECTION_BINDINGS, R.string.generic_backward, bindSwingBackward, mGameID));
sl.add(new HeaderSetting(null, null, R.string.wiimote_tilt, 0));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_NUNCHUK_TILT_FORWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_forward, bindTiltForward));
+ Settings.SECTION_BINDINGS, R.string.generic_forward, bindTiltForward, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_NUNCHUK_TILT_BACKWARD + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_backward, bindTiltBackward));
+ Settings.SECTION_BINDINGS, R.string.generic_backward, bindTiltBackward, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_TILT_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindTiltLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindTiltLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_TILT_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindTiltRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindTiltRight, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_NUNCHUK_TILT_MODIFIER + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.tilt_modifier, bindTiltModifier));
+ Settings.SECTION_BINDINGS, R.string.tilt_modifier, bindTiltModifier, mGameID));
sl.add(new HeaderSetting(null, null, R.string.wiimote_shake, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_SHAKE_X + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.shake_x, bindShakeX));
+ Settings.SECTION_BINDINGS, R.string.shake_x, bindShakeX, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_SHAKE_Y + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.shake_y, bindShakeY));
+ Settings.SECTION_BINDINGS, R.string.shake_y, bindShakeY, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_NUNCHUK_SHAKE_Z + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.shake_z, bindShakeZ));
+ Settings.SECTION_BINDINGS, R.string.shake_z, bindShakeZ, mGameID));
break;
case 2: // Classic
Setting bindA =
@@ -1014,59 +1057,59 @@ public final class SettingsFragmentPresenter
sl.add(new HeaderSetting(null, null, R.string.generic_buttons, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_A + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_a, bindA));
+ Settings.SECTION_BINDINGS, R.string.button_a, bindA, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_B + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_b, bindB));
+ Settings.SECTION_BINDINGS, R.string.button_b, bindB, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_X + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_x, bindX));
+ Settings.SECTION_BINDINGS, R.string.button_x, bindX, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_Y + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_y, bindY));
+ Settings.SECTION_BINDINGS, R.string.button_y, bindY, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_ZL + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.classic_button_zl, bindZL));
+ Settings.SECTION_BINDINGS, R.string.classic_button_zl, bindZL, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_ZR + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.classic_button_zr, bindZR));
+ Settings.SECTION_BINDINGS, R.string.classic_button_zr, bindZR, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_MINUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_minus, bindMinus));
+ Settings.SECTION_BINDINGS, R.string.button_minus, bindMinus, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_PLUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_plus, bindPlus));
+ Settings.SECTION_BINDINGS, R.string.button_plus, bindPlus, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_HOME + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_home, bindHome));
+ Settings.SECTION_BINDINGS, R.string.button_home, bindHome, mGameID));
sl.add(new HeaderSetting(null, null, R.string.classic_leftstick, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_LEFT_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindLeftUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindLeftUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_LEFT_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindLeftDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindLeftDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_LEFT_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindLeftLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindLeftLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_LEFT_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindLeftRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindLeftRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.classic_rightstick, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_RIGHT_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindRightUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindRightUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_RIGHT_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindRightDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindRightDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_RIGHT_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindRightLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindRightLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_RIGHT_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindRightRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindRightRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.controller_trig, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_TRIGGER_L + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.trigger_left, bindR));
+ Settings.SECTION_BINDINGS, R.string.trigger_left, bindR, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_TRIGGER_R + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.trigger_right, bindL));
+ Settings.SECTION_BINDINGS, R.string.trigger_right, bindL, mGameID));
sl.add(new HeaderSetting(null, null, R.string.controller_dpad, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_DPAD_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindDpadUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindDpadUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_DPAD_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindDpadDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindDpadDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_DPAD_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindDpadLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindDpadLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_CLASSIC_DPAD_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindDpadRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindDpadRight, mGameID));
break;
case 3: // Guitar
Setting bindFretGreen = bindingsSection
@@ -1100,41 +1143,41 @@ public final class SettingsFragmentPresenter
sl.add(new HeaderSetting(null, null, R.string.guitar_frets, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_FRET_GREEN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_green, bindFretGreen));
+ Settings.SECTION_BINDINGS, R.string.generic_green, bindFretGreen, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_FRET_RED + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_red, bindFretRed));
+ Settings.SECTION_BINDINGS, R.string.generic_red, bindFretRed, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_FRET_YELLOW + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_yellow, bindFretYellow));
+ Settings.SECTION_BINDINGS, R.string.generic_yellow, bindFretYellow, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_FRET_BLUE + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_blue, bindFretBlue));
+ Settings.SECTION_BINDINGS, R.string.generic_blue, bindFretBlue, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_FRET_ORANGE + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_orange, bindFretOrange));
+ Settings.SECTION_BINDINGS, R.string.generic_orange, bindFretOrange, mGameID));
sl.add(new HeaderSetting(null, null, R.string.guitar_strum, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_STRUM_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindStrumUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindStrumUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_STRUM_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindStrumDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindStrumDown, mGameID));
sl.add(new HeaderSetting(null, null, R.string.generic_buttons, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_MINUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_minus, bindGuitarMinus));
+ Settings.SECTION_BINDINGS, R.string.button_minus, bindGuitarMinus, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_PLUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_plus, bindGuitarPlus));
+ Settings.SECTION_BINDINGS, R.string.button_plus, bindGuitarPlus, mGameID));
sl.add(new HeaderSetting(null, null, R.string.generic_stick, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_STICK_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindGuitarUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindGuitarUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_STICK_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindGuitarDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindGuitarDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_STICK_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindGuitarLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindGuitarLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_STICK_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindGuitarRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindGuitarRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.guitar_whammy, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_GUITAR_WHAMMY_BAR + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindWhammyBar));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindWhammyBar, mGameID));
break;
case 4: // Drums
Setting bindPadRed =
@@ -1164,33 +1207,33 @@ public final class SettingsFragmentPresenter
sl.add(new HeaderSetting(null, null, R.string.drums_pads, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_PAD_RED + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_red, bindPadRed));
+ Settings.SECTION_BINDINGS, R.string.generic_red, bindPadRed, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_PAD_YELLOW + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_yellow, bindPadYellow));
+ Settings.SECTION_BINDINGS, R.string.generic_yellow, bindPadYellow, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_PAD_BLUE + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_blue, bindPadBlue));
+ Settings.SECTION_BINDINGS, R.string.generic_blue, bindPadBlue, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_PAD_GREEN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_green, bindPadGreen));
+ Settings.SECTION_BINDINGS, R.string.generic_green, bindPadGreen, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_PAD_ORANGE + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_orange, bindPadOrange));
+ Settings.SECTION_BINDINGS, R.string.generic_orange, bindPadOrange, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_PAD_BASS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.drums_pad_bass, bindPadBass));
+ Settings.SECTION_BINDINGS, R.string.drums_pad_bass, bindPadBass, mGameID));
sl.add(new HeaderSetting(null, null, R.string.generic_stick, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_STICK_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindDrumsUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindDrumsUp, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_STICK_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindDrumsDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindDrumsDown, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_STICK_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindDrumsLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindDrumsLeft, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_STICK_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindDrumsRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindDrumsRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.generic_buttons, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_MINUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_minus, bindDrumsMinus));
+ Settings.SECTION_BINDINGS, R.string.button_minus, bindDrumsMinus, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_DRUMS_PLUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_plus, bindDrumsPlus));
+ Settings.SECTION_BINDINGS, R.string.button_plus, bindDrumsPlus, mGameID));
break;
case 5: // Turntable
Setting bindGreenLeft = bindingsSection
@@ -1237,66 +1280,76 @@ public final class SettingsFragmentPresenter
sl.add(new HeaderSetting(null, null, R.string.generic_buttons, 0));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_GREEN_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.turntable_button_green_left, bindGreenLeft));
+ Settings.SECTION_BINDINGS, R.string.turntable_button_green_left, bindGreenLeft,
+ mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TURNTABLE_RED_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.turntable_button_red_left, bindRedLeft));
+ Settings.SECTION_BINDINGS, R.string.turntable_button_red_left, bindRedLeft,
+ mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TURNTABLE_BLUE_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.turntable_button_blue_left, bindBlueLeft));
+ Settings.SECTION_BINDINGS, R.string.turntable_button_blue_left, bindBlueLeft,
+ mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_GREEN_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.turntable_button_green_right, bindGreenRight));
+ Settings.SECTION_BINDINGS, R.string.turntable_button_green_right, bindGreenRight,
+ mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TURNTABLE_RED_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.turntable_button_red_right, bindRedRight));
+ Settings.SECTION_BINDINGS, R.string.turntable_button_red_right, bindRedRight,
+ mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_BLUE_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.turntable_button_blue_right, bindBlueRight));
+ Settings.SECTION_BINDINGS, R.string.turntable_button_blue_right, bindBlueRight,
+ mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TURNTABLE_MINUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_minus, bindTurntableMinus));
+ Settings.SECTION_BINDINGS, R.string.button_minus, bindTurntableMinus, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TURNTABLE_PLUS + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.button_plus, bindTurntablePlus));
+ Settings.SECTION_BINDINGS, R.string.button_plus, bindTurntablePlus, mGameID));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TURNTABLE_EUPHORIA + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.turntable_button_euphoria, bindEuphoria));
+ Settings.SECTION_BINDINGS, R.string.turntable_button_euphoria, bindEuphoria,
+ mGameID));
sl.add(new HeaderSetting(null, null, R.string.turntable_table_left, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TURNTABLE_LEFT_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindTurntableLeftLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindTurntableLeftLeft, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_LEFT_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindTurntableLeftRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindTurntableLeftRight,
+ mGameID));
sl.add(new HeaderSetting(null, null, R.string.turntable_table_right, 0));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_RIGHT_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindTurntableRightLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindTurntableRightLeft, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_RIGHT_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindTurntableRightRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindTurntableRightRight,
+ mGameID));
sl.add(new HeaderSetting(null, null, R.string.generic_stick, 0));
sl.add(new InputBindingSetting(SettingsFile.KEY_WIIBIND_TURNTABLE_STICK_UP + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_up, bindTurntableUp));
+ Settings.SECTION_BINDINGS, R.string.generic_up, bindTurntableUp, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_STICK_DOWN + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_down, bindTurntableDown));
+ Settings.SECTION_BINDINGS, R.string.generic_down, bindTurntableDown, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_STICK_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindTurntableLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindTurntableLeft, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_STICK_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindTurntableRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindTurntableRight, mGameID));
sl.add(new HeaderSetting(null, null, R.string.turntable_effect, 0));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_EFFECT_DIAL + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.turntable_effect_dial, bindEffectDial));
+ Settings.SECTION_BINDINGS, R.string.turntable_effect_dial, bindEffectDial,
+ mGameID));
sl.add(new HeaderSetting(null, null, R.string.turntable_crossfade, 0));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_CROSSFADE_LEFT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_left, bindCrossfadeLeft));
+ Settings.SECTION_BINDINGS, R.string.generic_left, bindCrossfadeLeft, mGameID));
sl.add(new InputBindingSetting(
SettingsFile.KEY_WIIBIND_TURNTABLE_CROSSFADE_RIGHT + wiimoteNumber,
- Settings.SECTION_BINDINGS, R.string.generic_right, bindCrossfadeRight));
+ Settings.SECTION_BINDINGS, R.string.generic_right, bindCrossfadeRight, mGameID));
break;
}
}
@@ -1358,9 +1411,19 @@ public final class SettingsFragmentPresenter
try
{
- String extension =
- ((StringSetting) mSettings.getSection(Settings.SECTION_WIIMOTE + wiimoteNumber)
- .getSetting(SettingsFile.KEY_WIIMOTE_EXTENSION)).getValue();
+ String extension;
+ if (mGameID.equals("")) // Main settings
+ {
+ extension =
+ ((StringSetting) mSettings.getSection(Settings.SECTION_WIIMOTE + wiimoteNumber)
+ .getSetting(SettingsFile.KEY_WIIMOTE_EXTENSION)).getValue();
+ }
+ else // Game settings
+ {
+ extension = ((StringSetting) mSettings.getSection(Settings.SECTION_PROFILE)
+ .getSetting(SettingsFile.KEY_WIIMOTE_EXTENSION)).getValue();
+ }
+
if (extension.equals("None"))
{
extensionValue = 0;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java
index 0b585b2e50..d2afd88731 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java
@@ -41,8 +41,9 @@ public final class InputBindingSettingViewHolder extends SettingViewHolder
mItem = (InputBindingSetting) item;
- mTextSettingName.setText(item.getNameId());
- mTextSettingDescription.setText(sharedPreferences.getString(mItem.getKey(), ""));
+ mTextSettingName.setText(mItem.getNameId());
+ mTextSettingDescription
+ .setText(sharedPreferences.getString(mItem.getKey() + mItem.getGameId(), ""));
}
@Override
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
index 0ccf700b0e..4592011443 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
@@ -90,6 +90,7 @@ public final class SettingsFile
public static final String KEY_WAIT_FOR_SHADERS = "WaitForShadersBeforeStarting";
public static final String KEY_GCPAD_TYPE = "SIDevice";
+ public static final String KEY_GCPAD_G_TYPE = "PadType";
public static final String KEY_GCBIND_A = "InputA_";
public static final String KEY_GCBIND_B = "InputB_";
@@ -120,6 +121,10 @@ public final class SettingsFile
public static final String KEY_WIIMOTE_TYPE = "Source";
public static final String KEY_WIIMOTE_EXTENSION = "Extension";
+ // Controller keys for game specific settings
+ public static final String KEY_WIIMOTE_G_TYPE = "WiimoteSource";
+ public static final String KEY_WIIMOTE_PROFILE = "WiimoteProfile";
+
public static final String KEY_WIIBIND_A = "WiimoteA_";
public static final String KEY_WIIBIND_B = "WiimoteB_";
public static final String KEY_WIIBIND_1 = "Wiimote1_";
@@ -370,6 +375,12 @@ public final class SettingsFile
return readFile(getGenericGameSettingsForAllRegions(gameId), true, view);
}
+ public static HashMap<String, SettingSection> readWiimoteProfile(final String gameId,
+ final String padId)
+ {
+ String profile = gameId + "_Wii" + padId;
+ return readFile(getWiiProfile(profile, padId), true, null);
+ }
/**
* Saves a Settings HashMap to a given .ini file on disk. If unsuccessful, outputs an error
@@ -435,13 +446,43 @@ public final class SettingsFile
for (String settingKey : sortedKeySet)
{
Setting setting = settings.get(settingKey);
- NativeLibrary
- .SetUserSetting(gameId, mapSectionNameFromIni(section.getName()), setting.getKey(),
- setting.getValueAsString());
+ // Special case. Extension gets saved into a controller profile
+ if (settingKey.contains(SettingsFile.KEY_WIIMOTE_EXTENSION))
+ {
+ saveCustomWiimoteSetting(gameId, setting);
+ }
+ else
+ {
+ NativeLibrary.SetUserSetting(gameId, mapSectionNameFromIni(section.getName()),
+ setting.getKey(), setting.getValueAsString());
+ }
}
}
}
+ /**
+ * Saves the extension value in a profile and enables that profile. Extension is the only
+ * controller setting that is not saved in the main config.
+ *
+ * @param gameId
+ * @param setting
+ */
+ public static void saveCustomWiimoteSetting(final String gameId, final Setting setting)
+ {
+ if (setting.getSection().equals(Settings.SECTION_PROFILE))
+ return;
+ String padId =
+ setting.getKey().substring(setting.getKey().length() - 1, setting.getKey().length());
+ String profile = gameId + "_Wii" + padId;
+
+ NativeLibrary.SetProfileSetting(profile, Settings.SECTION_PROFILE, KEY_WIIMOTE_EXTENSION,
+ setting.getValueAsString());
+
+ // Enable the profile
+ NativeLibrary.SetUserSetting(gameId, Settings.SECTION_CONTROLS,
+ KEY_WIIMOTE_PROFILE + (Integer.valueOf(padId) + 1), profile);
+ }
+
private static String mapSectionNameFromIni(String generalSectionName)
{
if (sectionsMap.getForward(generalSectionName) != null)
@@ -487,10 +528,32 @@ public final class SettingsFile
private static File getCustomGameSettingsFile(String gameId)
{
+
return new File(
DirectoryInitialization.getUserDirectory() + "/GameSettings/" + gameId + ".ini");
}
+ private static File getWiiProfile(String profile, String padId)
+ {
+ String wiiConfigPath =
+ DirectoryInitialization.getUserDirectory() + "/Config/Profiles/Wiimote/" +
+ profile + ".ini";
+
+ File wiiProfile = new File(wiiConfigPath);
+ // If it doesn't exist, create it
+ if (!wiiProfile.exists())
+ {
+ String defautlWiiProfilePath =
+ DirectoryInitialization.getUserDirectory() +
+ "/Config/Profiles/Wiimote/WiimoteProfile.ini";
+ DirectoryInitialization.copyFile(defautlWiiProfilePath, wiiConfigPath);
+
+ NativeLibrary.SetProfileSetting(profile, Settings.SECTION_PROFILE, "Device",
+ "Android/" + (Integer.valueOf(padId) + 4) + "/Touchscreen");
+ }
+ return wiiProfile;
+ }
+
private static SettingSection sectionFromLine(String line, boolean isCustomGame)
{
String sectionName = line.substring(1, line.length() - 1);
@@ -626,4 +689,10 @@ public final class SettingsFile
{
return setting.getKey() + " = " + setting.getValueAsString();
}
+
+ private static String customWiimoteExtSettingAsString(Setting setting)
+ {
+ return setting.getKey().substring(0, setting.getKey().length() - 1) + " = " +
+ setting.getValueAsString();
+ }
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
index b0132c215f..c8b54b36f0 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
@@ -16,6 +16,7 @@ import android.support.v4.content.LocalBroadcastManager;
import org.dolphinemu.dolphinemu.NativeLibrary;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -139,8 +140,14 @@ public final class DirectoryInitialization
//
// TODO: Redo the Android controller system so that we don't have to extract these INIs.
String configDirectory = NativeLibrary.GetUserDirectory() + File.separator + "Config";
+ String profileDirectory =
+ NativeLibrary.GetUserDirectory() + File.separator + "Config/Profiles/Wiimote/";
+ createWiimoteProfileDirectory(profileDirectory);
+
copyAsset("GCPadNew.ini", new File(configDirectory, "GCPadNew.ini"), true, context);
copyAsset("WiimoteNew.ini", new File(configDirectory, "WiimoteNew.ini"), false, context);
+ copyAsset("WiimoteProfile.ini", new File(profileDirectory, "WiimoteProfile.ini"), true,
+ context);
}
private static void deleteDirectoryRecursively(File file)
@@ -247,6 +254,20 @@ public final class DirectoryInitialization
}
}
+ public static void copyFile(String from, String to)
+ {
+ try
+ {
+ InputStream in = new FileInputStream(from);
+ OutputStream out = new FileOutputStream(to);
+ copyFile(in, out);
+ }
+ catch (IOException e)
+ {
+
+ }
+ }
+
private static void copyFile(InputStream in, OutputStream out) throws IOException
{
byte[] buffer = new byte[1024];
@@ -258,6 +279,15 @@ public final class DirectoryInitialization
}
}
+ private static void createWiimoteProfileDirectory(String directory)
+ {
+ File wiiPath = new File(directory);
+ if (!wiiPath.isDirectory())
+ {
+ wiiPath.mkdirs();
+ }
+ }
+
private static native void CreateUserDirectories();
private static native void SetSysDirectory(String path);