[Scummvm-git-logs] scummvm master -> 36ef10ffe61035b92b473fecc3909f2c4473ad34
dreammaster
paulfgilbert at gmail.com
Wed Apr 15 03:20:47 UTC 2020
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
1d43f7a132 ULTIMA4: Descend to keybinder
4afd52df8f ULTIMA4: Music toggle to keybinder
fda93e493b ULTIMA4: Speed keys to keybinder
36ef10ffe6 ULTIMA4: Party character selection keybindings
Commit: 1d43f7a1324ccb688672cab05174ff575395c001
https://github.com/scummvm/scummvm/commit/1d43f7a1324ccb688672cab05174ff575395c001
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-04-14T20:19:35-07:00
Commit Message:
ULTIMA4: Descend to keybinder
Changed paths:
engines/ultima/ultima4/core/debugger.cpp
engines/ultima/ultima4/core/debugger.h
engines/ultima/ultima4/game/game.cpp
engines/ultima/ultima4/meta_engine.cpp
engines/ultima/ultima4/meta_engine.h
diff --git a/engines/ultima/ultima4/core/debugger.cpp b/engines/ultima/ultima4/core/debugger.cpp
index 12263bdf00..1eb76bb11a 100644
--- a/engines/ultima/ultima4/core/debugger.cpp
+++ b/engines/ultima/ultima4/core/debugger.cpp
@@ -431,6 +431,34 @@ bool Debugger::cmdClimb(int argc, const char **argv) {
return isDebuggerActive();
}
+bool Debugger::cmdDescend(int argc, const char **argv) {
+ // unload the map for the second level of Lord British's Castle. The reason
+ // why is that Lord British's farewell is dependent on the number of party members.
+ // Instead of just redoing the dialog, it's a bit severe, but easier to unload the
+ // whole level.
+ bool cleanMap = (g_context->_party->size() == 1 && g_context->_location->_map->_id == 100);
+ if (!usePortalAt(g_context->_location, g_context->_location->_coords, ACTION_DESCEND)) {
+ if (g_context->_transportContext == TRANSPORT_BALLOON) {
+ print("Land Balloon");
+ if (!g_context->_party->isFlying())
+ print("%cAlready Landed!%c", FG_GREY, FG_WHITE);
+ else if (g_context->_location->_map->tileTypeAt(g_context->_location->_coords, WITH_OBJECTS)->canLandBalloon()) {
+ g_ultima->_saveGame->_balloonState = 0;
+ g_context->_opacity = 1;
+ } else {
+ print("%cNot Here!%c", FG_GREY, FG_WHITE);
+ }
+ } else {
+ print("%cDescend what?%c", FG_GREY, FG_WHITE);
+ }
+ } else {
+ if (cleanMap)
+ mapMgr->unloadMap(100);
+ }
+
+ return isDebuggerActive();
+}
+
bool Debugger::cmdEnter(int argc, const char **argv) {
if (!usePortalAt(g_context->_location, g_context->_location->_coords, ACTION_ENTER)) {
if (!g_context->_location->_map->portalAt(g_context->_location->_coords, ACTION_ENTER))
diff --git a/engines/ultima/ultima4/core/debugger.h b/engines/ultima/ultima4/core/debugger.h
index b35e513a20..e9d82c2115 100644
--- a/engines/ultima/ultima4/core/debugger.h
+++ b/engines/ultima/ultima4/core/debugger.h
@@ -103,6 +103,11 @@ private:
*/
bool cmdClimb(int argc, const char **argv);
+ /**
+ * Descend
+ */
+ bool cmdDescend(int argc, const char **argv);
+
/**
* Enter location
*/
diff --git a/engines/ultima/ultima4/game/game.cpp b/engines/ultima/ultima4/game/game.cpp
index 69c45c44ef..2dc4d78acf 100644
--- a/engines/ultima/ultima4/game/game.cpp
+++ b/engines/ultima/ultima4/game/game.cpp
@@ -659,29 +659,6 @@ bool GameController::keyPressed(int key) {
endTurn = false;
break;
- case 'd': {
- // unload the map for the second level of Lord British's Castle. The reason
- // why is that Lord British's farewell is dependent on the number of party members.
- // Instead of just redoing the dialog, it's a bit severe, but easier to unload the
- // whole level.
- bool cleanMap = (g_context->_party->size() == 1 && g_context->_location->_map->_id == 100);
- if (!usePortalAt(g_context->_location, g_context->_location->_coords, ACTION_DESCEND)) {
- if (g_context->_transportContext == TRANSPORT_BALLOON) {
- screenMessage("Land Balloon\n");
- if (!g_context->_party->isFlying())
- screenMessage("%cAlready Landed!%c\n", FG_GREY, FG_WHITE);
- else if (g_context->_location->_map->tileTypeAt(g_context->_location->_coords, WITH_OBJECTS)->canLandBalloon()) {
- g_ultima->_saveGame->_balloonState = 0;
- g_context->_opacity = 1;
- } else screenMessage("%cNot Here!%c\n", FG_GREY, FG_WHITE);
- } else screenMessage("%cDescend what?%c\n", FG_GREY, FG_WHITE);
- } else {
- if (cleanMap)
- mapMgr->unloadMap(100);
- }
- break;
- }
-
case 'v':
if (g_music->toggle())
screenMessage("Volume On!\n");
diff --git a/engines/ultima/ultima4/meta_engine.cpp b/engines/ultima/ultima4/meta_engine.cpp
index ee7825c7a7..1660cfdebf 100644
--- a/engines/ultima/ultima4/meta_engine.cpp
+++ b/engines/ultima/ultima4/meta_engine.cpp
@@ -47,6 +47,7 @@ static const KeybindingRecord KEYS[] = {
{ KEYBIND_BOARD, "BOARD", "Board", "board", "b", nullptr },
{ KEYBIND_CAST, "CAST", "Cast", "cast", "c", nullptr },
{ KEYBIND_CLIMB, "CLIMB", "Climb", "climb", "k", nullptr },
+ { KEYBIND_DESCEND, "DESCEND", "Descend", "descend", "d", nullptr },
{ KEYBIND_ENTER, "ENTER", "Enter", "enter", "e", nullptr },
{ KEYBIND_EXIT, "EXIT", "Exit", "exit", "x", nullptr },
{ KEYBIND_FIRE, "FIRE", "Fire", "fire", "f", nullptr },
diff --git a/engines/ultima/ultima4/meta_engine.h b/engines/ultima/ultima4/meta_engine.h
index 44ddc026be..b439be1791 100644
--- a/engines/ultima/ultima4/meta_engine.h
+++ b/engines/ultima/ultima4/meta_engine.h
@@ -31,12 +31,13 @@ namespace Ultima4 {
enum KeybindingAction {
KEYBIND_UP, KEYBIND_DOWN, KEYBIND_LEFT, KEYBIND_RIGHT,
KEYBIND_ATTACK, KEYBIND_BOARD, KEYBIND_CAST, KEYBIND_CLIMB,
- KEYBIND_ENTER, KEYBIND_EXIT, KEYBIND_FIRE, KEYBIND_GET,
- KEYBIND_HOLE_UP, KEYBIND_IGNITE, KEYBIND_JIMMY, KEYBIND_LOCATE,
- KEYBIND_MIX, KEYBIND_NEW_ORDER, KEYBIND_OPEN_DOOR, KEYBIND_PASS,
- KEYBIND_PEER, KEYBIND_QUIT_SAVE, KEYBIND_READY_WEAPON,
- KEYBIND_SEARCH, KEYBIND_STATS, KEYBIND_TALK, KEYBIND_USE,
- KEYBIND_WEAR, KEYBIND_YELL,
+ KEYBIND_DESCEND, KEYBIND_ENTER, KEYBIND_EXIT, KEYBIND_FIRE,
+ KEYBIND_GET, KEYBIND_HOLE_UP, KEYBIND_IGNITE, KEYBIND_JIMMY,
+ KEYBIND_LOCATE, KEYBIND_MIX, KEYBIND_NEW_ORDER,
+ KEYBIND_OPEN_DOOR, KEYBIND_PASS, KEYBIND_PEER,
+ KEYBIND_QUIT_SAVE, KEYBIND_READY_WEAPON, KEYBIND_SEARCH,
+ KEYBIND_STATS, KEYBIND_TALK, KEYBIND_USE, KEYBIND_WEAR,
+ KEYBIND_YELL,
KEYBIND_NONE
};
Commit: 4afd52df8fabb355c9d284f97963eb074262113e
https://github.com/scummvm/scummvm/commit/4afd52df8fabb355c9d284f97963eb074262113e
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-04-14T20:19:35-07:00
Commit Message:
ULTIMA4: Music toggle to keybinder
Changed paths:
engines/ultima/ultima4/core/debugger.cpp
engines/ultima/ultima4/core/debugger.h
engines/ultima/ultima4/game/game.cpp
engines/ultima/ultima4/meta_engine.cpp
engines/ultima/ultima4/meta_engine.h
diff --git a/engines/ultima/ultima4/core/debugger.cpp b/engines/ultima/ultima4/core/debugger.cpp
index 1eb76bb11a..935e0327be 100644
--- a/engines/ultima/ultima4/core/debugger.cpp
+++ b/engines/ultima/ultima4/core/debugger.cpp
@@ -63,6 +63,7 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("jimmy", WRAP_METHOD(Debugger, cmdJimmy));
registerCmd("locate", WRAP_METHOD(Debugger, cmdLocate));
registerCmd("mix", WRAP_METHOD(Debugger, cmdMixReagents));
+ registerCmd("musicToggle", WRAP_METHOD(Debugger, cmdMusicToggle));
registerCmd("open", WRAP_METHOD(Debugger, cmdOpenDoor));
registerCmd("order", WRAP_METHOD(Debugger, cmdNewOrder));
registerCmd("pass", WRAP_METHOD(Debugger, cmdPass));
@@ -702,6 +703,16 @@ bool Debugger::cmdMixReagents(int argc, const char **argv) {
return isDebuggerActive();
}
+bool Debugger::cmdMusicToggle(int argc, const char **argv) {
+ if (g_music->toggle())
+ print("Volume On!");
+ else
+ print("Volume Off!");
+
+ dontEndTurn();
+ return isDebuggerActive();
+}
+
bool Debugger::cmdNewOrder(int argc, const char **argv) {
printN("New Order!\nExchange # ");
diff --git a/engines/ultima/ultima4/core/debugger.h b/engines/ultima/ultima4/core/debugger.h
index e9d82c2115..ae71406f06 100644
--- a/engines/ultima/ultima4/core/debugger.h
+++ b/engines/ultima/ultima4/core/debugger.h
@@ -153,6 +153,11 @@ private:
*/
bool cmdMixReagents(int argc, const char **argv);
+ /**
+ * Toggles music
+ */
+ bool cmdMusicToggle(int argc, const char **argv);
+
/**
* Exchanges the position of two players in the party. Prompts the
* user for the player numbers.
diff --git a/engines/ultima/ultima4/game/game.cpp b/engines/ultima/ultima4/game/game.cpp
index 2dc4d78acf..005eae0146 100644
--- a/engines/ultima/ultima4/game/game.cpp
+++ b/engines/ultima/ultima4/game/game.cpp
@@ -659,14 +659,6 @@ bool GameController::keyPressed(int key) {
endTurn = false;
break;
- case 'v':
- if (g_music->toggle())
- screenMessage("Volume On!\n");
- else
- screenMessage("Volume Off!\n");
- endTurn = false;
- break;
-
case 'c' + U4_ALT:
if (settings._debug && g_context->_location->_map->isWorldMap()) {
/* first teleport to the abyss */
diff --git a/engines/ultima/ultima4/meta_engine.cpp b/engines/ultima/ultima4/meta_engine.cpp
index 1660cfdebf..9c2159ece8 100644
--- a/engines/ultima/ultima4/meta_engine.cpp
+++ b/engines/ultima/ultima4/meta_engine.cpp
@@ -66,6 +66,7 @@ static const KeybindingRecord KEYS[] = {
{ KEYBIND_SEARCH, "SEARCH", "Search", "search", "s", nullptr },
{ KEYBIND_STATS, "STATS", "Stats", "stats", "z", nullptr },
{ KEYBIND_TALK, "TALK", "Talk", "talk", "t", nullptr },
+ { KEYBIND_TOGGLE_MUSIC, "TOGGLE-MUSIC", "Toggle Music", "musicToggle", "v", nullptr },
{ KEYBIND_USE, "USE", "Use", "use", "u", nullptr },
{ KEYBIND_WEAR, "WEAR", "Wear Armor", "wear", "w", nullptr },
{ KEYBIND_YELL, "YELL", "Yell", "yell", "y", nullptr },
diff --git a/engines/ultima/ultima4/meta_engine.h b/engines/ultima/ultima4/meta_engine.h
index b439be1791..cd56702d31 100644
--- a/engines/ultima/ultima4/meta_engine.h
+++ b/engines/ultima/ultima4/meta_engine.h
@@ -36,8 +36,8 @@ enum KeybindingAction {
KEYBIND_LOCATE, KEYBIND_MIX, KEYBIND_NEW_ORDER,
KEYBIND_OPEN_DOOR, KEYBIND_PASS, KEYBIND_PEER,
KEYBIND_QUIT_SAVE, KEYBIND_READY_WEAPON, KEYBIND_SEARCH,
- KEYBIND_STATS, KEYBIND_TALK, KEYBIND_USE, KEYBIND_WEAR,
- KEYBIND_YELL,
+ KEYBIND_STATS, KEYBIND_TALK, KEYBIND_TOGGLE_MUSIC,
+ KEYBIND_USE, KEYBIND_WEAR, KEYBIND_YELL,
KEYBIND_NONE
};
Commit: fda93e493b53b124e829c3930e8cbb24951dd06d
https://github.com/scummvm/scummvm/commit/fda93e493b53b124e829c3930e8cbb24951dd06d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-04-14T20:19:35-07:00
Commit Message:
ULTIMA4: Speed keys to keybinder
Changed paths:
engines/ultima/ultima4/core/debugger.cpp
engines/ultima/ultima4/core/debugger.h
engines/ultima/ultima4/game/game.cpp
engines/ultima/ultima4/meta_engine.cpp
engines/ultima/ultima4/meta_engine.h
diff --git a/engines/ultima/ultima4/core/debugger.cpp b/engines/ultima/ultima4/core/debugger.cpp
index 935e0327be..11302c9444 100644
--- a/engines/ultima/ultima4/core/debugger.cpp
+++ b/engines/ultima/ultima4/core/debugger.cpp
@@ -890,6 +890,38 @@ bool Debugger::cmdSearch(int argc, const char **argv) {
return isDebuggerActive();
}
+bool Debugger::cmdSpeed(int argc, const char **argv) {
+ Common::String action = argv[1];
+ int old_cycles = settings._gameCyclesPerSecond;
+
+ if (action == "up") {
+ if (++settings._gameCyclesPerSecond > MAX_CYCLES_PER_SECOND)
+ settings._gameCyclesPerSecond = MAX_CYCLES_PER_SECOND;
+ } else if (action == "down") {
+ if (--settings._gameCyclesPerSecond == 0)
+ settings._gameCyclesPerSecond = 1;
+ } else if (action == "normal") {
+ settings._gameCyclesPerSecond = DEFAULT_CYCLES_PER_SECOND;
+ }
+
+ if (old_cycles != settings._gameCyclesPerSecond) {
+ settings._eventTimerGranularity = (1000 / settings._gameCyclesPerSecond);
+ eventHandler->getTimer()->reset(settings._eventTimerGranularity);
+
+ if (settings._gameCyclesPerSecond == DEFAULT_CYCLES_PER_SECOND)
+ print("Speed: Normal");
+ else if (action == "up")
+ print("Speed Up (%d)", settings._gameCyclesPerSecond);
+ else
+ print("Speed Down (%d)", settings._gameCyclesPerSecond);
+ } else if (settings._gameCyclesPerSecond == DEFAULT_CYCLES_PER_SECOND) {
+ print("Speed: Normal");
+ }
+
+ dontEndTurn();
+ return isDebuggerActive();
+}
+
bool Debugger::cmdStats(int argc, const char **argv) {
int player = -1;
if (argc == 2)
diff --git a/engines/ultima/ultima4/core/debugger.h b/engines/ultima/ultima4/core/debugger.h
index ae71406f06..1906c477a8 100644
--- a/engines/ultima/ultima4/core/debugger.h
+++ b/engines/ultima/ultima4/core/debugger.h
@@ -195,6 +195,11 @@ private:
*/
bool cmdSearch(int argc, const char **argv);
+ /**
+ * Speed up, down, or normal
+ */
+ bool cmdSpeed(int argc, const char **argv);
+
/**
* Show character stats
*/
diff --git a/engines/ultima/ultima4/game/game.cpp b/engines/ultima/ultima4/game/game.cpp
index 005eae0146..f1da64d623 100644
--- a/engines/ultima/ultima4/game/game.cpp
+++ b/engines/ultima/ultima4/game/game.cpp
@@ -602,63 +602,6 @@ bool GameController::keyPressed(int key) {
screenMessage("%cNot here!%c\n", FG_GREY, FG_WHITE);
else
switch (key) {
- case ' ':
- screenMessage("Pass\n");
- break;
-
- case '+':
- case '-':
- case U4_KEYPAD_ENTER: {
- int old_cycles = settings._gameCyclesPerSecond;
- if (key == '+' && ++settings._gameCyclesPerSecond > MAX_CYCLES_PER_SECOND)
- settings._gameCyclesPerSecond = MAX_CYCLES_PER_SECOND;
- else if (key == '-' && --settings._gameCyclesPerSecond == 0)
- settings._gameCyclesPerSecond = 1;
- else if (key == U4_KEYPAD_ENTER)
- settings._gameCyclesPerSecond = DEFAULT_CYCLES_PER_SECOND;
-
- if (old_cycles != settings._gameCyclesPerSecond) {
- settings._eventTimerGranularity = (1000 / settings._gameCyclesPerSecond);
- eventHandler->getTimer()->reset(settings._eventTimerGranularity);
-
- if (settings._gameCyclesPerSecond == DEFAULT_CYCLES_PER_SECOND)
- screenMessage("Speed: Normal\n");
- else if (key == '+')
- screenMessage("Speed Up (%d)\n", settings._gameCyclesPerSecond);
- else screenMessage("Speed Down (%d)\n", settings._gameCyclesPerSecond);
- } else if (settings._gameCyclesPerSecond == DEFAULT_CYCLES_PER_SECOND)
- screenMessage("Speed: Normal\n");
- }
-
- endTurn = false;
- break;
-
- /* handle music volume adjustments */
- case ',':
- // decrease the volume if possible
- screenMessage("Music: %d%s\n", g_music->decreaseMusicVolume(), "%");
- endTurn = false;
- break;
- case '.':
- // increase the volume if possible
- screenMessage("Music: %d%s\n", g_music->increaseMusicVolume(), "%");
- endTurn = false;
- break;
-
- /* handle sound volume adjustments */
- case '<':
- // decrease the volume if possible
- screenMessage("Sound: %d%s\n", g_music->decreaseSoundVolume(), "%");
- soundPlay(SOUND_FLEE);
- endTurn = false;
- break;
- case '>':
- // increase the volume if possible
- screenMessage("Sound: %d%s\n", g_music->increaseSoundVolume(), "%");
- soundPlay(SOUND_FLEE);
- endTurn = false;
- break;
-
case 'c' + U4_ALT:
if (settings._debug && g_context->_location->_map->isWorldMap()) {
/* first teleport to the abyss */
diff --git a/engines/ultima/ultima4/meta_engine.cpp b/engines/ultima/ultima4/meta_engine.cpp
index 9c2159ece8..3f1a10be89 100644
--- a/engines/ultima/ultima4/meta_engine.cpp
+++ b/engines/ultima/ultima4/meta_engine.cpp
@@ -62,8 +62,11 @@ static const KeybindingRecord KEYS[] = {
{ KEYBIND_PASS, "PASS", "Pass", "pass", "SPACE", nullptr },
{ KEYBIND_PEER, "PEER", "Peer", "peer", "p", nullptr },
{ KEYBIND_QUIT_SAVE, "QUIT-SAVE", "Quit and Save", "quitAndSave", "q", nullptr },
- { KEYBIND_READY_WEAPON, "READY-WEAPON", "Ready Weapon", "ready", nullptr },
+ { KEYBIND_READY_WEAPON, "READY-WEAPON", "Ready Weapon", "ready", "r", nullptr },
{ KEYBIND_SEARCH, "SEARCH", "Search", "search", "s", nullptr },
+ { KEYBIND_SPEED_UP, "SPEED-UP", "Speed Up", "speed up", "PLUS", nullptr },
+ { KEYBIND_SPEED_DOWN, "SPEED-DOWN", "Speed Down", "speed down", "MINUS", nullptr },
+ { KEYBIND_SPEED_NORMAL, "SPEED-NORMAL", "Speed Normal", "speed normal", "KP_ENTER", nullptr },
{ KEYBIND_STATS, "STATS", "Stats", "stats", "z", nullptr },
{ KEYBIND_TALK, "TALK", "Talk", "talk", "t", nullptr },
{ KEYBIND_TOGGLE_MUSIC, "TOGGLE-MUSIC", "Toggle Music", "musicToggle", "v", nullptr },
diff --git a/engines/ultima/ultima4/meta_engine.h b/engines/ultima/ultima4/meta_engine.h
index cd56702d31..1d2efe7943 100644
--- a/engines/ultima/ultima4/meta_engine.h
+++ b/engines/ultima/ultima4/meta_engine.h
@@ -35,9 +35,10 @@ enum KeybindingAction {
KEYBIND_GET, KEYBIND_HOLE_UP, KEYBIND_IGNITE, KEYBIND_JIMMY,
KEYBIND_LOCATE, KEYBIND_MIX, KEYBIND_NEW_ORDER,
KEYBIND_OPEN_DOOR, KEYBIND_PASS, KEYBIND_PEER,
- KEYBIND_QUIT_SAVE, KEYBIND_READY_WEAPON, KEYBIND_SEARCH,
- KEYBIND_STATS, KEYBIND_TALK, KEYBIND_TOGGLE_MUSIC,
- KEYBIND_USE, KEYBIND_WEAR, KEYBIND_YELL,
+ KEYBIND_QUIT_SAVE, KEYBIND_SPEED_UP, KEYBIND_SPEED_DOWN,
+ KEYBIND_SPEED_NORMAL, KEYBIND_READY_WEAPON, KEYBIND_SEARCH,
+ KEYBIND_STATS, KEYBIND_TALK, KEYBIND_TOGGLE_MUSIC, KEYBIND_USE,
+ KEYBIND_WEAR, KEYBIND_YELL,
KEYBIND_NONE
};
Commit: 36ef10ffe61035b92b473fecc3909f2c4473ad34
https://github.com/scummvm/scummvm/commit/36ef10ffe61035b92b473fecc3909f2c4473ad34
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-04-14T20:19:35-07:00
Commit Message:
ULTIMA4: Party character selection keybindings
Changed paths:
engines/ultima/ultima4/core/debugger.cpp
engines/ultima/ultima4/core/debugger.h
engines/ultima/ultima4/game/game.cpp
engines/ultima/ultima4/meta_engine.cpp
engines/ultima/ultima4/meta_engine.h
diff --git a/engines/ultima/ultima4/core/debugger.cpp b/engines/ultima/ultima4/core/debugger.cpp
index 11302c9444..3643a0bccc 100644
--- a/engines/ultima/ultima4/core/debugger.cpp
+++ b/engines/ultima/ultima4/core/debugger.cpp
@@ -66,6 +66,7 @@ Debugger::Debugger() : Shared::Debugger() {
registerCmd("musicToggle", WRAP_METHOD(Debugger, cmdMusicToggle));
registerCmd("open", WRAP_METHOD(Debugger, cmdOpenDoor));
registerCmd("order", WRAP_METHOD(Debugger, cmdNewOrder));
+ registerCmd("party", WRAP_METHOD(Debugger, cmdParty));
registerCmd("pass", WRAP_METHOD(Debugger, cmdPass));
registerCmd("peer", WRAP_METHOD(Debugger, cmdPeer));
registerCmd("quitAndSave", WRAP_METHOD(Debugger, cmdQuitAndSave));
@@ -130,7 +131,7 @@ void Debugger::printN(const char *fmt, ...) {
// relevant for showing the text in the debugger
Common::String s;
for (Common::String::iterator it = str.begin(); it != str.end(); ++it) {
- if (*it <= ' ' && *it != '\n')
+ if (*it >= ' ' || *it == '\n')
s += *it;
}
@@ -143,9 +144,11 @@ void Debugger::printN(const char *fmt, ...) {
bool Debugger::handleCommand(int argc, const char **argv, bool &keepRunning) {
bool result = Shared::Debugger::handleCommand(argc, argv, keepRunning);
- if (result && !isActive()) {
- if (!_dontEndTurn)
+ if (result) {
+ if (!isActive() && !_dontEndTurn)
g_game->finishTurn();
+ else if (_dontEndTurn && eventHandler->getController() == g_game)
+ g_context->_location->_turnCompleter->finishTurn();
}
_dontEndTurn = false;
@@ -773,6 +776,18 @@ bool Debugger::cmdOpenDoor(int argc, const char **argv) {
return isDebuggerActive();
}
+bool Debugger::cmdParty(int argc, const char **argv) {
+ if (settings._enhancements && settings._enhancementsOptions._activePlayer) {
+ int player = (argc == 2) ? strToInt(argv[1]) - 1 : -1;
+ gameSetActivePlayer(player);
+ } else {
+ print("%cBad command!%c", FG_GREY, FG_WHITE);
+ }
+
+ dontEndTurn();
+ return isDebuggerActive();
+}
+
bool Debugger::cmdPass(int argc, const char **argv) {
print("Pass");
return isDebuggerActive();
@@ -1069,8 +1084,6 @@ bool Debugger::cmdCollisions(int argc, const char **argv) {
bool Debugger::cmdCompanions(int argc, const char **argv) {
for (int m = g_ultima->_saveGame->_members; m < 8; m++) {
- debug("m = %d\n", m);
- debug("n = %s\n", g_ultima->_saveGame->_players[m].name);
if (g_context->_party->canPersonJoin(g_ultima->_saveGame->_players[m].name, NULL)) {
g_context->_party->join(g_ultima->_saveGame->_players[m].name);
}
diff --git a/engines/ultima/ultima4/core/debugger.h b/engines/ultima/ultima4/core/debugger.h
index 1906c477a8..e1cddf4f6a 100644
--- a/engines/ultima/ultima4/core/debugger.h
+++ b/engines/ultima/ultima4/core/debugger.h
@@ -169,6 +169,11 @@ private:
*/
bool cmdOpenDoor(int argc, const char **argv);
+ /**
+ * Specifies a particular party number
+ */
+ bool cmdParty(int argc, const char **argv);
+
/**
* Pass turn
*/
diff --git a/engines/ultima/ultima4/game/game.cpp b/engines/ultima/ultima4/game/game.cpp
index f1da64d623..fdfa57eb0f 100644
--- a/engines/ultima/ultima4/game/game.cpp
+++ b/engines/ultima/ultima4/game/game.cpp
@@ -615,154 +615,6 @@ bool GameController::keyPressed(int key) {
}
break;
- case 'h' + U4_ALT: {
-#ifdef IOS
- U4IOS::IOSHideActionKeysHelper hideActionKeys;
-#endif
- ReadChoiceController pauseController("");
-
- screenMessage("Key Reference:\n"
- "Arrow Keys: Move\n"
- "a: Attack\n"
- "b: Board\n"
- "c: Cast Spell\n"
- "d: Descend\n"
- "e: Enter\n"
- "f: Fire Cannons\n"
- "g: Get Chest\n"
- "h: Hole up\n"
- "i: Ignite torch\n"
- "(more)");
-
- eventHandler->pushController(&pauseController);
- pauseController.waitFor();
-
- screenMessage("\n"
- "j: Jimmy lock\n"
- "k: Klimb\n"
- "l: Locate\n"
- "m: Mix reagents\n"
- "n: New Order\n"
- "o: Open door\n"
- "p: Peer at Gem\n"
- "q: Quit & Save\n"
- "r: Ready weapon\n"
- "s: Search\n"
- "t: Talk\n"
- "(more)");
-
- eventHandler->pushController(&pauseController);
- pauseController.waitFor();
-
- screenMessage("\n"
- "u: Use Item\n"
- "v: Volume On/Off\n"
- "w: Wear armour\n"
- "x: eXit\n"
- "y: Yell\n"
- "z: Ztats\n"
- "Space: Pass\n"
- ",: - Music Vol\n"
- ".: + Music Vol\n"
- "<: - Sound Vol\n"
- ">: + Sound Vol\n"
- "(more)");
-
- eventHandler->pushController(&pauseController);
- pauseController.waitFor();
-
- screenMessage("\n"
- "Alt-Q: Main Menu\n"
- "Alt-V: Version\n"
- "Alt-X: Quit\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- );
- screenPrompt();
- break;
- }
-
- case 'q' + U4_ALT: {
- // TODO - implement loop in main() and let quit fall back to there
- // Quit to the main menu
- endTurn = false;
-
- screenMessage("Quit to menu?");
- char choice = ReadChoiceController::get("yn \n\033");
- screenMessage("%c", choice);
- if (choice != 'y') {
- screenMessage("\n");
- break;
- }
-
- eventHandler->setScreenUpdate(NULL);
- eventHandler->popController();
-
- eventHandler->pushController(intro);
-
- // Fade out the music and hide the cursor
- //before returning to the menu.
- g_music->fadeOut(1000);
- screenHideCursor();
-
- intro->init();
- eventHandler->run();
-
-
- if (!g_ultima->shouldQuit()) {
- eventHandler->setControllerDone(false);
- eventHandler->popController();
- eventHandler->pushController(this);
-
-
- if (intro->hasInitiatedNewGame()) {
- //Loads current savegame
- init();
- } else {
- //Inits screen stuff without renewing game
- initScreen();
- initScreenWithoutReloadingState();
- }
-
- this->_mapArea.reinit();
-
- intro->deleteIntro();
- eventHandler->run();
- }
- }
- break;
-
- // Turn sound effects on/off
- case 's' + U4_ALT:
- // FIXME: there's probably a more intuitive key combination for this
- settings._soundVol = !settings._soundVol;
- screenMessage("Sound FX %s!\n", settings._soundVol ? "on" : "off");
- endTurn = false;
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (settings._enhancements && settings._enhancementsOptions._activePlayer)
- gameSetActivePlayer(key - '1');
- else screenMessage("%cBad command!%c\n", FG_GREY, FG_WHITE);
-
- endTurn = 0;
- break;
-
default:
valid = false;
break;
diff --git a/engines/ultima/ultima4/meta_engine.cpp b/engines/ultima/ultima4/meta_engine.cpp
index 3f1a10be89..cee8d0af2e 100644
--- a/engines/ultima/ultima4/meta_engine.cpp
+++ b/engines/ultima/ultima4/meta_engine.cpp
@@ -77,39 +77,68 @@ static const KeybindingRecord KEYS[] = {
{ KEYBIND_NONE, nullptr, nullptr, nullptr, nullptr, nullptr }
};
+static const KeybindingRecord PARTY_KEYS[] = {
+ { KEYBIND_PARTY0, "PARTY0", "Party - None", "party 0", "0", nullptr },
+ { KEYBIND_PARTY1, "PARTY1", "Party - Character #1", "party 1", "1", nullptr },
+ { KEYBIND_PARTY2, "PARTY2", "Party - Character #2", "party 2", "2", nullptr },
+ { KEYBIND_PARTY3, "PARTY3", "Party - Character #3", "party 3", "3", nullptr },
+ { KEYBIND_PARTY4, "PARTY4", "Party - Character #4", "party 4", "4", nullptr },
+ { KEYBIND_PARTY5, "PARTY5", "Party - Character #5", "party 5", "5", nullptr },
+ { KEYBIND_PARTY6, "PARTY6", "Party - Character #6", "party 6", "6", nullptr },
+ { KEYBIND_PARTY7, "PARTY7", "Party - Character #7", "party 7", "7", nullptr },
+ { KEYBIND_PARTY8, "PARTY8", "Party - Character #8", "party 8", "8", nullptr },
+
+ { KEYBIND_NONE, nullptr, nullptr, nullptr, nullptr, nullptr }
+};
+
static const KeybindingRecord CHEAT_KEYS[] = {
{ KEYBIND_NONE, nullptr, nullptr, nullptr, nullptr, nullptr }
};
+struct KeysRecord {
+ const char *_id;
+ const char *_desc;
+ const KeybindingRecord *_keys;
+};
+static const KeysRecord KEYS_RECORDS[3] = {
+ { "ultima4", "Ultima IV", KEYS },
+ { "ultima4_party", "Ultima IV - Party", PARTY_KEYS },
+ { "ultima4_cheats", "Ultima IV - Cheats", CHEAT_KEYS },
+};
Common::KeymapArray MetaEngine::initKeymaps() {
Common::KeymapArray keymapArray;
-
- // Core keymaps
- Common::Keymap *keyMap = new Common::Keymap(Common::Keymap::kKeymapTypeGame, "ultima4", _("Ultima IV"));
- keymapArray.push_back(keyMap);
-
+ Common::Keymap *keyMap;
Common::Action *act;
- act = new Common::Action("LCLK", _("Interact via Left Click"));
- act->setLeftClickEvent();
- act->addDefaultInputMapping("MOUSE_LEFT");
- act->addDefaultInputMapping("JOY_A");
- keyMap->addAction(act);
-
- act = new Common::Action("RCLK", _("Interact via Right Click"));
- act->setRightClickEvent();
- act->addDefaultInputMapping("MOUSE_RIGHT");
- act->addDefaultInputMapping("JOY_B");
- keyMap->addAction(act);
-
- for (const KeybindingRecord *r = KEYS; r->_id; ++r) {
- act = new Common::Action(r->_id, _(r->_desc));
- act->setCustomEngineActionEvent(r->_action);
- act->addDefaultInputMapping(r->_key);
- if (r->_joy)
- act->addDefaultInputMapping(r->_joy);
- keyMap->addAction(act);
+ for (int kCtr = 0; kCtr < 3; ++kCtr) {
+ // Core keymaps
+ keyMap = new Common::Keymap(Common::Keymap::kKeymapTypeGame,
+ KEYS_RECORDS[kCtr]._id, _(KEYS_RECORDS[kCtr]._desc));
+ keymapArray.push_back(keyMap);
+
+ if (kCtr == 0) {
+ act = new Common::Action("LCLK", _("Interact via Left Click"));
+ act->setLeftClickEvent();
+ act->addDefaultInputMapping("MOUSE_LEFT");
+ act->addDefaultInputMapping("JOY_A");
+ keyMap->addAction(act);
+
+ act = new Common::Action("RCLK", _("Interact via Right Click"));
+ act->setRightClickEvent();
+ act->addDefaultInputMapping("MOUSE_RIGHT");
+ act->addDefaultInputMapping("JOY_B");
+ keyMap->addAction(act);
+ }
+
+ for (const KeybindingRecord *r = KEYS_RECORDS[kCtr]._keys; r->_id; ++r) {
+ act = new Common::Action(r->_id, _(r->_desc));
+ act->setCustomEngineActionEvent(r->_action);
+ act->addDefaultInputMapping(r->_key);
+ if (r->_joy)
+ act->addDefaultInputMapping(r->_joy);
+ keyMap->addAction(act);
+ }
}
return keymapArray;
@@ -127,10 +156,8 @@ void MetaEngine::executeAction(KeybindingAction keyAction) {
}
Common::String MetaEngine::getMethod(KeybindingAction keyAction) {
- const KeybindingRecord *KEY_ARRAYS[] = { KEYS, CHEAT_KEYS, nullptr };
-
- for (const KeybindingRecord **arr = KEY_ARRAYS; *arr; ++arr) {
- for (const KeybindingRecord *r = *arr; r->_id; ++r) {
+ for (int kCtr = 0; kCtr < 3; ++kCtr) {
+ for (const KeybindingRecord *r = KEYS_RECORDS[kCtr]._keys; r->_id; ++r) {
if (r->_action == keyAction)
return r->_method;
}
diff --git a/engines/ultima/ultima4/meta_engine.h b/engines/ultima/ultima4/meta_engine.h
index 1d2efe7943..46f711a306 100644
--- a/engines/ultima/ultima4/meta_engine.h
+++ b/engines/ultima/ultima4/meta_engine.h
@@ -40,6 +40,10 @@ enum KeybindingAction {
KEYBIND_STATS, KEYBIND_TALK, KEYBIND_TOGGLE_MUSIC, KEYBIND_USE,
KEYBIND_WEAR, KEYBIND_YELL,
+ KEYBIND_PARTY0, KEYBIND_PARTY1, KEYBIND_PARTY2, KEYBIND_PARTY3,
+ KEYBIND_PARTY4, KEYBIND_PARTY5, KEYBIND_PARTY6, KEYBIND_PARTY7,
+ KEYBIND_PARTY8,
+
KEYBIND_NONE
};
More information about the Scummvm-git-logs
mailing list