add more and fix default buttons for R77

add rewind/unwind events
improve R77HelpDialog
This commit is contained in:
thrust26 2019-05-05 11:18:49 +02:00
parent 60260843ff
commit 977359aec9
8 changed files with 109 additions and 25 deletions

View File

@ -325,6 +325,7 @@ void PhysicalJoystickHandler::setStickDefaultMapping(int stick,
setDefaultBtn(stick, 2, Event::CmdMenuMode);
setDefaultBtn(stick, 3, Event::OptionsMenuMode);
setDefaultBtn(stick, 4, Event::LauncherMode);
setDefaultBtn(stick, 5, Event::Rewind10);
#endif
break;
default:
@ -340,9 +341,10 @@ void PhysicalJoystickHandler::setStickDefaultMapping(int stick,
// joystick (assume buttons zero..three)
setDefaultBtn( stick, 0, Event::UISelect );
setDefaultBtn( stick, 1, Event::UICancel );
setDefaultBtn( stick, 2, Event::UITabPrev );
setDefaultBtn( stick, 3, Event::UITabNext );
setDefaultBtn( stick, 1, Event::UIOK );
setDefaultBtn( stick, 2, Event::UITabNext);
setDefaultBtn( stick, 3, Event::UITabPrev );
setDefaultBtn( stick, 5, Event::UICancel);
setDefaultHat( stick, 0, JoyHat::LEFT, Event::UINavPrev );
setDefaultHat( stick, 0, JoyHat::RIGHT, Event::UINavNext );

View File

@ -379,7 +379,6 @@ bool PhysicalKeyboardHandler::handleAltEvent(StellaKey key, StellaMod mod, bool
switch(key)
{
case KBDK_LEFT: // Alt-left(-shift) rewinds 1(10) states
//if (!myEvent.getKeys()[KBDK_SPACE])
myHandler.enterTimeMachineMenuMode((StellaModTest::isShift(mod) && pressed) ? 10 : 1, false);
break;

View File

@ -75,6 +75,7 @@ class Event
ChangeState, LoadState, SaveState, TakeSnapshot, Quit,
PauseMode, OptionsMenuMode, CmdMenuMode, TimeMachineMode, DebuggerMode, LauncherMode,
Fry, VolumeDecrease, VolumeIncrease, SoundToggle, VidmodeDecrease, VidmodeIncrease,
Rewind, Unwind,
UIUp, UIDown, UILeft, UIRight, UIHome, UIEnd, UIPgUp, UIPgDown,
UISelect, UINavPrev, UINavNext, UIOK, UICancel, UIPrevDir,

View File

@ -414,6 +414,14 @@ void EventHandler::handleEvent(Event::Type event, bool pressed)
if(pressed) myOSystem.state().loadState();
return;
case Event::Rewind:
if (pressed) myOSystem.state().rewindStates();
return;
case Event::Unwind:
if (pressed) myOSystem.state().unwindStates();
return;
case Event::TakeSnapshot:
if(pressed) myOSystem.frameBuffer().tiaSurface().saveSnapShot();
return;
@ -1327,6 +1335,8 @@ EventHandler::ActionList EventHandler::ourEmulActionList[EMUL_ACTIONLIST_SIZE] =
{ Event::OptionsMenuMode, "Enter options menu UI", "", false },
{ Event::CmdMenuMode, "Toggle command menu UI", "", false },
{ Event::TimeMachineMode, "Toggle time machine UI", "", false },
{ Event::Rewind, "Rewind game", "", false },
{ Event::Unwind, "Unwind game", "", false },
{ Event::DebuggerMode, "Toggle debugger mode", "", false },
{ Event::LauncherMode, "Enter ROM launcher", "", false },
{ Event::Quit, "Quit", "", false },

View File

@ -363,7 +363,7 @@ class EventHandler
static constexpr Int32
COMBO_SIZE = 16,
EVENTS_PER_COMBO = 8,
EMUL_ACTIONLIST_SIZE = 83 + COMBO_SIZE,
EMUL_ACTIONLIST_SIZE = 85 + COMBO_SIZE,
MENU_ACTIONLIST_SIZE = 16
;

View File

@ -87,6 +87,13 @@ R77HelpDialog::R77HelpDialog(OSystem& osystem, DialogContainer& parent,
addToFocusList(wid);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void R77HelpDialog::loadConfig()
{
displayInfo();
setFocus(getFocusList()[1]); // skip disabled 'Previous' button
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void R77HelpDialog::updateStrings(uInt8 page, uInt8 lines, string& title)
{
@ -107,20 +114,22 @@ void R77HelpDialog::updateStrings(uInt8 page, uInt8 lines, string& title)
switch (page)
{
case 1:
title = "Emulation commands";
title = "\\C\\c5Emulation commands";
ADD_BIND("The joystic", "ks work nor", "mal and all console");
ADD_BIND("buttons as ", "labeled exc", "ept of the following:");
ADD_BIND();
ADD_BIND("Joystick", "Button", "Command");
ADD_LINE();
ADD_BIND("Button 3", "4:3,16:9", "Open command dialog");
ADD_BIND("Button 4", "-", "Open settings");
ADD_BIND("Button 5", "FRY", "Return to launcher");
ADD_BIND("\\c2Button 3", "4:3,16:9", "Open command dialog");
ADD_BIND("\\c2Button 4", "\\c2-", "Open settings");
ADD_BIND("\\c2Button 5", "FRY", "Return to launcher");
ADD_BIND("\\c2Button 6", "-", "Rewind game");
ADD_BIND("\\c2Button 8", "MODE", "Select");
ADD_BIND("\\c2Button 9", "RESET", "Reset");
break;
case 2:
title = "Launcher commands";
title = "\\C\\c5Launcher commands";
ADD_BIND("Joystick", "Button", "Command");
ADD_LINE();
ADD_BIND("Up", "SAVE", "Previous game");
@ -128,26 +137,27 @@ void R77HelpDialog::updateStrings(uInt8 page, uInt8 lines, string& title)
ADD_BIND("Left", "LOAD", "Page up");
ADD_BIND("Right", "MODE", "Page down");
ADD_BIND("Button 1", "SKILL P1", "Start selected game");
ADD_BIND("Button 2", "SKILL P2", "Open power-on options");
ADD_BIND("Button 4", "Color,B/W", "Open settings");
ADD_BIND("\\c2Button 2", "SKILL P2", "Open power-on options");
ADD_BIND("\\c2Button 4", "Color,B/W", "Open settings");
break;
case 3:
title = "Dialog commands";
title = "\\C\\c5Dialog commands";
ADD_BIND("Joystick", "Button", "Command");
ADD_LINE();
ADD_BIND("Up", "SAVE", "Increase current setting");
ADD_BIND("Down", "RESET", "Decrease current setting");
ADD_BIND("Left", "LOAD", "Previous dialog element");
ADD_BIND("Right", "MODE", "Next dialog element");
ADD_BIND("Button 1", "SKILL P1", "Select");
ADD_BIND("Button 2", "SKILL P2", "Cancel dialog");
ADD_BIND("Button 3", "4:3,16:9", "Previous tab");
ADD_BIND("Button 4", "FRY", "Next tab");
ADD_BIND("Button 1", "SKILL P1", "Select element");
ADD_BIND("\\c2Button 2", "SKILL P2", "OK");
ADD_BIND("\\c2Button 3", "4:3,16:9", "Previous tab");
ADD_BIND("\\c2Button 4", "FRY", "Next tab");
ADD_BIND("\\c2Button 6", "\\c2-", "Cancel");
break;
case 4:
title = "All commands";
title = "\\C\\c5All commands";
ADD_BIND();
ADD_BIND("Remapped Ev", "ents", "");
ADD_BIND();
@ -169,15 +179,75 @@ void R77HelpDialog::displayInfo()
string titleStr;
updateStrings(myPage, LINES_PER_PAGE, titleStr);
myTitle->setLabel(titleStr);
formatWidget(titleStr, myTitle);
for (uInt8 i = 0; i < LINES_PER_PAGE; ++i)
{
myJoy[i]->setLabel(myJoyStr[i]);
myBtn[i]->setLabel(myBtnStr[i]);
myDesc[i]->setLabel(myDescStr[i]);
formatWidget(myJoyStr[i], myJoy[i]);
formatWidget(myBtnStr[i], myBtn[i]);
formatWidget(myDescStr[i], myDesc[i]);
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void R77HelpDialog::formatWidget(const string& label, StaticTextWidget* widget)
{
const char* str = label.c_str();
TextAlign align = TextAlign::Left;
ColorId color = kTextColor;
while (str[0] == '\\')
{
switch (str[1])
{
case 'C':
align = TextAlign::Center;
break;
case 'L':
align = TextAlign::Left;
break;
case 'R':
align = TextAlign::Right;
break;
case 'c':
switch (str[2])
{
case '0':
color = kTextColor;
break;
case '1':
color = kTextColorHi;
break;
case '2':
color = kColor;
break;
case '3':
color = kShadowColor;
break;
case '4':
color = kBGColor;
break;
case '5':
color = kTextColorEm;
break;
default:
break;
}
str++;
break;
default:
break;
}
str += 2;
}
widget->setAlign(align);
widget->setTextColor(color);
widget->setLabel(str);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void R77HelpDialog::handleCommand(CommandSender * sender, int cmd,
int data, int id)

View File

@ -37,10 +37,11 @@ class R77HelpDialog : public Dialog
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
void updateStrings(uInt8 page, uInt8 lines, string& title);
void displayInfo();
void loadConfig() override { displayInfo(); }
void formatWidget(const string& label, StaticTextWidget* widget);
void loadConfig() override;
private:
static constexpr uInt32 LINES_PER_PAGE = 10;
static constexpr uInt32 LINES_PER_PAGE = 11;
ButtonWidget* myNextButton;
ButtonWidget* myPrevButton;

View File

@ -23,6 +23,7 @@
#include "NTSCFilter.hxx"
#include "PopUpWidget.hxx"
#include "MessageBox.hxx"
// FIXME - use the R77 define in the final release
// use the '1' define for testing
#if defined(RETRON77)