[Scummvm-cvs-logs] scummvm master -> 76dec424696eacf2e9c1576d0580babb1a58e3f1

athrxx athrxx at scummvm.org
Tue Jan 3 17:39:13 CET 2012


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
4fd0e9e94b KYRA: (EOB) - improve keyboard control for spell book cursor with non QWERTZ keyboards
76dec42469 KYRA: (EOB) - improved eob target detection in transfer party dialog


Commit: 4fd0e9e94ba5a4e4b11a9e993f69350f70564227
    https://github.com/scummvm/scummvm/commit/4fd0e9e94ba5a4e4b11a9e993f69350f70564227
Author: athrxx (athrxx at scummvm.org)
Date: 2012-01-03T08:37:46-08:00

Commit Message:
KYRA: (EOB) - improve keyboard control for spell book cursor with non QWERTZ keyboards

Changed paths:
    engines/kyra/kyra_v1.cpp



diff --git a/engines/kyra/kyra_v1.cpp b/engines/kyra/kyra_v1.cpp
index e60913c..7167d41 100644
--- a/engines/kyra/kyra_v1.cpp
+++ b/engines/kyra/kyra_v1.cpp
@@ -420,8 +420,18 @@ void KyraEngine_v1::setupKeyMap() {
 		{ KC(KP_MINUS), 105, 0/*unknown*/ },
 		{ KC(PLUS), 13, 0/*unknown*/ },
 		{ KC(KP_PLUS), 106, 0/*unknown*/ },
+
+		// Multiple mappings for the keys to the right of the 'M' key,
+		// since these are different for QWERTZ, QWERTY and AZERTY keyboards.
+		// QWERTZ
 		{ KC(COMMA), 53, 0/*unknown*/ },
-		{ KC(PERIOD), 54, 0/*unknown*/ }
+		{ KC(PERIOD), 54, 0/*unknown*/ },
+		// AZERTY
+		{ KC(SEMICOLON), 53, 0/*unknown*/ },
+		{ KC(COLON), 54, 0/*unknown*/ },
+		// QWERTY
+		{ KC(LESS), 53, 0/*unknown*/ },
+		{ KC(GREATER), 54, 0/*unknown*/ }
 	};
 #undef KC
 


Commit: 76dec424696eacf2e9c1576d0580babb1a58e3f1
    https://github.com/scummvm/scummvm/commit/76dec424696eacf2e9c1576d0580babb1a58e3f1
Author: athrxx (athrxx at scummvm.org)
Date: 2012-01-03T08:37:47-08:00

Commit Message:
KYRA: (EOB) - improved eob target detection in transfer party dialog

(parse domains instead of save files)

Changed paths:
    engines/kyra/chargen.cpp
    engines/kyra/gui_eob.cpp
    engines/kyra/gui_eob.h



diff --git a/engines/kyra/chargen.cpp b/engines/kyra/chargen.cpp
index 1093bec..91a9040 100644
--- a/engines/kyra/chargen.cpp
+++ b/engines/kyra/chargen.cpp
@@ -29,6 +29,11 @@
 #include "common/savefile.h"
 #include "common/str-array.h"
 
