aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo/lingo-builtins.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2019-12-17 00:00:19 +0100
committerEugene Sandulenko2019-12-17 00:00:47 +0100
commit7d13c60a8bb7a1d71d2eb86b6530749a791d4792 (patch)
treead18e6e64f6c0509f5a6d6f2922b29873c263c89 /engines/director/lingo/lingo-builtins.cpp
parente9aea0c5bee923d408759b19d813d0c242b0d985 (diff)
downloadscummvm-rg350-7d13c60a8bb7a1d71d2eb86b6530749a791d4792.tar.gz
scummvm-rg350-7d13c60a8bb7a1d71d2eb86b6530749a791d4792.tar.bz2
scummvm-rg350-7d13c60a8bb7a1d71d2eb86b6530749a791d4792.zip
DIRECTOR: LINGO: Support menu items without commands
Diffstat (limited to 'engines/director/lingo/lingo-builtins.cpp')
-rw-r--r--engines/director/lingo/lingo-builtins.cpp34
1 files changed, 22 insertions, 12 deletions
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 97afef64da..8b741a6236 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1193,6 +1193,8 @@ void Lingo::b_installMenu(int nargs) {
menu->setCommandsCallback(menuCommandsCallback, g_director);
+ debugC(3, kDebugLingoExec, "installMenu: '%s'", Common::toPrintable(menuStxt).c_str());
+
for (const byte *s = (const byte *)menuStxt.c_str(); *s; s++) {
// Get next line
line.clear();
@@ -1221,8 +1223,10 @@ void Lingo::b_installMenu(int nargs) {
p++;
if (!submenuText.empty()) { // Adding submenu for previous menu
- handlers += g_lingo->genMenuHandler(&commandId, command);
- submenuText += Common::String::format("[%d]", commandId);
+ if (!command.empty()) {
+ handlers += g_lingo->genMenuHandler(&commandId, command);
+ submenuText += Common::String::format("[%d]", commandId);
+ }
menu->createSubMenuFromString(submenu, submenuText.c_str(), 0);
}
@@ -1243,20 +1247,24 @@ void Lingo::b_installMenu(int nargs) {
if (!p)
p = strchr(line.c_str(), '\xc5');
- if (!p) {
- warning("installMenu: syntax error at line %d", linenum);
- continue;
- }
+ Common::String text;
- Common::String text(line.c_str(), p);
- command = Common::String(p + 1);
+ if (p) {
+ text = Common::String(line.c_str(), p);
+ command = Common::String(p + 1);
+ } else {
+ text = line;
+ command = "";
+ }
text.trim();
command.trim();
if (!submenuText.empty()) {
- handlers += g_lingo->genMenuHandler(&commandId, command);
- submenuText += Common::String::format("[%d];", commandId);
+ if (!command.empty()) {
+ handlers += g_lingo->genMenuHandler(&commandId, command);
+ submenuText += Common::String::format("[%d];", commandId);
+ }
}
submenuText += text;
@@ -1266,8 +1274,10 @@ void Lingo::b_installMenu(int nargs) {
}
if (!submenuText.empty()) {
- handlers += g_lingo->genMenuHandler(&commandId, command);
- submenuText += Common::String::format("[%d]", commandId);
+ if (!command.empty()) {
+ handlers += g_lingo->genMenuHandler(&commandId, command);
+ submenuText += Common::String::format("[%d]", commandId);
+ }
menu->createSubMenuFromString(submenu, submenuText.c_str(), 0);
}