[Scummvm-cvs-logs] SF.net SVN: scummvm:[48659] scummvm/trunk/engines/sci
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Thu Apr 15 18:40:38 CEST 2010
Revision: 48659
http://scummvm.svn.sourceforge.net/scummvm/?rev=48659&view=rev
Author: m_kiewitz
Date: 2010-04-15 16:40:37 +0000 (Thu, 15 Apr 2010)
Log Message:
-----------
SCI: split menu/item strings when displaying instead of when initializing - makes on-the-fly menu language changes possible (used by multilingual SCI01 games)
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kmenu.cpp
scummvm/trunk/engines/sci/graphics/menu.cpp
scummvm/trunk/engines/sci/graphics/menu.h
Modified: scummvm/trunk/engines/sci/engine/kmenu.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmenu.cpp 2010-04-15 02:21:26 UTC (rev 48658)
+++ scummvm/trunk/engines/sci/engine/kmenu.cpp 2010-04-15 16:40:37 UTC (rev 48659)
@@ -34,7 +34,7 @@
namespace Sci {
reg_t kAddMenu(EngineState *s, int argc, reg_t *argv) {
- Common::String title = g_sci->strSplit(s->_segMan->getString(argv[0]).c_str());
+ Common::String title = s->_segMan->getString(argv[0]);
Common::String content = s->_segMan->getString(argv[1]);
g_sci->_gfxMenu->kernelAddEntry(title, content, argv[1]);
Modified: scummvm/trunk/engines/sci/graphics/menu.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/menu.cpp 2010-04-15 02:21:26 UTC (rev 48658)
+++ scummvm/trunk/engines/sci/graphics/menu.cpp 2010-04-15 16:40:37 UTC (rev 48659)
@@ -190,7 +190,9 @@
if (separatorCount == tempPos - beginPos) {
itemEntry->separatorLine = true;
} else {
- itemEntry->text = g_sci->strSplit(Common::String(content.c_str() + beginPos, tempPos - beginPos).c_str());
+ // we don't strSplit here, because multilingual SCI01 support language switching on the fly, so we have to do
+ // this everytime the menu is called
+ itemEntry->text = Common::String(content.c_str() + beginPos, tempPos - beginPos);
// LSL6 uses "Ctrl-" prefix string instead of ^ like all the other games do
tempPtr = itemEntry->text.c_str();
@@ -260,7 +262,7 @@
itemEntry->saidVmPtr = value;
break;
case SCI_MENU_ATTRIBUTE_TEXT:
- itemEntry->text = g_sci->strSplit(_segMan->getString(value).c_str());
+ itemEntry->text = _segMan->getString(value);
itemEntry->textVmPtr = value;
// We assume here that no script ever creates a separatorLine dynamically
break;
@@ -317,7 +319,7 @@
listIterator = _list.begin();
while (listIterator != listEnd) {
listEntry = *listIterator;
- _text16->Draw_String(listEntry->text.c_str());
+ _text16->Draw_String(listEntry->textSplit.c_str());
listIterator++;
}
@@ -336,7 +338,8 @@
menuIterator = _list.begin();
while (menuIterator != menuEnd) {
menuEntry = *menuIterator;
- _text16->StringWidth(menuEntry->text.c_str(), 0, menuEntry->textWidth, dummyHeight);
+ menuEntry->textSplit = g_sci->strSplit(menuEntry->text.c_str());
+ _text16->StringWidth(menuEntry->textSplit.c_str(), 0, menuEntry->textWidth, dummyHeight);
menuIterator++;
}
@@ -344,7 +347,9 @@
itemIterator = _itemList.begin();
while (itemIterator != itemEnd) {
itemEntry = *itemIterator;
- _text16->StringWidth(itemEntry->text.c_str(), 0, itemEntry->textWidth, dummyHeight);
+ // Split the text now for multilingual SCI01 games
+ itemEntry->textSplit = g_sci->strSplit(itemEntry->text.c_str());
+ _text16->StringWidth(itemEntry->textSplit.c_str(), 0, itemEntry->textWidth, dummyHeight);
_text16->StringWidth(itemEntry->textRightAligned.c_str(), 0, itemEntry->textRightAlignedWidth, dummyHeight);
itemIterator++;
@@ -548,7 +553,7 @@
if (!listItemEntry->separatorLine) {
_ports->textGreyedOutput(listItemEntry->enabled ? false : true);
_ports->moveTo(_menuRect.left, topPos);
- _text16->Draw_String(listItemEntry->text.c_str());
+ _text16->Draw_String(listItemEntry->textSplit.c_str());
_ports->moveTo(_menuRect.right - listItemEntry->textRightAlignedWidth - 5, topPos);
_text16->Draw_String(listItemEntry->textRightAligned.c_str());
} else {
Modified: scummvm/trunk/engines/sci/graphics/menu.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/menu.h 2010-04-15 02:21:26 UTC (rev 48658)
+++ scummvm/trunk/engines/sci/graphics/menu.h 2010-04-15 16:40:37 UTC (rev 48659)
@@ -45,6 +45,7 @@
struct GuiMenuEntry {
uint16 id;
Common::String text;
+ Common::String textSplit;
int16 textWidth;
GuiMenuEntry(uint16 curId)
@@ -62,6 +63,7 @@
bool separatorLine;
reg_t saidVmPtr;
Common::String text;
+ Common::String textSplit;
reg_t textVmPtr;
int16 textWidth;
Common::String textRightAligned;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list