+#include "common/config-manager.h"
+#include "base/plugins.h"
+#include "engines/metaengine.h"
+#include "engines/game.h"
+
 namespace Kyra {
 
 // Character Generator
@@ -1446,7 +1451,8 @@ public:
 
 private:
 	bool selectAndLoadTransferFile();
-	Common::String transferFileDialogue();
+	bool transferFileDialogue(Common::String &dest);
+
 
 	int selectCharactersMenu();
 	void drawCharPortraitWithStats(int charIndex, bool enabled);
@@ -1531,83 +1537,54 @@ bool TransferPartyWiz::start() {
 bool TransferPartyWiz::selectAndLoadTransferFile() {
 	do {
 		_screen->copyPage(12, 0);
-		_vm->_savegameFilename = transferFileDialogue();
-	} while (_vm->_savegameFilename.empty() && _vm->_gui->confirmDialogue2(15, 68, 1));
+		 if (transferFileDialogue(_vm->_savegameFilename))
+			 break;
+	} while (_vm->_gui->confirmDialogue2(15, 68, 1));
 
 	if (_vm->_savegameFilename.empty())
 		return false;
 
-	if (_vm->_savegameFilename.equals(_vm->_saveLoadStrings[1]))
-		return false;
-
 	if (_vm->loadGameState(-1).getCode() != Common::kNoError)
 		return false;
 
 	return true;
 }
 
-Common::String TransferPartyWiz::transferFileDialogue() {
-	Common::StringArray saveFileList = _vm->_saveFileMan->listSavefiles("*.*");
-	Common::StringArray targets;
-	Common::String tfile;
-
-	KyraEngine_v1::SaveHeader header;
-	memset(&header, 0, sizeof(KyraEngine_v1::SaveHeader));
-	Common::InSaveFile *in;
-
+ bool TransferPartyWiz::transferFileDialogue(Common::String &dest) {
 	_vm->_gui->transferWaitBox();
 
-	for (Common::StringArray::iterator i = saveFileList.begin(); i != saveFileList.end(); ++i) {
-		_vm->updateInput();
-
-		if (!(in = _vm->_saveFileMan->openForLoading(*i)))
-			continue;
-
-		if (KyraEngine_v1::readSaveHeader(in, false, header)) {
-			delete in;
-			continue;
-		}
-
-		delete in;
-
-		if (header.gameID != GI_EOB1)
-			continue;
-
-		i->insertChar('\0', i->size() - 4);
+	Common::Array<Common::String> eobTargets;
+	const Common::ConfigManager::DomainMap dom = ConfMan.getGameDomains();
 
-		Common::StringArray::iterator ii = targets.begin();
-		for (; ii != targets.end(); ++ii) {
-			if (!i->compareToIgnoreCase(*ii))
-				break;
-		}
-
-		if (ii == targets.end())
-			targets.push_back(*i);
+	for (Common::ConfigManager::DomainMap::const_iterator i = dom.begin(); i != dom.end(); ++i) {
+		if (ConfMan.get("gameid", i->_key).equals("eob"))
+			eobTargets.push_back(i->_key);
+		_vm->updateInput();
 	}
 
-	if (targets.empty())
-		return tfile;
+	if (eobTargets.empty())
+		return false;
 
-	Common::String target = _vm->_gui->transferTargetMenu(targets);
+	Common::String target = _vm->_gui->transferTargetMenu(eobTargets);
 	_screen->copyPage(12, 0);
 
-	if (target.equals(_vm->_saveLoadStrings[1]))
-		return target;
+	if (target.empty())
+		return true;
 
-	tfile = target + ".fin";
-	in = _vm->_saveFileMan->openForLoading(tfile);
+	dest = target + ".fin";
+	Common::InSaveFile *in = _vm->_saveFileMan->openForLoading(dest);
 	if (in) {
 		delete in;
 		if (_vm->_gui->confirmDialogue2(15, -2, 1))
-			return tfile;
+			return true;
 	}
 
 	_screen->copyPage(12, 0);
 
-	tfile = _vm->_gui->transferFileMenu(target);
+	bool result = _vm->_gui->transferFileMenu(target, dest);
 	_screen->copyPage(12, 0);
 
-	return tfile;
+	return result;
 }
 
 int TransferPartyWiz::selectCharactersMenu() {
diff --git a/engines/kyra/gui_eob.cpp b/engines/kyra/gui_eob.cpp
index a378fe1..d60fa47 100644
--- a/engines/kyra/gui_eob.cpp
+++ b/engines/kyra/gui_eob.cpp
@@ -2546,12 +2546,13 @@ void GUI_EoB::transferWaitBox() {
 }
 
 Common::String GUI_EoB::transferTargetMenu(Common::Array<Common::String> &targets) {
-	_savegameListSize = targets.size();
 	if (_savegameList) {
 		for (int i = 0; i < _savegameListSize; i++)
 			delete[] _savegameList[i];
 		delete[] _savegameList;
 	}
+
+	_savegameListSize = targets.size();
 	_savegameList = new char*[_savegameListSize];
 	memset(_savegameList, 0, _savegameListSize * sizeof(char *));
 
@@ -2576,12 +2577,16 @@ Common::String GUI_EoB::transferTargetMenu(Common::Array<Common::String> &target
 	_screen->copyRegion(72, 14, 72, 14, 176, 144, 12, 0, Screen::CR_NO_P_CHECK);
 	_screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
 
-	return (slot < 6) ? _savegameList[_savegameOffset + slot] : _vm->_saveLoadStrings[1];
+	return (slot < 6) ? _savegameList[_savegameOffset + slot] : Common::String();
 }
 
-Common::String GUI_EoB::transferFileMenu(Common::String &target) {
-	updateSaveSlotsList(target, true);
+bool GUI_EoB::transferFileMenu(Common::String &targetName, Common::String &selection) {
+	updateSaveSlotsList(targetName, true);
 	_saveSlotsListUpdateNeeded = true;
+	selection.clear();
+
+	if (!_savegameListSize)
+		return false;
 
 	const ScreenDim *dm = _screen->getScreenDim(11);
 	int xo = dm->sx;
@@ -2598,12 +2603,13 @@ Common::String GUI_EoB::transferFileMenu(Common::String &target) {
 			messageDialogue(11, 65, 6);
 		else {
 			_screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
-			return _vm->getSavegameFilename(target, _saveSlotIdTemp[slot]);
+			selection = _vm->getSavegameFilename(targetName, _saveSlotIdTemp[slot]);
+			return true;
 		}
 	} while (_saveSlotIdTemp[slot] == -1);
 
 	_screen->modifyScreenDim(11, xo, yo, dm->w, dm->h);
-	return _vm->_saveLoadStrings[1];
+	return true;
 }
 
 void GUI_EoB::createScreenThumbnail(Graphics::Surface &dst) {
diff --git a/engines/kyra/gui_eob.h b/engines/kyra/gui_eob.h
index ec4000e..759ed64 100644
--- a/engines/kyra/gui_eob.h
+++ b/engines/kyra/gui_eob.h
@@ -73,7 +73,7 @@ public:
 	// Transfer party
 	void transferWaitBox();
 	Common::String transferTargetMenu(Common::Array<Common::String> &targets);
-	Common::String transferFileMenu(Common::String &target);
+	bool transferFileMenu(Common::String &targetName, Common::String &selection);
 
 	// utilities for thumbnail creation
 	void createScreenThumbnail(Graphics::Surface &dst);






More information about the Scummvm-git-logs mailing list