mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-09 15:49:25 +01:00
Merge pull request #7927 from weihuoya/android-key-map
android: simplify config loading code
This commit is contained in:
commit
16afac9da9
@ -195,7 +195,7 @@ public final class EmulationActivity extends AppCompatActivity
|
|||||||
launcher.putExtra(EXTRA_SELECTED_TITLE, gameFile.getTitle());
|
launcher.putExtra(EXTRA_SELECTED_TITLE, gameFile.getTitle());
|
||||||
launcher.putExtra(EXTRA_SELECTED_GAMEID, gameFile.getGameId());
|
launcher.putExtra(EXTRA_SELECTED_GAMEID, gameFile.getGameId());
|
||||||
launcher.putExtra(EXTRA_PLATFORM, gameFile.getPlatform());
|
launcher.putExtra(EXTRA_PLATFORM, gameFile.getPlatform());
|
||||||
activity.startActivityForResult(launcher, MainPresenter.REQUEST_EMULATE_GAME);
|
activity.startActivity(launcher);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -939,13 +939,15 @@ public final class EmulationActivity extends AppCompatActivity
|
|||||||
builder.setView(view);
|
builder.setView(view);
|
||||||
builder.setPositiveButton(R.string.ok, (dialogInterface, i) ->
|
builder.setPositiveButton(R.string.ok, (dialogInterface, i) ->
|
||||||
{
|
{
|
||||||
SettingsFile.saveSingleCustomSetting(mSelectedGameId, Settings.SECTION_CONTROLS,
|
NativeLibrary.LoadGameIniFile(mSelectedGameId);
|
||||||
|
NativeLibrary.SetUserSetting(mSelectedGameId, Settings.SECTION_CONTROLS,
|
||||||
SettingsFile.KEY_WIIBIND_IR_PITCH, text_slider_value_pitch.getText().toString());
|
SettingsFile.KEY_WIIBIND_IR_PITCH, text_slider_value_pitch.getText().toString());
|
||||||
SettingsFile.saveSingleCustomSetting(mSelectedGameId, Settings.SECTION_CONTROLS,
|
NativeLibrary.SetUserSetting(mSelectedGameId, Settings.SECTION_CONTROLS,
|
||||||
SettingsFile.KEY_WIIBIND_IR_YAW, text_slider_value_yaw.getText().toString());
|
SettingsFile.KEY_WIIBIND_IR_YAW, text_slider_value_yaw.getText().toString());
|
||||||
SettingsFile.saveSingleCustomSetting(mSelectedGameId, Settings.SECTION_CONTROLS,
|
NativeLibrary.SetUserSetting(mSelectedGameId, Settings.SECTION_CONTROLS,
|
||||||
SettingsFile.KEY_WIIBIND_IR_VERTICAL_OFFSET,
|
SettingsFile.KEY_WIIBIND_IR_VERTICAL_OFFSET,
|
||||||
text_slider_value_vertical_offset.getText().toString());
|
text_slider_value_vertical_offset.getText().toString());
|
||||||
|
NativeLibrary.SaveGameIniFile(mSelectedGameId);
|
||||||
|
|
||||||
NativeLibrary.ReloadWiimoteConfig();
|
NativeLibrary.ReloadWiimoteConfig();
|
||||||
|
|
||||||
|
@ -452,11 +452,10 @@ public final class SettingsFile
|
|||||||
final HashMap<String, SettingSection> sections)
|
final HashMap<String, SettingSection> sections)
|
||||||
{
|
{
|
||||||
Set<String> sortedSections = new TreeSet<>(sections.keySet());
|
Set<String> sortedSections = new TreeSet<>(sections.keySet());
|
||||||
|
NativeLibrary.LoadGameIniFile(gameId);
|
||||||
for (String sectionKey : sortedSections)
|
for (String sectionKey : sortedSections)
|
||||||
{
|
{
|
||||||
SettingSection section = sections.get(sectionKey);
|
SettingSection section = sections.get(sectionKey);
|
||||||
|
|
||||||
HashMap<String, Setting> settings = section.getSettings();
|
HashMap<String, Setting> settings = section.getSettings();
|
||||||
Set<String> sortedKeySet = new TreeSet<>(settings.keySet());
|
Set<String> sortedKeySet = new TreeSet<>(settings.keySet());
|
||||||
|
|
||||||
@ -465,10 +464,7 @@ public final class SettingsFile
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
NativeLibrary.LoadGameIniFile(gameId);
|
|
||||||
}
|
|
||||||
for (String settingKey : sortedKeySet)
|
for (String settingKey : sortedKeySet)
|
||||||
{
|
{
|
||||||
Setting setting = settings.get(settingKey);
|
Setting setting = settings.get(settingKey);
|
||||||
@ -478,7 +474,6 @@ public final class SettingsFile
|
|||||||
String padId =
|
String padId =
|
||||||
setting.getKey()
|
setting.getKey()
|
||||||
.substring(setting.getKey().length() - 1, setting.getKey().length());
|
.substring(setting.getKey().length() - 1, setting.getKey().length());
|
||||||
|
|
||||||
saveCustomWiimoteSetting(gameId, KEY_WIIMOTE_EXTENSION, setting.getValueAsString(),
|
saveCustomWiimoteSetting(gameId, KEY_WIIMOTE_EXTENSION, setting.getValueAsString(),
|
||||||
padId);
|
padId);
|
||||||
}
|
}
|
||||||
@ -488,17 +483,7 @@ public final class SettingsFile
|
|||||||
setting.getKey(), setting.getValueAsString());
|
setting.getKey(), setting.getValueAsString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NativeLibrary.SaveGameIniFile(gameId);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void saveSingleCustomSetting(final String gameId, final String section,
|
|
||||||
final String key,
|
|
||||||
final String value)
|
|
||||||
{
|
|
||||||
NativeLibrary.LoadGameIniFile(gameId);
|
|
||||||
NativeLibrary.SetUserSetting(gameId, section,
|
|
||||||
key, value);
|
|
||||||
NativeLibrary.SaveGameIniFile(gameId);
|
NativeLibrary.SaveGameIniFile(gameId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -510,12 +495,11 @@ public final class SettingsFile
|
|||||||
* @param value
|
* @param value
|
||||||
* @param padId
|
* @param padId
|
||||||
*/
|
*/
|
||||||
public static void saveCustomWiimoteSetting(final String gameId, final String key,
|
private static void saveCustomWiimoteSetting(final String gameId, final String key,
|
||||||
final String value,
|
final String value,
|
||||||
final String padId)
|
final String padId)
|
||||||
{
|
{
|
||||||
String profile = gameId + "_Wii" + padId;
|
String profile = gameId + "_Wii" + padId;
|
||||||
|
|
||||||
String wiiConfigPath =
|
String wiiConfigPath =
|
||||||
DirectoryInitialization.getUserDirectory() + "/Config/Profiles/Wiimote/" +
|
DirectoryInitialization.getUserDirectory() + "/Config/Profiles/Wiimote/" +
|
||||||
profile + ".ini";
|
profile + ".ini";
|
||||||
@ -532,14 +516,11 @@ public final class SettingsFile
|
|||||||
"Android/" + (Integer.valueOf(padId) + 4) + "/Touchscreen");
|
"Android/" + (Integer.valueOf(padId) + 4) + "/Touchscreen");
|
||||||
}
|
}
|
||||||
|
|
||||||
NativeLibrary.SetProfileSetting(profile, Settings.SECTION_PROFILE, key,
|
NativeLibrary.SetProfileSetting(profile, Settings.SECTION_PROFILE, key, value);
|
||||||
value);
|
|
||||||
|
|
||||||
// Enable the profile
|
// Enable the profile
|
||||||
NativeLibrary.LoadGameIniFile(gameId);
|
|
||||||
NativeLibrary.SetUserSetting(gameId, Settings.SECTION_CONTROLS,
|
NativeLibrary.SetUserSetting(gameId, Settings.SECTION_CONTROLS,
|
||||||
KEY_WIIMOTE_PROFILE + (Integer.valueOf(padId) + 1), profile);
|
KEY_WIIMOTE_PROFILE + (Integer.valueOf(padId) + 1), profile);
|
||||||
NativeLibrary.SaveGameIniFile(gameId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String mapSectionNameFromIni(String generalSectionName)
|
private static String mapSectionNameFromIni(String generalSectionName)
|
||||||
@ -733,10 +714,4 @@ public final class SettingsFile
|
|||||||
{
|
{
|
||||||
return "[" + section.getName() + "]";
|
return "[" + section.getName() + "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String customWiimoteExtSettingAsString(Setting setting)
|
|
||||||
{
|
|
||||||
return setting.getKey().substring(0, setting.getKey().length() - 1) + " = " +
|
|
||||||
setting.getValueAsString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -131,19 +131,6 @@ public final class MainActivity extends AppCompatActivity implements MainView
|
|||||||
mToolbar.setSubtitle(version);
|
mToolbar.setSubtitle(version);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void refreshFragmentScreenshot(int fragmentPosition)
|
|
||||||
{
|
|
||||||
// Invalidate Picasso image so that the new screenshot is animated in.
|
|
||||||
Platform platform = Platform.fromPosition(mViewPager.getCurrentItem());
|
|
||||||
PlatformGamesView fragment = getPlatformGamesView(platform);
|
|
||||||
|
|
||||||
if (fragment != null)
|
|
||||||
{
|
|
||||||
fragment.refreshScreenshotAtPosition(fragmentPosition);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void launchSettingsActivity(MenuTag menuTag)
|
public void launchSettingsActivity(MenuTag menuTag)
|
||||||
{
|
{
|
||||||
@ -173,10 +160,6 @@ public final class MainActivity extends AppCompatActivity implements MainView
|
|||||||
mPresenter.onDirectorySelected(FileBrowserHelper.getSelectedDirectory(result));
|
mPresenter.onDirectorySelected(FileBrowserHelper.getSelectedDirectory(result));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MainPresenter.REQUEST_EMULATE_GAME:
|
|
||||||
mPresenter.refreshFragmentScreenshot(resultCode);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ import org.dolphinemu.dolphinemu.services.GameFileCacheService;
|
|||||||
public final class MainPresenter
|
public final class MainPresenter
|
||||||
{
|
{
|
||||||
public static final int REQUEST_ADD_DIRECTORY = 1;
|
public static final int REQUEST_ADD_DIRECTORY = 1;
|
||||||
public static final int REQUEST_EMULATE_GAME = 2;
|
|
||||||
|
|
||||||
private final MainView mView;
|
private final MainView mView;
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
@ -105,9 +104,4 @@ public final class MainPresenter
|
|||||||
{
|
{
|
||||||
mDirToAdd = dir;
|
mDirToAdd = dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshFragmentScreenshot(int resultCode)
|
|
||||||
{
|
|
||||||
mView.refreshFragmentScreenshot(resultCode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -17,15 +17,6 @@ public interface MainView
|
|||||||
*/
|
*/
|
||||||
void setVersionString(String version);
|
void setVersionString(String version);
|
||||||
|
|
||||||
/**
|
|
||||||
* Tell the view to tell the currently displayed {@link android.support.v4.app.Fragment}
|
|
||||||
* to refresh the screenshot at the given position in its list of games.
|
|
||||||
*
|
|
||||||
* @param fragmentPosition An index corresponding to the list or grid of games.
|
|
||||||
*/
|
|
||||||
void refreshFragmentScreenshot(int fragmentPosition);
|
|
||||||
|
|
||||||
|
|
||||||
void launchSettingsActivity(MenuTag menuTag);
|
void launchSettingsActivity(MenuTag menuTag);
|
||||||
|
|
||||||
void launchFileListActivity();
|
void launchFileListActivity();
|
||||||
|
@ -131,12 +131,6 @@ public final class TvMainActivity extends FragmentActivity implements MainView
|
|||||||
mBrowseFragment.setTitle(version);
|
mBrowseFragment.setTitle(version);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void refreshFragmentScreenshot(int fragmentPosition)
|
|
||||||
{
|
|
||||||
mRowsAdapter.notifyArrayItemRangeChanged(0, mRowsAdapter.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void launchSettingsActivity(MenuTag menuTag)
|
public void launchSettingsActivity(MenuTag menuTag)
|
||||||
{
|
{
|
||||||
@ -177,10 +171,6 @@ public final class TvMainActivity extends FragmentActivity implements MainView
|
|||||||
mPresenter.onDirectorySelected(FileBrowserHelper.getSelectedDirectory(result));
|
mPresenter.onDirectorySelected(FileBrowserHelper.getSelectedDirectory(result));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MainPresenter.REQUEST_EMULATE_GAME:
|
|
||||||
mPresenter.refreshFragmentScreenshot(resultCode);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -565,41 +565,8 @@ void Init(const std::string& gameId)
|
|||||||
}
|
}
|
||||||
// Init our controller bindings
|
// Init our controller bindings
|
||||||
IniFile ini;
|
IniFile ini;
|
||||||
ini.Load(File::GetUserPath(D_CONFIG_IDX) + std::string("Dolphin.ini"));
|
ini.Load(File::GetUserPath(D_CONFIG_IDX) + std::string("Dolphin.ini"), true);
|
||||||
for (u32 a = 0; a < configStrings.size(); ++a)
|
ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + std::string(gameId + ".ini"), true);
|
||||||
{
|
|
||||||
for (int padID = 0; padID < 8; ++padID)
|
|
||||||
{
|
|
||||||
std::ostringstream config;
|
|
||||||
config << configStrings[a] << "_" << padID;
|
|
||||||
BindType type;
|
|
||||||
int bindnum;
|
|
||||||
char dev[128];
|
|
||||||
bool hasbind = false;
|
|
||||||
char modifier = '+';
|
|
||||||
std::string value;
|
|
||||||
ini.GetOrCreateSection("Android")->Get(config.str(), &value, "None");
|
|
||||||
if (value == "None")
|
|
||||||
continue;
|
|
||||||
if (std::string::npos != value.find("Axis"))
|
|
||||||
{
|
|
||||||
hasbind = true;
|
|
||||||
type = BIND_AXIS;
|
|
||||||
sscanf(value.c_str(), "Device '%127[^\']'-Axis %d%c", dev, &bindnum, &modifier);
|
|
||||||
}
|
|
||||||
else if (std::string::npos != value.find("Button"))
|
|
||||||
{
|
|
||||||
hasbind = true;
|
|
||||||
type = BIND_BUTTON;
|
|
||||||
sscanf(value.c_str(), "Device '%127[^\']'-Button %d", dev, &bindnum);
|
|
||||||
}
|
|
||||||
if (hasbind)
|
|
||||||
AddBind(std::string(dev),
|
|
||||||
new sBind(padID, configTypes[a], type, bindnum, modifier == '-' ? -1.0f : 1.0f));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + std::string(gameId + ".ini"));
|
|
||||||
for (u32 a = 0; a < configStrings.size(); ++a)
|
for (u32 a = 0; a < configStrings.size(); ++a)
|
||||||
{
|
{
|
||||||
for (int padID = 0; padID < 8; ++padID)
|
for (int padID = 0; padID < 8; ++padID)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user