[Scummvm-cvs-logs] SF.net SVN: scummvm:[40778] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Fri May 22 02:19:25 CEST 2009


Revision: 40778
          http://scummvm.svn.sourceforge.net/scummvm/?rev=40778&view=rev
Author:   lordhoto
Date:     2009-05-22 00:19:25 +0000 (Fri, 22 May 2009)

Log Message:
-----------
Fix RTL in Lands of Lore.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/lol.h
    scummvm/trunk/engines/kyra/staticres.cpp

Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h	2009-05-21 23:27:12 UTC (rev 40777)
+++ scummvm/trunk/engines/kyra/lol.h	2009-05-22 00:19:25 UTC (rev 40778)
@@ -496,6 +496,8 @@
 	void gui_initMagicSubmenu(int charNum);
 	void gui_initButton(int index, int x = -1, int y = -1, int val = -1);
 	void gui_notifyButtonListChanged() { if (_gui) _gui->_buttonListChanged = true; }
+
+	Common::Array<Button::Callback> _buttonCallbacks;
 	void assignButtonCallback(Button *button, int index);
 
 	Button *_activeButtons;

Modified: scummvm/trunk/engines/kyra/staticres.cpp
===================================================================
--- scummvm/trunk/engines/kyra/staticres.cpp	2009-05-21 23:27:12 UTC (rev 40777)
+++ scummvm/trunk/engines/kyra/staticres.cpp	2009-05-22 00:19:25 UTC (rev 40778)
@@ -1759,7 +1759,7 @@
 }
 
 #ifdef ENABLE_LOL
-// TODO: move this to kLol.cpp maybe?
+// TODO: move this to lol.cpp maybe?
 void LoLEngine::initStaticResource() {
 	_charDefaults = _staticres->loadCharData(kLolCharacterDefs, _charDefaultsSize);
 	_ingameSoundIndex = (const uint16 *)_staticres->loadRawData(kLolIngameSfxIndex, _ingameSoundIndexSize);
@@ -1894,110 +1894,111 @@
 		_soundData[2].fileList = pc98MusicFileListFinale;
 		_soundData[2].fileListLen = ARRAYSIZE(pc98MusicFileListFinale);
 	}
