diff options
| author | sigmabeta <bastos.eder@gmail.com> | 2016-01-21 17:36:48 -0500 |
|---|---|---|
| committer | sigmabeta <bastos.eder@gmail.com> | 2016-01-23 12:28:51 -0500 |
| commit | d90dce6d127239aaa8efad21026223baa017634d (patch) | |
| tree | 712d43d3aa2fda45a3f7621da6bfe60c42e5462c /Source/Android/app/src/main/java | |
| parent | c8e4008b83b96ea69b40cff98497d8f85830df62 (diff) | |
Implement video settings + support for missing files / settings
Diffstat (limited to 'Source/Android/app/src/main/java')
22 files changed, 486 insertions, 117 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/BooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/BooleanSetting.java index e282e6f038..478321bb8e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/BooleanSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/BooleanSetting.java @@ -4,7 +4,7 @@ public final class BooleanSetting extends Setting { private boolean mValue; - public BooleanSetting(String key, SettingSection section, boolean value) + public BooleanSetting(String key, String section, boolean value) { super(key, section); mValue = value; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/FloatSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/FloatSetting.java index 82c273a991..af78fac15d 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/FloatSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/FloatSetting.java @@ -4,7 +4,7 @@ public final class FloatSetting extends Setting { private float mValue; - public FloatSetting(String key, SettingSection section, float value) + public FloatSetting(String key, String section, float value) { super(key, section); mValue = value; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/IntSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/IntSetting.java index b47ce6ecf3..334abc86b2 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/IntSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/IntSetting.java @@ -4,7 +4,7 @@ public final class IntSetting extends Setting { private int mValue; - public IntSetting(String key, SettingSection section, int value) + public IntSetting(String key, String section, int value) { super(key, section); mValue = value; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/Setting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/Setting.java index 7ebc5633d8..2af471e694 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/Setting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/Setting.java @@ -3,10 +3,9 @@ package org.dolphinemu.dolphinemu.model.settings; public abstract class Setting { private String mKey; + private String mSection; - private SettingSection mSection; - - public Setting(String key, SettingSection section) + public Setting(String key, String section) { mKey = key; mSection = section; @@ -17,7 +16,7 @@ public abstract class Setting return mKey; } - public SettingSection getSection() + public String getSection() { return mSection; } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/StringSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/StringSetting.java index 5c381dda3a..257cb8a36d 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/StringSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/StringSetting.java @@ -4,7 +4,7 @@ public final class StringSetting extends Setting { private String mValue; - public StringSetting(String key, SettingSection section, String value) + public StringSetting(String key, String section, String value) { super(key, section); mValue = value; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/CheckBoxSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/CheckBoxSetting.java index 17860e7c22..510dfdf1af 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/CheckBoxSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/CheckBoxSetting.java @@ -6,21 +6,46 @@ import org.dolphinemu.dolphinemu.model.settings.Setting; public class CheckBoxSetting extends SettingsItem { - public CheckBoxSetting(String key, Setting setting, int titleId, int descriptionId) + private boolean mDefaultValue; + + public CheckBoxSetting(String key, String section, int titleId, int descriptionId, boolean defaultValue, Setting setting) { - super(key, setting, titleId, descriptionId); + super(key, section, setting, titleId, descriptionId); + mDefaultValue = defaultValue; } public boolean isChecked() { + if (getSetting() == null) + { + return mDefaultValue; + } + BooleanSetting setting = (BooleanSetting) getSetting(); return setting.getValue(); } - public void setChecked(boolean checked) + /** + * Write a value to the backing boolean. If that boolean was previously null, + * initializes a new one and returns it, so it can be added to the Hashmap. + * + * @param checked Pretty self explanatory. + * @return null if overwritten successfully; otherwise, a newly created BooleanSetting. + */ + public BooleanSetting setChecked(boolean checked) { - BooleanSetting setting = (BooleanSetting) getSetting(); - setting.setValue(checked); + if (getSetting() == null) + { + BooleanSetting setting = new BooleanSetting(getKey(), getSection(), checked); + setSetting(setting); + return setting; + } + else + { + BooleanSetting setting = (BooleanSetting) getSetting(); + setting.setValue(checked); + return null; + } } @Override diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/HeaderSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/HeaderSetting.java index fec739157f..9ddfae3983 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/HeaderSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/HeaderSetting.java @@ -7,7 +7,7 @@ public class HeaderSetting extends SettingsItem { public HeaderSetting(String key, Setting setting, int titleId, int descriptionId) { - super(key, setting, titleId, descriptionId); + super(key, null, setting, titleId, descriptionId); } @Override diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SettingsItem.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SettingsItem.java index d17c3e4318..1de3663555 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SettingsItem.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SettingsItem.java @@ -11,14 +11,17 @@ public abstract class SettingsItem public static final int TYPE_SUBMENU = 4; private String mKey; + private String mSection; + private Setting mSetting; private int mTitleId; private int mDescriptionId; - public SettingsItem(String key, Setting setting, int titleId, int descriptionId) + public SettingsItem(String key, String section, Setting setting, int titleId, int descriptionId) { mKey = key; + mSection = section; mSetting = setting; mTitleId = titleId; mDescriptionId = descriptionId; @@ -29,11 +32,21 @@ public abstract class SettingsItem return mKey; } + public String getSection() + { + return mSection; + } + public Setting getSetting() { return mSetting; } + public void setSetting(Setting setting) + { + mSetting = setting; + } + public int getNameId() { return mTitleId; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SingleChoiceSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SingleChoiceSetting.java index ef54c6a206..12b7ae4882 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SingleChoiceSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SingleChoiceSetting.java @@ -1,18 +1,22 @@ package org.dolphinemu.dolphinemu.model.settings.view; + import org.dolphinemu.dolphinemu.model.settings.IntSetting; import org.dolphinemu.dolphinemu.model.settings.Setting; public class SingleChoiceSetting extends SettingsItem { + private int mDefaultValue; + private int mChoicesId; private int mValuesId; - public SingleChoiceSetting(String key, Setting setting, int titleId, int descriptionId, int choicesId, int valuesId) + public SingleChoiceSetting(String key, String section, int titleId, int descriptionId, int choicesId, int valuesId, int defaultValue, Setting setting) { - super(key, setting, titleId, descriptionId); - mChoicesId = choicesId; + super(key, section, setting, titleId, descriptionId); mValuesId = valuesId; + mChoicesId = choicesId; + mDefaultValue = defaultValue; } public int getChoicesId() @@ -27,14 +31,38 @@ public class SingleChoiceSetting extends SettingsItem public int getSelectedValue() { - IntSetting setting = (IntSetting) getSetting(); - return setting.getValue(); + if (getSetting() != null) + { + IntSetting setting = (IntSetting) getSetting(); + return setting.getValue(); + } + else + { + return mDefaultValue; + } } - public void setSelectedValue(int selection) + /** + * Write a value to the backing int. If that int was previously null, + * initializes a new one and returns it, so it can be added to the Hashmap. + * + * @param selection New value of the int. + * @return null if overwritten successfully otherwise; a newly created IntSetting. + */ + public IntSetting setSelectedValue(int selection) { - IntSetting setting = (IntSetting) getSetting(); - setting.setValue(selection); + if (getSetting() == null) + { + IntSetting setting = new IntSetting(getKey(), getSection(), selection); + setSetting(setting); + return setting; + } + else + { + IntSetting setting = (IntSetting) getSetting(); + setting.setValue(selection); + return null; + } } @Override diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SliderSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SliderSetting.java index 685ba5aa69..062f5f3cdc 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SliderSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SliderSetting.java @@ -9,14 +9,16 @@ import org.dolphinemu.dolphinemu.utils.SettingsFile; public class SliderSetting extends SettingsItem { private int mMax; + private int mDefaultValue; private String mUnits; - public SliderSetting(String key, Setting setting, int titleId, int descriptionId, int max, String units) + public SliderSetting(String key, String section, int titleId, int descriptionId, int max, String units, int defaultValue, Setting setting) { - super(key, setting, titleId, descriptionId); + super(key, section, setting, titleId, descriptionId); mMax = max; mUnits = units; + mDefaultValue = defaultValue; } public int getMax() @@ -28,6 +30,11 @@ public class SliderSetting extends SettingsItem { Setting setting = getSetting(); + if (setting == null) + { + return mDefaultValue; + } + if (setting instanceof IntSetting) { IntSetting intSetting = (IntSetting) setting; @@ -52,16 +59,50 @@ public class SliderSetting extends SettingsItem } } - public void setSelectedValue(int selection) + /** + * Write a value to the backing int. If that int was previously null, + * initializes a new one and returns it, so it can be added to the Hashmap. + * + * @param selection New value of the int. + * @return null if overwritten successfully otherwise; a newly created IntSetting. + */ + public IntSetting setSelectedValue(int selection) { - IntSetting setting = (IntSetting) getSetting(); - setting.setValue(selection); + if (getSetting() == null) + { + IntSetting setting = new IntSetting(getKey(), getSection(), selection); + setSetting(setting); + return setting; + } + else + { + IntSetting setting = (IntSetting) getSetting(); + setting.setValue(selection); + return null; + } } - public void setSelectedValue(float selection) + /** + * Write a value to the backing float. If that float was previously null, + * initializes a new one and returns it, so it can be added to the Hashmap. + * + * @param selection New value of the float. + * @return null if overwritten successfully otherwise; a newly created FloatSetting. + */ + public FloatSetting setSelectedValue(float selection) { - FloatSetting setting = (FloatSetting) getSetting(); - setting.setValue(selection); + if (getSetting() == null) + { + FloatSetting setting = new FloatSetting(getKey(), getSection(), selection); + setSetting(setting); + return setting; + } + else + { + FloatSetting setting = (FloatSetting) getSetting(); + setting.setValue(selection); + return null; + } } public String getUnits() diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SubmenuSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SubmenuSetting.java index 63a73caf0a..1e15555cda 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SubmenuSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/settings/view/SubmenuSetting.java @@ -8,7 +8,7 @@ public class SubmenuSetting extends SettingsItem public SubmenuSetting(String key, Setting setting, int titleId, int descriptionId, String menuKey) { - super(key, setting, titleId, descriptionId); + super(key, null, setting, titleId, descriptionId); mMenuKey = menuKey; } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java index 5a7ed0ab34..57923e0e0e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java @@ -20,7 +20,6 @@ import org.dolphinemu.dolphinemu.adapters.PlatformPagerAdapter; import org.dolphinemu.dolphinemu.model.GameProvider; import org.dolphinemu.dolphinemu.ui.platform.PlatformGamesView; import org.dolphinemu.dolphinemu.ui.settings.SettingsActivity; -import org.dolphinemu.dolphinemu.utils.SettingsFile; import org.dolphinemu.dolphinemu.utils.StartupHandler; /** @@ -116,9 +115,9 @@ public final class MainActivity extends AppCompatActivity implements MainView } @Override - public void launchSettingsActivity() + public void launchSettingsActivity(String menuTag) { - SettingsActivity.launch(this, SettingsFile.FILE_NAME_DOLPHIN); + SettingsActivity.launch(this, menuTag); } @Override diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java index 97b7a39f25..c1052fc42a 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java @@ -7,6 +7,7 @@ import org.dolphinemu.dolphinemu.DolphinApplication; import org.dolphinemu.dolphinemu.NativeLibrary; import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.model.GameDatabase; +import org.dolphinemu.dolphinemu.utils.SettingsFile; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; @@ -41,8 +42,12 @@ public final class MainPresenter { switch (itemId) { - case R.id.menu_settings: - mView.launchSettingsActivity(); + case R.id.menu_settings_core: + mView.launchSettingsActivity(SettingsFile.FILE_NAME_DOLPHIN); + return true; + + case R.id.menu_settings_video: + mView.launchSettingsActivity(SettingsFile.FILE_NAME_GFX); return true; case R.id.menu_refresh: diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java index 1d286bebf3..12c8ae832c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java @@ -32,7 +32,7 @@ public interface MainView void refreshFragmentScreenshot(int fragmentPosition); - void launchSettingsActivity(); + void launchSettingsActivity(String menuTag); void launchFileListActivity(); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java index 51b2239118..95e4d04746 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java @@ -113,7 +113,7 @@ public final class TvMainActivity extends Activity implements MainView } @Override - public void launchSettingsActivity() + public void launchSettingsActivity(String menuTag) { SettingsActivity.launch(this, SettingsFile.FILE_NAME_DOLPHIN); } @@ -230,9 +230,13 @@ public final class TvMainActivity extends Activity implements MainView R.drawable.ic_refresh_tv, R.string.grid_menu_refresh)); - rowItems.add(new TvSettingsItem(R.id.menu_settings, - R.drawable.ic_settings_tv, - R.string.grid_menu_settings)); + rowItems.add(new TvSettingsItem(R.id.menu_settings_core, + R.drawable.ic_settings_core_tv, + R.string.grid_menu_core_settings)); + + rowItems.add(new TvSettingsItem(R.id.menu_settings_video, + R.drawable.ic_settings_graphics_tv, + R.string.grid_menu_core_settings)); rowItems.add(new TvSettingsItem(R.id.button_add_directory, R.drawable.ic_add_tv, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java index 662145e57f..07f58024b8 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java @@ -25,7 +25,7 @@ public class SettingsActivityPresenter mView = view; } - public void onCreate(Bundle savedInstanceState, String filename) + public void onCreate(Bundle savedInstanceState, final String filename) { mFileName = filename; @@ -35,14 +35,23 @@ public class SettingsActivityPresenter .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<HashMap<String, SettingSection>>() - { - @Override - public void call(HashMap<String, SettingSection> settingsBySection) - { - mSettingsBySection = settingsBySection; - mView.onSettingsFileLoaded(settingsBySection); - } - }); + { + @Override + public void call(HashMap<String, SettingSection> settingsBySection) + { + mSettingsBySection = settingsBySection; + mView.onSettingsFileLoaded(settingsBySection); + } + }, + new Action1<Throwable>() + { + @Override + public void call(Throwable throwable) + { + Log.error("[SettingsActivityPresenter] Error reading file " + filename + ".ini: "+ throwable.getMessage()); + mView.onSettingsFileLoaded(null); + } + }); mView.showSettingsFragment(mFileName, false); } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java index f386fc94df..bbb9a2ad1a 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java @@ -9,10 +9,12 @@ import android.view.View; import android.view.ViewGroup; import android.widget.SeekBar; import android.widget.TextView; -import android.widget.Toast; import org.dolphinemu.dolphinemu.R; +import org.dolphinemu.dolphinemu.model.settings.BooleanSetting; import org.dolphinemu.dolphinemu.model.settings.FloatSetting; +import org.dolphinemu.dolphinemu.model.settings.IntSetting; +import org.dolphinemu.dolphinemu.model.settings.view.CheckBoxSetting; import org.dolphinemu.dolphinemu.model.settings.view.SettingsItem; import org.dolphinemu.dolphinemu.model.settings.view.SingleChoiceSetting; import org.dolphinemu.dolphinemu.model.settings.view.SliderSetting; @@ -117,6 +119,17 @@ public class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolder> notifyDataSetChanged(); } + public void onBooleanClick(CheckBoxSetting item, int position, boolean checked) + { + BooleanSetting setting = item.setChecked(checked); + notifyItemChanged(position); + + if (setting != null) + { + mView.addSetting(setting); + } + } + public void onSingleChoiceClick(SingleChoiceSetting item) { mClickedItem = item; @@ -162,7 +175,7 @@ public class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolder> public void onSubmenuClick(SubmenuSetting item) { - Toast.makeText(mContext, "Submenu item clicked", Toast.LENGTH_SHORT).show(); + mView.loadSubMenu(item.getMenuKey()); } @Override @@ -174,7 +187,12 @@ public class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolder> int value = getValueForSingleChoiceSelection(scSetting, which); - scSetting.setSelectedValue(value); + IntSetting setting = scSetting.setSelectedValue(value); + if (setting != null) + { + mView.addSetting(setting); + } + closeDialog(); } else if (mClickedItem instanceof SliderSetting) @@ -193,11 +211,19 @@ public class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolder> value = (float) mSeekbarProgress; } - sliderSetting.setSelectedValue(value); + FloatSetting setting = sliderSetting.setSelectedValue(value); + if (setting != null) + { + mView.addSetting(setting); + } } else { - sliderSetting.setSelectedValue(mSeekbarProgress); + IntSetting setting = sliderSetting.setSelectedValue(mSeekbarProgress); + if (setting != null) + { + mView.addSetting(setting); + } } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java index a612233789..50ef668b90 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java @@ -12,6 +12,7 @@ import android.view.ViewGroup; import org.dolphinemu.dolphinemu.BuildConfig; import org.dolphinemu.dolphinemu.R; +import org.dolphinemu.dolphinemu.model.settings.Setting; import org.dolphinemu.dolphinemu.model.settings.SettingSection; import org.dolphinemu.dolphinemu.model.settings.view.SettingsItem; import org.dolphinemu.dolphinemu.ui.DividerItemDecoration; @@ -22,7 +23,7 @@ import java.util.HashMap; public final class SettingsFragment extends Fragment implements SettingsFragmentView { private SettingsFragmentPresenter mPresenter = new SettingsFragmentPresenter(this); - private SettingsActivityView mView; + private SettingsActivityView mActivity; private SettingsAdapter mAdapter; @@ -31,7 +32,7 @@ public final class SettingsFragment extends Fragment implements SettingsFragment { super.onAttach(context); - mView = (SettingsActivityView) context; + mActivity = (SettingsActivityView) context; mPresenter.onAttach(); } @@ -76,7 +77,7 @@ public final class SettingsFragment extends Fragment implements SettingsFragment public void onDetach() { super.onDetach(); - mView = null; + mActivity = null; if (mAdapter != null) { @@ -91,11 +92,11 @@ public final class SettingsFragment extends Fragment implements SettingsFragment } @Override - public void passOptionsToActivity(HashMap<String, SettingSection> settings) + public void passSettingsToActivity(HashMap<String, SettingSection> settings) { - if (mView != null) + if (mActivity != null) { - mView.setSettings(settings); + mActivity.setSettings(settings); } } @@ -105,6 +106,24 @@ public final class SettingsFragment extends Fragment implements SettingsFragment mAdapter.setSettings(settingsList); } + @Override + public void loadSubMenu(String menuKey) + { + mActivity.showSettingsFragment(menuKey, true); + } + + @Override + public void showToastMessage(String message) + { + mActivity.showToastMessage(message); + } + + @Override + public void addSetting(Setting setting) + { + mPresenter.addSetting(setting); + } + public static final String FRAGMENT_TAG = BuildConfig.APPLICATION_ID + ".fragment.settings"; public static final String ARGUMENT_MENU_TAG = FRAGMENT_TAG + ".menu_tag"; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java index b53d7517f9..22bb24a38f 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java @@ -1,12 +1,17 @@ package org.dolphinemu.dolphinemu.ui.settings; import org.dolphinemu.dolphinemu.R; +import org.dolphinemu.dolphinemu.model.settings.BooleanSetting; +import org.dolphinemu.dolphinemu.model.settings.IntSetting; import org.dolphinemu.dolphinemu.model.settings.Setting; import org.dolphinemu.dolphinemu.model.settings.SettingSection; import org.dolphinemu.dolphinemu.model.settings.view.CheckBoxSetting; +import org.dolphinemu.dolphinemu.model.settings.view.HeaderSetting; import org.dolphinemu.dolphinemu.model.settings.view.SettingsItem; import org.dolphinemu.dolphinemu.model.settings.view.SingleChoiceSetting; import org.dolphinemu.dolphinemu.model.settings.view.SliderSetting; +import org.dolphinemu.dolphinemu.model.settings.view.SubmenuSetting; +import org.dolphinemu.dolphinemu.utils.EGLHelper; import org.dolphinemu.dolphinemu.utils.SettingsFile; import java.util.ArrayList; @@ -45,23 +50,22 @@ public class SettingsFragmentPresenter { if (mSettings != null) { - mView.passOptionsToActivity(mSettings); + mView.passSettingsToActivity(mSettings); } } + public void addSetting(Setting setting) + { + mSettings.get(setting.getSection()).putSetting(setting.getKey(), setting); + } + public void setSettings(HashMap<String, SettingSection> settings) { if (mSettingsList == null) { - if (settings != null) - { - mSettings = settings; - } + mSettings = settings; - if (mSettings != null) - { - loadSettingsList(); - } + loadSettingsList(); } else { @@ -77,8 +81,23 @@ public class SettingsFragmentPresenter { case SettingsFile.FILE_NAME_DOLPHIN: addCoreSettings(sl); + break; + + case SettingsFile.FILE_NAME_GFX: + addGraphicsSettings(sl); + break; + + case SettingsFile.SECTION_GFX_ENHANCEMENTS: + addEnhanceSettings(sl); + break; + case SettingsFile.SECTION_GFX_HACKS: + addHackSettings(sl); break; + + default: + mView.showToastMessage("Unimplemented menu."); + return; } mSettingsList = sl; @@ -87,16 +106,187 @@ public class SettingsFragmentPresenter private void addCoreSettings(ArrayList<SettingsItem> sl) { - Setting cpuCore = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_CPU_CORE); - sl.add(new SingleChoiceSetting(cpuCore.getKey(), cpuCore, R.string.cpu_core, 0, R.array.string_emu_cores, R.array.int_emu_cores)); + Setting cpuCore = null; + Setting dualCore = null; + Setting overclockEnable = null; + Setting overclock = null; + + if (mSettings != null) + { + cpuCore = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_CPU_CORE); + dualCore = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_DUAL_CORE); + overclockEnable = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_OVERCLOCK_ENABLE); + overclock = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_OVERCLOCK_PERCENT); + } + else + { + mSettings = new HashMap<>(); + mSettings.put(SettingsFile.SECTION_CORE, new SettingSection(SettingsFile.SECTION_CORE)); + + mView.passSettingsToActivity(mSettings); + } + + // TODO Set default value for cpuCore based on arch. + sl.add(new SingleChoiceSetting(SettingsFile.KEY_CPU_CORE, SettingsFile.SECTION_CORE, R.string.cpu_core, 0, R.array.string_emu_cores, R.array.int_emu_cores, 4, cpuCore)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DUAL_CORE, SettingsFile.SECTION_CORE, R.string.dual_core, R.string.dual_core_descrip, true, dualCore)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_OVERCLOCK_ENABLE, SettingsFile.SECTION_CORE, R.string.overclock_enable, R.string.overclock_enable_description, false, overclockEnable)); + sl.add(new SliderSetting(SettingsFile.KEY_OVERCLOCK_PERCENT, SettingsFile.SECTION_CORE, R.string.overclock_title, 0, 400, "%", 100, overclock)); + + } + + private void addGraphicsSettings(ArrayList<SettingsItem> sl) + { + Setting showFps = null; + + if (mSettings != null) + { + showFps = mSettings.get(SettingsFile.SECTION_GFX_SETTINGS).getSetting(SettingsFile.KEY_SHOW_FPS); + } + else + { + mSettings = new HashMap<>(); + + mSettings.put(SettingsFile.SECTION_GFX_SETTINGS, new SettingSection(SettingsFile.SECTION_GFX_SETTINGS)); + mSettings.put(SettingsFile.SECTION_GFX_ENHANCEMENTS, new SettingSection(SettingsFile.SECTION_GFX_ENHANCEMENTS)); + mSettings.put(SettingsFile.SECTION_GFX_HACKS, new SettingSection(SettingsFile.SECTION_GFX_HACKS)); + + mView.passSettingsToActivity(mSettings); + } + + sl.add(new CheckBoxSetting(SettingsFile.KEY_SHOW_FPS, SettingsFile.SECTION_GFX_SETTINGS, R.string.show_fps, 0, true, showFps)); + + sl.add(new SubmenuSetting(null, null, R.string.enhancements, 0, SettingsFile.SECTION_GFX_ENHANCEMENTS)); + sl.add(new SubmenuSetting(null, null, R.string.hacks, 0, SettingsFile.SECTION_GFX_HACKS)); + } + + private void addEnhanceSettings(ArrayList<SettingsItem> sl) + { + Setting resolution = mSettings.get(SettingsFile.SECTION_GFX_SETTINGS).getSetting(SettingsFile.KEY_INTERNAL_RES); + Setting fsaa = mSettings.get(SettingsFile.SECTION_GFX_SETTINGS).getSetting(SettingsFile.KEY_FSAA); + Setting anisotropic = mSettings.get(SettingsFile.SECTION_GFX_ENHANCEMENTS).getSetting(SettingsFile.KEY_ANISOTROPY); + Setting efbScaledCopy = mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_SCALED_EFB); + Setting perPixel = mSettings.get(SettingsFile.SECTION_GFX_SETTINGS).getSetting(SettingsFile.KEY_PER_PIXEL); + Setting forceFilter = mSettings.get(SettingsFile.SECTION_GFX_ENHANCEMENTS).getSetting(SettingsFile.KEY_FORCE_FILTERING); + Setting disableFog = mSettings.get(SettingsFile.SECTION_GFX_SETTINGS).getSetting(SettingsFile.KEY_DISABLE_FOG); + + sl.add(new SingleChoiceSetting(SettingsFile.KEY_INTERNAL_RES, SettingsFile.SECTION_GFX_SETTINGS, R.string.internal_resolution, R.string.internal_resolution_descrip, R.array.internalResolutionEntries, R.array.internalResolutionValues, 0, resolution)); + sl.add(new SingleChoiceSetting(SettingsFile.KEY_FSAA, SettingsFile.SECTION_GFX_SETTINGS, R.string.FSAA, R.string.FSAA_descrip, R.array.FSAAEntries, R.array.FSAAValues, 0, fsaa)); + sl.add(new SingleChoiceSetting(SettingsFile.KEY_ANISOTROPY, SettingsFile.SECTION_GFX_ENHANCEMENTS, R.string.anisotropic_filtering, R.string.anisotropic_filtering_descrip, R.array.anisotropicFilteringEntries, R.array.anisotropicFilteringValues, 0, anisotropic)); + + // TODO +// Setting shader = mSettings.get(SettingsFile.SECTION_GFX_ENHANCEMENTS).getSetting(SettingsFile.KEY_POST_SHADER) +// sl.add(new SingleChoiceSetting(.getKey(), , R.string., R.string._descrip, R.array., R.array.)); + + sl.add(new CheckBoxSetting(SettingsFile.KEY_SCALED_EFB, SettingsFile.SECTION_GFX_HACKS, R.string.scaled_efb_copy, R.string.scaled_efb_copy_descrip, true, efbScaledCopy)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_PER_PIXEL, SettingsFile.SECTION_GFX_SETTINGS, R.string.per_pixel_lighting, R.string.per_pixel_lighting_descrip, false, perPixel)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_FORCE_FILTERING, SettingsFile.SECTION_GFX_ENHANCEMENTS, R.string.force_texture_filtering, R.string.force_texture_filtering_descrip, false, forceFilter)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DISABLE_FOG, SettingsFile.SECTION_GFX_SETTINGS, R.string.disable_fog, R.string.disable_fog_descrip, false, disableFog)); + + /* + Check if we support stereo + If we support desktop GL then we must support at least OpenGL 3.2 + If we only support OpenGLES then we need both OpenGLES 3.1 and AEP + */ + EGLHelper helper = new EGLHelper(EGLHelper.EGL_OPENGL_ES2_BIT); + + if ((helper.supportsOpenGL() && helper.GetVersion() >= 320) || + (helper.supportsGLES3() && helper.GetVersion() >= 310 && helper.SupportsExtension("GL_ANDROID_extension_pack_es31a"))) + { + sl.add(new SubmenuSetting(null, null, R.string.stereoscopy, 0, SettingsFile.SECTION_STEREOSCOPY)); + } + } + + private void addHackSettings(ArrayList<SettingsItem> sl) + { + int efbCopyMethodValue = getEfbCopyMethodValue(); + int xfbValue = getXfbValue(); + + Setting skipEFB = mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_SKIP_EFB); + Setting ignoreFormat = mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_IGNORE_FORMAT); + IntSetting efbCopyMethod = new IntSetting(SettingsFile.KEY_EFB_COPY_METHOD, null, efbCopyMethodValue); + Setting texCacheAccuracy = mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_TEXCACHE_ACCURACY); + IntSetting xfb = new IntSetting(SettingsFile.KEY_XFB, SettingsFile.SECTION_GFX_HACKS, xfbValue); + Setting fastDepth = mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_FAST_DEPTH); + Setting aspectRatio = mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_ASPECT_RATIO); + + sl.add(new HeaderSetting(null, null, R.string.embedded_frame_buffer, 0)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_SKIP_EFB, SettingsFile.SECTION_GFX_HACKS, R.string.skip_efb_access, R.string.skip_efb_access_descrip, false, skipEFB)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_IGNORE_FORMAT, SettingsFile.SECTION_GFX_HACKS, R.string.ignore_format_changes, R.string.ignore_format_changes_descrip, false, ignoreFormat)); + sl.add(new SingleChoiceSetting(SettingsFile.KEY_EFB_COPY_METHOD, SettingsFile.SECTION_GFX_HACKS, R.string.efb_copy_method, R.string.efb_copy_method_descrip, R.array.efbCopyMethodEntries, R.array.efbCopyMethodValues, 1, efbCopyMethod)); + + sl.add(new HeaderSetting(null, null, R.string.texture_cache, 0)); + sl.add(new SingleChoiceSetting(SettingsFile.KEY_TEXCACHE_ACCURACY, SettingsFile.SECTION_GFX_HACKS, R.string.texture_cache_accuracy, R.string.texture_cache_accuracy_descrip, R.array.textureCacheAccuracyEntries, R.array.textureCacheAccuracyValues, 128, texCacheAccuracy)); + + sl.add(new HeaderSetting(null, null, R.string.external_frame_buffer, 0)); + sl.add(new SingleChoiceSetting(SettingsFile.KEY_XFB, SettingsFile.SECTION_GFX_HACKS, R.string.external_frame_buffer, R.string.external_frame_buffer_descrip, R.array.externalFrameBufferEntries, R.array.externalFrameBufferValues, 0, xfb)); + + sl.add(new HeaderSetting(null, null, R.string.other, 0)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_FAST_DEPTH, SettingsFile.SECTION_GFX_HACKS, R.string.fast_depth_calculation, R.string.fast_depth_calculation_descrip, true, fastDepth)); + sl.add(new SingleChoiceSetting(SettingsFile.KEY_ASPECT_RATIO, SettingsFile.SECTION_GFX_HACKS, R.string.aspect_ratio, R.string.aspect_ratio_descrip, R.array.aspectRatioEntries, R.array.aspectRatioValues, 0, aspectRatio)); + } + + private int getEfbCopyMethodValue() + { + int efbCopyMethodValue; + try + { + boolean efbCopyOn = ((BooleanSetting) mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_EFB_COPY)).getValue(); + boolean efbCopyTexture = ((BooleanSetting) mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_EFB_TEXTURE)).getValue(); + boolean efbCopyCache = ((BooleanSetting) mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_EFB_CACHE)).getValue(); - Setting dualCore = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_DUAL_CORE); - sl.add(new CheckBoxSetting(dualCore.getKey(), dualCore, R.string.dual_core, R.string.dual_core_descrip)); - Setting overclockEnable = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_OVERCLOCK_ENABLE); - sl.add(new CheckBoxSetting(overclockEnable.getKey(), overclockEnable, R.string.overclock_enable, R.string.overclock_enable_description)); + if (!efbCopyOn) + { + efbCopyMethodValue = 0; + } + else if (efbCopyTexture) + { + efbCopyMethodValue = 1; + } + else if (!efbCopyCache) + { + efbCopyMethodValue = 2; + } + else + { + efbCopyMethodValue = 3; + } + } + catch (NullPointerException ex) + { + efbCopyMethodValue = 1; + } + + return efbCopyMethodValue; + } + + private int getXfbValue() + { + int xfbValue; + + try + { + boolean usingXFB = ((BooleanSetting) mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_XFB)).getValue(); + boolean usingRealXFB = ((BooleanSetting) mSettings.get(SettingsFile.SECTION_GFX_HACKS).getSetting(SettingsFile.KEY_XFB_REAL)).getValue(); + + if (!usingXFB) + { + xfbValue = 0; + } + else if (!usingRealXFB) + { + xfbValue = 1; + } + else + { + xfbValue = 2; + } + } + catch (NullPointerException ex) + { + xfbValue = 0; + } - Setting overclock = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_OVERCLOCK_PERCENT); - sl.add(new SliderSetting(overclock.getKey(), overclock, R.string.overclock_title, 0, 400, "%")); + return xfbValue; } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java index cef3d73dff..f5a035eed3 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java @@ -2,6 +2,7 @@ package org.dolphinemu.dolphinemu.ui.settings; import android.app.Activity; +import org.dolphinemu.dolphinemu.model.settings.Setting; import org.dolphinemu.dolphinemu.model.settings.SettingSection; import org.dolphinemu.dolphinemu.model.settings.view.SettingsItem; @@ -12,9 +13,15 @@ public interface SettingsFragmentView { void onSettingsFileLoaded(HashMap<String, SettingSection> settings); - void passOptionsToActivity(HashMap<String, SettingSection> settings); + void passSettingsToActivity(HashMap<String, SettingSection> settings); void showSettingsList(ArrayList<SettingsItem> settingsList); Activity getActivity(); + + void loadSubMenu(String menuKey); + + void showToastMessage(String message); + + void addSetting(Setting setting); } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/viewholder/CheckboxSettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/viewholder/CheckboxSettingViewHolder.java index 0059446bdc..05985cc671 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/viewholder/CheckboxSettingViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/viewholder/CheckboxSettingViewHolder.java @@ -51,7 +51,7 @@ public class CheckBoxSettingViewHolder extends SettingViewHolder public void onClick(View clicked) { mCheckbox.toggle(); - mItem.setChecked(mCheckbox.isChecked()); - getAdapter().notifyItemChanged(getAdapterPosition()); + + getAdapter().onBooleanClick(mItem, getAdapterPosition(), mCheckbox.isChecked()); } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java index 15ce0a7e36..5bfa678098 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java @@ -36,39 +36,43 @@ public final class SettingsFile public static final String SECTION_GFX_ENHANCEMENTS = "Enhancements"; public static final String SECTION_GFX_HACKS = "Hacks"; - - public static final String KEY_CPU_CORE= "CPUCore"; - public static final String KEY_DUAL_CORE= "CPUThread"; - public static final String KEY_OVERCLOCK_ENABLE= "OverclockEnable"; - public static final String KEY_OVERCLOCK_PERCENT= "Overclock"; - public static final String KEY_VIDEO_BACKEND= "GFXBackend"; - - public static final String KEY_SHOW_FPS= "ShowFPS"; - public static final String KEY_INTERNAL_RES= "EFBScale"; - public static final String KEY_FSAA= "MSAA"; - public static final String KEY_ANISOTROPY= "MaxAnisotropy"; - public static final String KEY_POST_SHADER= "PostProcessingShader"; - public static final String KEY_SCALED_EFB= "EFBScaledCopy"; - public static final String KEY_PER_PIXEL= "EnablePixelLighting"; - public static final String KEY_FORCE_FILTERING= "ForceFiltering"; - public static final String KEY_DISABLE_FOG= "DisableFog"; - - public static final String KEY_STEREO_MODE= "StereoMode"; - public static final String KEY_STEREO_DEPTH= "StereoDepth"; - public static final String KEY_STEREO_CONV= "StereoConvergencePercentage"; - public static final String KEY_STEREO_SWAP= "StereoSwapEyes"; - - public static final String KEY_SKIP_EFB= "EFBAccessEnable"; - public static final String KEY_IGNORE_FORMAT= "EFBEmulateFormatChanges"; - public static final String KEY_EFB_COPY= "EFBCopyEnable"; - public static final String KEY_EFB_TEXTURE= "EFBToTextureEnable"; - public static final String KEY_EFB_CACHE= "EFBCopyCacheEnable"; - public static final String KEY_TEXCACHE_ACCURACY= "SafeTextureCacheColorSamples"; - public static final String KEY_XFB= "UseXFB"; - public static final String KEY_XFB_REAL= "UseRealXFB"; + public static final String SECTION_STEREOSCOPY = "Stereoscopy"; + + public static final String KEY_CPU_CORE = "CPUCore"; + public static final String KEY_DUAL_CORE = "CPUThread"; + public static final String KEY_OVERCLOCK_ENABLE = "OverclockEnable"; + public static final String KEY_OVERCLOCK_PERCENT = "Overclock"; + public static final String KEY_VIDEO_BACKEND = "GFXBackend"; + + public static final String KEY_SHOW_FPS = "ShowFPS"; + public static final String KEY_INTERNAL_RES = "EFBScale"; + public static final String KEY_FSAA = "MSAA"; + public static final String KEY_ANISOTROPY = "MaxAnisotropy"; + public static final String KEY_POST_SHADER = "PostProcessingShader"; + public static final String KEY_SCALED_EFB = "EFBScaledCopy"; + public static final String KEY_PER_PIXEL = "EnablePixelLighting"; + public static final String KEY_FORCE_FILTERING = "ForceFiltering"; + public static final String KEY_DISABLE_FOG = "DisableFog"; + + public static final String KEY_STEREO_MODE = "StereoMode"; + public static final String KEY_STEREO_DEPTH = "StereoDepth"; + public static final String KEY_STEREO_CONV = "StereoConvergencePercentage"; + public static final String KEY_STEREO_SWAP = "StereoSwapEyes"; + + public static final String KEY_SKIP_EFB = "EFBAccessEnable"; + public static final String KEY_IGNORE_FORMAT = "EFBEmulateFormatChanges"; + public static final String KEY_EFB_COPY = "EFBCopyEnable"; + public static final String KEY_EFB_TEXTURE = "EFBToTextureEnable"; + public static final String KEY_EFB_CACHE = "EFBCopyCacheEnable"; + public static final String KEY_TEXCACHE_ACCURACY = "SafeTextureCacheColorSamples"; + public static final String KEY_XFB = "UseXFB"; + public static final String KEY_XFB_REAL = "UseRealXFB"; public static final String KEY_FAST_DEPTH= "FastDepthCalc"; public static final String KEY_ASPECT_RATIO= "AspectRatio"; + // Internal only, not actually found in settings file. + public static final String KEY_EFB_COPY_METHOD = "EFBCopyMethod"; + private SettingsFile() { } @@ -206,7 +210,7 @@ public final class SettingsFile { int valueAsInt = Integer.valueOf(value); - return new IntSetting(key, current, valueAsInt); + return new IntSetting(key, current.getName(), valueAsInt); } catch (NumberFormatException ex) { @@ -216,7 +220,7 @@ public final class SettingsFile { float valueAsFloat = Float.valueOf(value); - return new FloatSetting(key, current, valueAsFloat); + return new FloatSetting(key, current.getName(), valueAsFloat); } catch (NumberFormatException ex) { @@ -225,11 +229,11 @@ public final class SettingsFile switch (value) { case "True": - return new BooleanSetting(key, current, true); + return new BooleanSetting(key, current.getName(), true); case "False": - return new BooleanSetting(key, current, false); + return new BooleanSetting(key, current.getName(), false); default: - return new StringSetting(key, current, value); + return new StringSetting(key, current.getName(), value); } } |
