mirror of
https://github.com/Marat-Tanalin/bsnes-mt.git
synced 2025-04-02 10:21:42 -04:00
167 lines
No EOL
5.5 KiB
C++
167 lines
No EOL
5.5 KiB
C++
/* MT. */
|
|
#include "bsnes-mt/translations.h"
|
|
|
|
namespace bmt = bsnesMt::translations;
|
|
/* /MT. */
|
|
|
|
auto EmulatorSettings::create() -> void {
|
|
setCollapsible();
|
|
setVisible(false);
|
|
|
|
optionsLabel.setText(bmt::get("Settings.Emulator.General").data()).setFont(Font().setBold());
|
|
|
|
warnOnUnverifiedGames.setText(bmt::get("Settings.Emulator.General.warnOnUnverifiedGames").data())
|
|
.setChecked(settings.emulator.warnOnUnverifiedGames)
|
|
.onToggle([&] {
|
|
settings.emulator.warnOnUnverifiedGames = warnOnUnverifiedGames.checked();
|
|
});
|
|
|
|
autoSaveMemory.setText(bmt::get("Settings.Emulator.General.autoSaveMemory").data())
|
|
.setChecked(settings.emulator.autoSaveMemory.enable)
|
|
.onToggle([&] {
|
|
settings.emulator.autoSaveMemory.enable = autoSaveMemory.checked();
|
|
});
|
|
|
|
autoSaveStateOnUnload.setText(bmt::get("Settings.Emulator.General.autoSaveStateOnUnload").data())
|
|
.setChecked(settings.emulator.autoSaveStateOnUnload)
|
|
.onToggle([&] {
|
|
settings.emulator.autoSaveStateOnUnload = autoSaveStateOnUnload.checked();
|
|
|
|
if (autoSaveStateOnUnload.checked()) {
|
|
autoLoadStateOnLoad.setEnabled(true);
|
|
}
|
|
else {
|
|
autoLoadStateOnLoad.setEnabled(false).setChecked(false).doToggle();
|
|
}
|
|
})
|
|
.doToggle();
|
|
|
|
autoLoadStateOnLoad.setText(bmt::get("Settings.Emulator.General.AutoResumeOnLoad").data())
|
|
.setChecked(settings.emulator.autoLoadStateOnLoad)
|
|
.onToggle([&] {
|
|
settings.emulator.autoLoadStateOnLoad = autoLoadStateOnLoad.checked();
|
|
});
|
|
|
|
nativeFileDialogs.setText(bmt::get("Settings.Emulator.General.UseNativeFileDialogs").data())
|
|
.setChecked(settings.general.nativeFileDialogs)
|
|
.onToggle([&] {
|
|
settings.general.nativeFileDialogs = nativeFileDialogs.checked();
|
|
});
|
|
|
|
Color spacerColor = {192, 192, 192}; // MT.
|
|
|
|
optionsSpacer.setColor(spacerColor);
|
|
|
|
fastForwardLabel.setText(bmt::get("Settings.Emulator.FastForward").data()).setFont(Font().setBold());
|
|
|
|
char colon = ':';
|
|
|
|
frameSkipLabel.setText({bmt::get("Settings.Emulator.FastForward.FrameSkip").data(), colon})
|
|
.setToolTip(bmt::get("Settings.Emulator.FastForward.FrameSkip.tooltip").data());
|
|
|
|
/* MT. */
|
|
string noneString = bmt::get("Common.None").data();
|
|
string framesString = bmt::get("Settings.Emulator.FastForward.FrameSkip.Frames").data();
|
|
string frames2to4String = bmt::get("Settings.Emulator.FastForward.FrameSkip.Frames2to4").data();
|
|
/* /MT. */
|
|
|
|
frameSkipAmount.append(ComboButtonItem().setText(noneString));
|
|
frameSkipAmount.append(ComboButtonItem().setText({"1 ", bmt::get("Settings.Common.FrameLowercase").data()}));
|
|
|
|
/* MT. */
|
|
for (uint8_t i = 2; i < 5; i++) {
|
|
frameSkipAmount.append(ComboButtonItem().setText(string(frames2to4String).replace('|', i)));
|
|
}
|
|
|
|
for (uint8_t i = 5; i < 10; i++) {
|
|
frameSkipAmount.append(ComboButtonItem().setText(string(framesString).replace('|', i)));
|
|
}
|
|
/* /MT. */
|
|
|
|
frameSkipAmount.item(settings.fastForward.frameSkip).setSelected();
|
|
|
|
frameSkipAmount.onChange([&] {
|
|
settings.fastForward.frameSkip = frameSkipAmount.selected().offset();
|
|
});
|
|
|
|
limiterLabel.setText({bmt::get("Settings.Emulator.FastForward.Limiter").data(), colon})
|
|
.setToolTip(bmt::get("Settings.Emulator.FastForward.Limiter.tooltip").data());
|
|
|
|
limiterAmount.append(ComboButtonItem().setText(noneString));
|
|
|
|
/* MT. */
|
|
for (uint8_t i = 2; i < 9; i++) {
|
|
limiterAmount.append(ComboButtonItem().setText({100 * i, '%'}));
|
|
}
|
|
/* /MT. */
|
|
|
|
auto limiter = settings.fastForward.limiter; // MT.
|
|
|
|
limiterAmount.item(limiter == 0 ? 0 : limiter - 1).setSelected(); // MT.
|
|
|
|
limiterAmount.onChange([&] {
|
|
auto index = limiterAmount.selected().offset();
|
|
settings.fastForward.limiter = index == 0 ? 0 : index + 1; // MT.
|
|
});
|
|
|
|
fastForwardMute.setText(bmt::get("Settings.Emulator.FastForward.mute").data())
|
|
.setChecked(settings.fastForward.mute)
|
|
.onToggle([&] {
|
|
settings.fastForward.mute = fastForwardMute.checked();
|
|
});
|
|
|
|
fastForwardSpacer.setColor(spacerColor);
|
|
|
|
rewindLabel.setText(bmt::get("Settings.Emulator.Rewind").data()).setFont(Font().setBold());
|
|
|
|
string everyString = bmt::get("Settings.Emulator.Rewind.Frequency.everyFrames").data(); // MT.
|
|
|
|
rewindFrequencyLabel.setText({bmt::get("Settings.Emulator.Rewind.Frequency").data(), colon});
|
|
rewindFrequencyOption.append(ComboButtonItem().setText(bmt::get("Common.Disabled").data()));
|
|
|
|
/* MT. */
|
|
for (uint8_t number = 10; number < 70; number += 10) {
|
|
rewindFrequencyOption.append(ComboButtonItem().setText(string(everyString).replace('|', number)));
|
|
}
|
|
/* /MT. */
|
|
|
|
auto frequency = settings.rewind.frequency; // MT.
|
|
|
|
rewindFrequencyOption.item(frequency == 0 ? 0 : frequency / 10).setSelected(); // MT.
|
|
|
|
rewindFrequencyOption.onChange([&] {
|
|
settings.rewind.frequency = rewindFrequencyOption.selected().offset() * 10;
|
|
program.rewindReset();
|
|
});
|
|
|
|
string statesString = bmt::get("Settings.Emulator.Rewind.Length.states").data(); // MT.
|
|
|
|
rewindLengthLabel.setText({bmt::get("Settings.Emulator.Rewind.Length").data(), colon});
|
|
|
|
auto length = settings.rewind.length; // MT.
|
|
|
|
/* MT. */
|
|
for (uint8_t i = 0, j = 1; i < 6; i++) {
|
|
auto curLength = j * 10;
|
|
auto item = ComboButtonItem().setText(string(statesString).replace('|', curLength));
|
|
|
|
if (curLength == length) {
|
|
item.setSelected();
|
|
}
|
|
|
|
rewindLengthOption.append(item);
|
|
j *= 2;
|
|
}
|
|
/* /MT. */
|
|
|
|
rewindLengthOption.onChange([&] {
|
|
settings.rewind.length = 10 << rewindLengthOption.selected().offset();
|
|
program.rewindReset();
|
|
});
|
|
|
|
rewindMute.setText(bmt::get("Settings.Emulator.Rewind.mute").data())
|
|
.setChecked(settings.rewind.mute)
|
|
.onToggle([&] {
|
|
settings.rewind.mute = rewindMute.checked();
|
|
});
|
|
} |