+
+	_buttonCallbacks.clear();
+#define cb(x) _buttonCallbacks.push_back(BUTTON_FUNCTOR(LoLEngine, this, &LoLEngine::x))
+	// 0x00
+	cb(clickedUpArrow);
+	cb(clickedDownArrow);
+	_buttonCallbacks.push_back(_buttonCallbacks[1]);
+	cb(clickedLeftArrow);
+
+	// 0x04
+	cb(clickedRightArrow);
+	cb(clickedTurnLeftArrow);
+	cb(clickedTurnRightArrow);
+	cb(clickedAttackButton);
+
+	// 0x08
+	for (int i = 0; i < 3; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[7]);
+	cb(clickedMagicButton);
+
+	// 0x0C
+	for (int i = 0; i < 3; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[11]);
+	cb(clickedMagicSubmenu);
+
+	// 0x10
+	cb(clickedScreen);
+	cb(clickedPortraitLeft);
+	for (int i = 0; i < 7; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[17]);
+
+	// 0x19
+	cb(clickedLiveMagicBarsLeft);
+	for (int i = 0; i < 3; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[25]);
+
+	// 0x1D
+	cb(clickedPortraitEtcRight);
+	for (int i = 0; i < 3; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[29]);
+
+	// 0x21
+	cb(clickedCharInventorySlot);
+	for (int i = 0; i < 10; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[33]);
+
+	// 0x2C
+	cb(clickedExitCharInventory);
+	cb(clickedSceneDropItem);
+	for (int i = 0; i < 3; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[45]);
+
+	// 0x31
+	cb(clickedScenePickupItem);
+	cb(clickedInventorySlot);
+	for (int i = 0; i < 9; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[50]);
+
+	// 0x3C
+	cb(clickedInventoryScroll);
+	cb(clickedInventoryScroll);
+	cb(clickedWall);
+	_buttonCallbacks.push_back(_buttonCallbacks[62]);
+
+	// 0x40
+	cb(clickedSequenceWindow);
+	_buttonCallbacks.push_back(_buttonCallbacks[0]);
+	_buttonCallbacks.push_back(_buttonCallbacks[1]);
+	_buttonCallbacks.push_back(_buttonCallbacks[3]);
+
+	// 0x44
+	_buttonCallbacks.push_back(_buttonCallbacks[4]);
+	_buttonCallbacks.push_back(_buttonCallbacks[5]);
+	_buttonCallbacks.push_back(_buttonCallbacks[6]);
+	cb(clickedScroll);
+
+	// 0x48
+	for (int i = 0; i < 9; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[71]);
+
+	// 0x51
+	cb(clickedSpellTargetCharacter);
+	for (int i = 0; i < 3; ++i)
+		_buttonCallbacks.push_back(_buttonCallbacks[81]);
+
+	// 0x55
+	cb(clickedSpellTargetScene);
+	cb(clickedSceneThrowItem);
+	_buttonCallbacks.push_back(_buttonCallbacks[86]);
+
+	// 0x58
+	cb(clickedOptions);
+	cb(clickedRestParty);
+	cb(clickedMoneyBox);
+	cb(clickedCompass);
+
+	// 0x5C
+	cb(clickedAutomap);
+	cb(clickedLamp);
+	cb(clickedStatusIcon);
+#undef cb
 }
 
 void LoLEngine::assignButtonCallback(Button *button, int index) {
-#define cb(x) BUTTON_FUNCTOR(LoLEngine, this, &LoLEngine::x)
-	static Button::Callback buttonCallbacks[] = {
-		cb(clickedUpArrow),
-		cb(clickedDownArrow),
-		cb(clickedDownArrow),
-		cb(clickedLeftArrow),
-		cb(clickedRightArrow),
-		cb(clickedTurnLeftArrow),
-		cb(clickedTurnRightArrow),
-		cb(clickedAttackButton),
-		cb(clickedAttackButton),
-		cb(clickedAttackButton),
-		cb(clickedAttackButton),
-		cb(clickedMagicButton),
-		cb(clickedMagicButton),
-		cb(clickedMagicButton),
-		cb(clickedMagicButton),
-		cb(clickedMagicSubmenu),
-		cb(clickedScreen),
-		cb(clickedPortraitLeft),
-		cb(clickedPortraitLeft),
-		cb(clickedPortraitLeft),
-		cb(clickedPortraitLeft),
-		cb(clickedPortraitLeft),
-		cb(clickedPortraitLeft),
-		cb(clickedPortraitLeft),
-		cb(clickedPortraitLeft),
-		cb(clickedLiveMagicBarsLeft),
-		cb(clickedLiveMagicBarsLeft),
-		cb(clickedLiveMagicBarsLeft),
-		cb(clickedLiveMagicBarsLeft),
-		cb(clickedPortraitEtcRight),
-		cb(clickedPortraitEtcRight),
-		cb(clickedPortraitEtcRight),
-		cb(clickedPortraitEtcRight),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedCharInventorySlot),
-		cb(clickedExitCharInventory),
-		cb(clickedSceneDropItem),
-		cb(clickedSceneDropItem),
-		cb(clickedSceneDropItem),
-		cb(clickedSceneDropItem),
-		cb(clickedScenePickupItem),
-		cb(clickedInventorySlot),
-		cb(clickedInventorySlot),
-		cb(clickedInventorySlot),
-		cb(clickedInventorySlot),
-		cb(clickedInventorySlot),
-		cb(clickedInventorySlot),
-		cb(clickedInventorySlot),
-		cb(clickedInventorySlot),
-		cb(clickedInventorySlot),
-		cb(clickedInventorySlot),
-		cb(clickedInventoryScroll),
-		cb(clickedInventoryScroll),
-		cb(clickedWall),
-		cb(clickedWall),
-		cb(clickedSequenceWindow),
-		cb(clickedUpArrow),
-		cb(clickedDownArrow),
-		cb(clickedLeftArrow),
-		cb(clickedRightArrow),
-		cb(clickedTurnLeftArrow),
-		cb(clickedTurnRightArrow),
-		cb(clickedScroll),
-		cb(clickedScroll),
-		cb(clickedScroll),
-		cb(clickedScroll),
-		cb(clickedScroll),
-		cb(clickedScroll),
-		cb(clickedScroll),
-		cb(clickedScroll),
-		cb(clickedScroll),
-		cb(clickedScroll),
-		cb(clickedSpellTargetCharacter),
-		cb(clickedSpellTargetCharacter),
-		cb(clickedSpellTargetCharacter),
-		cb(clickedSpellTargetCharacter),
-		cb(clickedSpellTargetScene),
-		cb(clickedSceneThrowItem),
-		cb(clickedSceneThrowItem),
-		cb(clickedOptions),
-		cb(clickedRestParty),
-		cb(clickedMoneyBox),
-		cb(clickedCompass),
-		cb(clickedAutomap),
-		cb(clickedLamp),
-		cb(clickedStatusIcon),
-	};
-#undef cb
-
-	button->buttonCallback = buttonCallbacks[index];
+	button->buttonCallback = _buttonCallbacks[index];
 }
 #endif // ENABLE_LOL
 


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