diff options
author | athrxx | 2011-05-16 18:05:00 +0200 |
---|---|---|
committer | athrxx | 2011-05-16 18:05:00 +0200 |
commit | 01c527749295c838b2079f9c95fbab7fb18edc56 (patch) | |
tree | a125bc44838f5bf83f309dfd9abe69a91cb1112a | |
parent | 5fd257d3cccdb2800493237665eb1106f44fabab (diff) | |
parent | 88319a727a5adc4888ec17e5ee091e14ce176afd (diff) | |
download | scummvm-rg350-01c527749295c838b2079f9c95fbab7fb18edc56.tar.gz scummvm-rg350-01c527749295c838b2079f9c95fbab7fb18edc56.tar.bz2 scummvm-rg350-01c527749295c838b2079f9c95fbab7fb18edc56.zip |
Merge branch 'master' of https://github.com/scummvm/scummvm
49 files changed, 831 insertions, 135 deletions
@@ -49,7 +49,7 @@ ScummVM Team Oliver Kiehl - (retired) Ludvig Strigeus - (retired) - BASS: + Beneath a Steel Sky: Robert Goeffringmann - (retired) Oliver Kiehl - (retired) Joost Peters @@ -82,7 +82,7 @@ ScummVM Team Paul Gilbert Vincent Hamm - (retired) - Draci: + Draci Historie: Denis Kasak Robert Spalek @@ -90,7 +90,7 @@ ScummVM Team Filippos Karapetis Pawel Kolodziejski - FOTAQ: + Flight of the Amazon Queen: David Eriksson - (retired) Gregory Montoir Joost Peters @@ -111,7 +111,7 @@ ScummVM Team Oystein Eftevaag Eugene Sandulenko - Kyra: + Legend of Kyrandia: Torbjorn Andersson - VQA Player Oystein Eftevaag Florian Kagerer @@ -123,7 +123,7 @@ ScummVM Team Jordi Vilalta Prat Julien Templier - Lure: + Lure of the Temptress: Paul Gilbert M4: @@ -164,7 +164,7 @@ ScummVM Team Jordi Vilalta Prat Lars Skovlund - TeenAgent: + Teen Agent: Robert Megone - Help with callback rewriting Vladimir Menshakov diff --git a/audio/mixer.cpp b/audio/mixer.cpp index 3482bd30c9..fb4fffb8d8 100644 --- a/audio/mixer.cpp +++ b/audio/mixer.cpp @@ -257,6 +257,8 @@ int MixerImpl::mixCallback(byte *samples, uint len) { Common::StackLock lock(_mutex); int16 *buf = (int16 *)samples; + // we store stereo, 16-bit samples + assert(len % 4 == 0); len >>= 2; // Since the mixer callback has been called, the mixer must be ready... diff --git a/audio/mixer_intern.h b/audio/mixer_intern.h index 05e519c64c..a04eb55c5b 100644 --- a/audio/mixer_intern.h +++ b/audio/mixer_intern.h @@ -126,6 +126,8 @@ public: * the backend (e.g. from an audio mixing thread). All the actual mixing * work is done from here. * + * @param samples Sample buffer, in which stereo 16-bit samples will be stored. + * @param len Length of the provided buffer to fill (in bytes, should be divisible by 4). * @return number of sample pairs processed (which can still be silence!) */ int mixCallback(byte *samples, uint len); diff --git a/backends/platform/iphone/iphone_video.m b/backends/platform/iphone/iphone_video.m index 09832c783e..006603df64 100644 --- a/backends/platform/iphone/iphone_video.m +++ b/backends/platform/iphone/iphone_video.m @@ -175,13 +175,18 @@ const char* iPhone_getDocumentsDir() { } bool getLocalMouseCoords(CGPoint *point) { - if (point->x < _screenRect.origin.x || point->x >= _screenRect.origin.x + _screenRect.size.width || - point->y < _screenRect.origin.y || point->y >= _screenRect.origin.y + _screenRect.size.height) { - return false; - } + if (_overlayIsEnabled) { + point->x = point->x / _overlayHeight; + point->y = point->y / _overlayWidth; + } else { + if (point->x < _screenRect.origin.x || point->x >= _screenRect.origin.x + _screenRect.size.width || + point->y < _screenRect.origin.y || point->y >= _screenRect.origin.y + _screenRect.size.height) { + return false; + } - point->x = (point->x - _screenRect.origin.x) / _screenRect.size.width; - point->y = (point->y - _screenRect.origin.y) / _screenRect.size.height; + point->x = (point->x - _screenRect.origin.x) / _screenRect.size.width; + point->y = (point->y - _screenRect.origin.y) / _screenRect.size.height; + } return true; } diff --git a/common/array.h b/common/array.h index 9b94709f1d..7ab4a1b042 100644 --- a/common/array.h +++ b/common/array.h @@ -24,6 +24,7 @@ #include "common/scummsys.h" #include "common/algorithm.h" +#include "common/textconsole.h" // For error() namespace Common { @@ -72,8 +73,7 @@ public: Array(const Array<T> &array) : _capacity(array._size), _size(array._size), _storage(0) { if (array._storage) { - _storage = new T[_capacity]; - assert(_storage); + allocCapacity(_size); copy(array._storage, array._storage + _size, _storage); } } @@ -83,9 +83,8 @@ public: */ template<class T2> Array(const T2 *data, int n) { - _capacity = _size = n; - _storage = new T[_capacity]; - assert(_storage); + _size = n; + allocCapacity(n); copy(data, data + _size, _storage); } @@ -179,9 +178,7 @@ public: delete[] _storage; _size = array._size; - _capacity = _size + 32; - _storage = new T[_capacity]; - assert(_storage); + allocCapacity(_size); copy(array._storage, array._storage + _size, _storage); return *this; @@ -238,15 +235,13 @@ public: if (newCapacity <= _capacity) return; - T *old_storage = _storage; - _capacity = newCapacity; - _storage = new T[newCapacity]; - assert(_storage); + T *oldStorage = _storage; + allocCapacity(newCapacity); - if (old_storage) { + if (oldStorage) { // Copy old data - copy(old_storage, old_storage + _size, _storage); - delete[] old_storage; + copy(oldStorage, oldStorage + _size, _storage); + delete[] oldStorage; } } @@ -267,6 +262,17 @@ protected: return capa; } + void allocCapacity(uint capacity) { + _capacity = capacity; + if (capacity) { + _storage = new T[capacity]; + if (!_storage) + ::error("Common::Array: failure to allocate %d bytes", capacity); + } else { + _storage = 0; + } + } + /** * Insert a range of elements coming from this or another array. * Unlike std::vector::insert, this method does not accept @@ -286,29 +292,28 @@ protected: const uint n = last - first; if (n) { const uint idx = pos - _storage; - T *newStorage = _storage; - if (_size + n > _capacity) { + T *oldStorage = _storage; + if (_size + n > _capacity || (_storage <= first && first <= _storage + _size) ) { // If there is not enough space, allocate more and // copy old elements over. - uint newCapacity = roundUpCapacity(_size + n); - newStorage = new T[newCapacity]; - assert(newStorage); - copy(_storage, _storage + idx, newStorage); - pos = newStorage + idx; + // Likewise, if this is a self-insert, we allocate new + // storage to avoid conflicts. This is not the most efficient + // way to ensure that, but probably the simplest on. + allocCapacity(roundUpCapacity(_size + n)); + copy(oldStorage, oldStorage + idx, _storage); + pos = _storage + idx; } // Make room for the new elements by shifting back // existing ones. - copy_backward(_storage + idx, _storage + _size, newStorage + _size + n); + copy_backward(oldStorage + idx, oldStorage + _size, _storage + _size + n); // Insert the new elements. copy(first, last, pos); // Finally, update the internal state - if (newStorage != _storage) { - delete[] _storage; - _capacity = roundUpCapacity(_size + n); - _storage = newStorage; + if (_storage != oldStorage) { + delete[] oldStorage; } _size += n; } diff --git a/devtools/credits.pl b/devtools/credits.pl index 46c75402c1..8d02891576 100755 --- a/devtools/credits.pl +++ b/devtools/credits.pl @@ -500,7 +500,7 @@ begin_credits("Credits"); add_person("Ludvig Strigeus", "ludde", "(retired)"); end_section(); - begin_section("BASS"); # Beneath a Steel Sky + begin_section("Beneath a Steel Sky"); add_person("Robert Göffringmann", "lavosspawn", "(retired)"); add_person("Oliver Kiehl", "olki", "(retired)"); add_person("Joost Peters", "joostp", ""); @@ -539,7 +539,7 @@ begin_credits("Credits"); add_person("Vincent Hamm", "yaz0r", "(retired)"); end_section(); - begin_section("Draci"); + begin_section("Draci Historie"); add_person("Denis Kasak", "dkasak13", ""); add_person("Robert Špalek", "spalek", ""); end_section(); @@ -549,7 +549,7 @@ begin_credits("Credits"); add_person("Paweł Kołodziejski", "aquadran", ""); end_section(); - begin_section("FOTAQ"); # Flight of the Amazon Queen + begin_section("Flight of the Amazon Queen"); add_person("David Eriksson", "twogood", "(retired)"); add_person("Gregory Montoir", "cyx", ""); add_person("Joost Peters", "joostp", ""); @@ -574,7 +574,7 @@ begin_credits("Credits"); add_person("Eugene Sandulenko", "sev", ""); end_section(); - begin_section("Kyra"); + begin_section("Legend of Kyrandia"); add_person("Torbjörn Andersson", "eriktorbjorn", "VQA Player"); add_person("Oystein Eftevaag", "vinterstum", ""); add_person("Florian Kagerer", "athrxx", ""); @@ -588,7 +588,7 @@ begin_credits("Credits"); add_person("Julien Templier", "littleboy", ""); end_section(); - begin_section("Lure"); + begin_section("Lure of the Temptress"); add_person("Paul Gilbert", "dreammaster", ""); end_section(); @@ -636,7 +636,7 @@ begin_credits("Credits"); add_person("Lars Skovlund", "lskovlun", ""); end_section(); - begin_section("TeenAgent"); + begin_section("Teen Agent"); add_person("Robert Megone", "sanguine", "Help with callback rewriting"); add_person("Vladimir Menshakov", "whoozle", ""); end_section(); diff --git a/doc/translations/README-de.txt b/doc/translations/README-de.txt new file mode 100755 index 0000000000..a1d7d6eb5f --- /dev/null +++ b/doc/translations/README-de.txt @@ -0,0 +1,178 @@ +Dieses Dokument ist eine auszugsweise Übersetzung der englischen +REAMDE-Datei. Das Original-Dokument enthält viel mehr Informationen. +Sollten Sie hier also nicht das finden, was Sie benötigen und ein wenig +Englisch können, sollten Sie sich die englische README-Datei ansehen. + +Für weitere Informationen, Kompatiblitätslisten, Einzelheiten zu Spenden, +die neusten veröffentlichten Versionen, Fortschrittberichte und mehr +besuchen Sie bitte die ScummVM-Website unter der Adresse: +http://www.scummvm.org/ + +Inhaltsverzeichnis: +------------------ +1.0) Einführung + * 1.1 Über ScummVM + * 1.2 Schnellstart +2.0) Kontakt + * 2.1 Fehler berichten + +1.0) Einführung: +---- ------------- + +1.1) Über ScummVM: +---- -------------- +ScummVM ist ein Programm, welches es Ihnen ermöglicht, bestimmte klassische +Grafik-Adventure (unter anderem aus dem Point-and-Click-Bereich) zu spielen, +vorausgesetzt, Sie sind im Besitz der Dateien des Spiels. Das Schlaue daran +ist: ScummVM ersetzt lediglich die Funktion der ausführbaren Dateien, +die mit den Spielen kamen, was ermöglicht, diese Spiele auf Systemen zu spielen, +für welche sie nie erstellt wurden! + +Ursprünglich wurde dieses Programm dafür entwickelt, um SCUMM-Spiele von +LucasArts auszuführen, wie beispielsweise Maniac Mansion, Monkey Island, +Day of the Tentacle oder Sam and Max. SCUMM steht als Abkürzung für +„Script Creation Utility for Maniac Mansion“ (deutsch etwa: +Skripterstellungsdienstprogramm für Maniac Mansion), was das erste +Spiel von LucasArts war, für welches LucasArts dieses System entworfen hatte. +Und viel später verlieh es seinen Namen an ScummVM (wobei „VM“ für +„Virtuelle Maschine“ steht). + +Mit der Zeit wurde Unterstützung für viele Nicht-SCUMM-Spiele hinzugefügt. +Einige Adventures, die ScummVM unterstützt, sind unter anderem Simon the +Sorcerer 1 und 2 von Adventure Soft, Beneath A Steel Sky und +Baphomets Fluch 1 und 2 von Revolution, Flight of the Amazon Queen, +Erben der Erde (Wyrmkeep), Gobliiins von Coktel Vision sowie +The Legend of Kyrandia von Westwood Studios. +Sie können eine genaue Liste mit Einzelheiten einsehen, welche Auskunft +darüber gibt, welche Spiele unterstützt werden und wie gut. Gehen Sie +hierfür auf die Kompatiblitätsseite. ScummVM wird kontinuierlich +verbessert, also schauen Sie oft vorbei. + +Unter den Systemen, mit denen Sie diese Spiele spielen können, befinden +sich Windows, Linux, Mac OS X, Dreamcast, PocketPC, PalmOS, iPhone, +AmigaOS, BeOS, OS/2, PSP, PS2, SymbianOS/EPOC und viele mehr. + +Zurzeit befindet sich ScummVM immer noch stark in der Entwicklung. +Seien Sie sich bewusst, dass wir zwar versuchen, dass viele Spiele +mit wenigen erheblichen Fehlern durchgespielt werden können, aber es +dennoch zu Abstürzen kommen kann und wir keine Gewähr übernehmen. +Davon abgesehen: Einige Spiele werden seit längerer Zeit unterstützt +und sollten in jeder stabilen veröffentlichten Version gut laufen. +Sie können sich einen Eindruck davon verschaffen, wie gut jedes Spiel +unter ScummVM läuft, indem Sie auf die Kompatiblitätsseite schauen. + +Wenn Sie sich ein wenig umsehen, können Sie herausfinden, dass +ScummVM sogar kommerziell genutzt wird, um einige der unterstützen Spiele +auf modernen Plattformen wiederzuveröffentlichen. Dies zeigt, dass +verschiedene Firmen mit der Qualität der Software zufrieden sind und wie gut +einige der Spiele mit ihrer Hilfe laufen. + +Wenn Ihnen ScummVM gefällt, können Sie uns gerne etwas Geld spenden, +um uns finanziell zu unterstützen. Dies hilft uns dabei, notwendige +Dienstprogramme zu kaufen, um ScummVM einfacher und schneller zu entwickeln. +Wenn Sie nicht spenden können, dürfen Sie auch gerne einen Patch beisteuern. + +1.2) Schnellstart: +---- ------------ +WICHTIG: In der unteren kurzen Anleitung wird davon ausgegangen, dass Sie +ScummVM auf Deutsch benutzen. Standardmäßig wird ScummVM die Sprache +Ihres Betriebssystems verwenden. Falls ScummVM auf Englisch statt auf +Deutsch erscheint, sollten Sie folgende Schritte ausführen, wenn Sie bei +Schritt 3 angelangt sind und ScummVM gestartet haben: +-Klicken Sie auf "Options". +-Klicken Sie auf den rechten Pfeil in der Reiterleiste und wählen den + Reiter "Misc" aus. +-Wählen Sie im Feld "GUI Language" "Deutsch" aus und klicken auf "OK". +-Bestätigen Sie die erscheinende Nachricht, klicken auf "Quit", um + ScummVM zu beenden und starten dann das Programm erneut. + +Wenn Sie ScummVM lieber in Englisch verwenden möchten, benutzen Sie bitte +die Anleitung in der englischen README-Datei. + + +Für die ungelduldigen unter den Benutzern ist hier in fünf einfachen +Schritten kurz beschrieben, wie man ScummVM lauffähig macht und das +Programm verwendet. + +1. Laden Sie ScummVM unter der Adresse +<http://www.scummvm.org/downloads.php> herunter und installieren Sie es. + +2. Erstellen Sie ein Verzeichnis auf Ihrer Festplatte und kopieren Sie +die Dateien des Spiels vom Original-Datenträger in dieses Verzeichnis. +Wiederholen Sie diesen Vorgang für jedes Spiel, das Sie spielen möchten. + +3. Starten Sie ScummVM, wählen Sie "Spiel hinzufügen" aus, wählen Sie das +Verzeichnis mit den Dateien des Spiels aus (versuchen Sie nicht, die +Dateien des Spiels selbst auszuwählen!) und klicken Sie auf "Auswählen". + +4. Ein Dialog sollte erscheinen, der Ihnen ermöglicht, verschiedene +Einstellungen vorzunehmn, sollten Sie dies wünschen (es sollte jedoch in +Ordnung sein, alles voreingestellt zu belassen). Bestätigen Sie diesen +Dialog. + +5. Wählen Sie das Spiel aus der Liste aus, welches Sie spielen möchten +und klicken Sie auf "Starten". + +In Zukunft sollte es nun möglich sein, direkt zu Schritt 5 überzugehen, +außer Sie wollen noch mehr Spiele hinzufügen. + +Tipp: Wenn Sie mehrere Spiele auf einmal hinzufügen möchten, drücken Sie +die Umschalt-Taste (Shift), bevor Sie auf "Spiel hinzufügen" klicken. +Diese Schaltfläche wird somit ihren Text zu "Durchsuchen" umändern und +wenn Sie dann auf diese klicken, werden Sie auch dazu aufgefordert, ein +Verzeichnis auszuwählen, nur dieses Mal wird ScummVM alle +Unterverzeichnisse automatisch nach unterstützen Spielen durchsuchen. + + +2.0) Kontakt: +---- -------- +Der einfachste Weg, um mit dem ScummVM-Team in Verbindung zu treten, ist, +Fehlerberichte einzusenden (siehe Abschnitt 2.1) oder durch Verwendung +des Forums unter der Adresse http://forums.scummvm.org . +Sie können ebenso der Mailing-Liste scummvm-devel betreiten und an diese +E-Mails versenden oder mit uns im IRC chatten (#scummvm unter +irc.freenode.net). Bitte fordern Sie uns nicht dazu auf, ein nicht +unterstütztes Spiel zu unterstützen. Lesen Sie zuerst die Seite FAQ +(Häufig gestellte Fragen) auf unserer Website. +Bitte beachten Sie Kenntnis, dass die offizielle Sprache des Forums, +der Mailing-Liste und des Chats Englisch ist und keine andere Sprache +dort verwendet werden sollte. + + +2.1) Fehler berichten: +---- --------------- +Um einen Fehler zu berichten, erstellen Sie bitte ein SourceForge-Konto +und folgen Sie dem Link "Bug Tracker" auf der ScummVM-Website. Bitte +stellen Sie sicher, dass sich der Bug wiedererzeugen lässt und immer noch +in der neusten Version von SVN oder des Daily builds auftritt. Bitte +sehen Sie auch auf der Problemliste unten und der Kompatiblitätsliste auf +der ScummVM-Website für dieses Spiel nach, um sicherzustellen, dass das +Problem nicht bereits bekannt ist: + + http://www.scummvm.org/compatibility_stable.php + +Bitte berichten Sie keine Fehler zu Spielen, die nicht als durchspielbar +im Bereich "Supported Games" oder der Kompatiblitätsliste aufgelistet +sind. Wir -wissen-, dass diese Spiele Fehler aufweisen. + +Bitte liefern Sie folgende Informationen: + - ScummVM-Version (BITTE mit neuster Version von SVN oder + des Daily builds testen) + - Einzelheiten zum Fehler, einschließlich Anweisungen, um den Fehler + hervorzurufen + - Sprache des Spiels (Englisch, Deutsch, ...) + - Version des Spiels (Version mit Sprachausgabe [Talkie], + Disketten-Version, ...) + - Plattform und gegebenenfalls Compiler (Win32, Linux, FreeBSD, ...) + - Fügen Sie einen Speicherstand hinzu, wenn es möglich ist. + - Wenn dieser Fehler erst seit kurzem Auftritt, teilen Sie bitte die + letzte Version ohne den Fehler mit und die erste Version mit diesem + Fehler. Auf diese Weise können wir diesen schneller beseitigen, + indem wir die vorgenommen Veränderungen einsehen. + +Zum Schluss möchten wir Sie noch bitten, jeden Punkt einzeln zu +berichten; bitte senden Sie nicht mehrere Punkte mit dem selben Ticket +ein, ansonsten wird es schwierig, den Status jedes einzelnen Fehlers +zu verfolgen. Denken Sie bitte auch daran, dass alle Fehlerberichte in +Englisch verfasst sein müssen. + diff --git a/doc/translations/README-fr.txt b/doc/translations/README-fr.txt new file mode 100755 index 0000000000..186f0cd24d --- /dev/null +++ b/doc/translations/README-fr.txt @@ -0,0 +1,172 @@ +Ce document est une traduction partielle du fichier README anglais. Le +document original contient bien plus d'informations, donc si vous ne +trouvez pas ce que vous cherchez dans ce document et que vous comprenez +un peu l'anglais, jetez un coup d'oeil au fichier README anglais. + +Pour plus d'informations, liste des jeux compatibles, détails pour +donner de l'argent, la dernière version disponibles et bien plus encore, +visitez le site web de ScummVM à l'adresse http://www.scummvm.org/ + +Table des matières: +------------------- +1.0) Introduction + * 1.1 À propos de ScummVM + * 1.2 Démarrage rapide +2.0) Contact + * 2.1 Signaler des bogues + +1.0) Introduction: +---- ------------- + +1.1) À propos de ScummVM: +---- -------------------- +ScummVM est un logiciel qui vous permet de jouer certain jeux +d'aventures graphiques de type 'point-and-click' (pointer et cliquer), à +condition que vous possédiez les fichiers de données du jeu. Le plus +astucieux: ScummVM remplace juste les exécutables fournis avec les jeux, +vous permettant de jouer sur les systèmes pour lesquels ils n'ont jamais +été conçus! + +A l'origine il a été conçu pour exécuter les jeux basé sur le système +SCUMM de LucasArts, tels que Maniac Mansion, Monkey Island, Day of the +Tentacle ou Sam et Max. SCUMM est l'acronyme de 'Script Creation Utility +for Maniac Mansion', qui a été le premier jeu pour lequel LucasArts a +conçu ce système. Et beaucoup plus tard, il donna son nom à ScummVM +('VM' signifiant Virtual Machine). + +Au cours du temps de nombreux jeux non-SCUMM ont été ajouté, et ScummVM +prend désormais en charge de nombreux jeux Sierra AGI et SCI (tels que +King's Quest 1-6, Space Quest 1-5, ...), Discworld 1 et 2, Simon the +Sorcerer 1 et 2, Beneath A Steel Sky, Lure of the Temptress, Les +Chevaliers de Baphomet (Broken Sword I), Les Boucliers de Quetzalcoatl +(Broken Sword II), L'amazone queen (Flight of the Amazon Queen), +Gobliiins 1-3, la série des Legend of Kyrandia, un grand nombre de jeux +pour enfants de Humongous Entertainment (incluant les jeux Marine Malice +et Pouce-Pouce) et beaucoup plus. Vous pouvez trouver une liste complète +et détaillée sur les aventures qui sont pris en charge et les problèmes +connus sur la page de compatibilité. ScummVM évolue en permanence, donc +vérifier cette liste de compatibilités souvent. + +Vous pouvez jouer à ces jeux sur des ordinateurs de bureau classiques +(sous Windows, Linux, Mac OS X, ...), sur des consoles (Dreamcast, +Nintendo DS et Wii, PS2, PSP, ...), smartphones (Android, iPhone, Pocket +PC, Symbian ...) et plus encore. + +À ce stade ScummVM est encore en cours de développement. Soyez conscient +que malgré tous nos efforts pour en faire un logiciel le plus stable +possible, des plantages peuvent survenir. et nous n'offrons aucune +garantie. Cela étant dit, certains jeux sont supportés depuis longtemps +et devrait fonctionner correctement avec une version stable et récente +de ScummVM. Vous pouvez vous faire une idée du niveau de support d'un +jeu en regardant la page de compatibilité. En fait, si vous cherchez un +peu vous pourrez découvrir que ScummVM est même utilisé dans le commerce +pour la ré-édition sur les plates-formes modernes de quelques-uns des +jeux supportés. Cela montre que plusieurs entreprises sont satisfaits de +la qualité du logiciel. + +Si vous aimez ScummVM n'hésitez pas à faire un don en utilisant le +bouton PayPal sur la page d'accueil ScummVM. Cela nous aidera à acheter +les services nécessaires pour rendre le développement de ScummVM plus +facile et plus rapide. Si vous ne pouvez pas faire de don, vous pouvez +aussi proposer des patches! + +1.2) Démarrage rapide: +---- ---------------- +IMPORTANT: Les instructions ci-dessous supposent que vous utilisez +ScummVM en Français. Par défaut, ScummVM utilise la langue de votre +système d'exploitation. Si vous préférez utiliser ScummVM en Anglais, +vous pouvez plutôt utiliser le guide du fichier README Anglais. + + +Pour les plus impatients, voici comment obtenir ScummVM en cinq étapes +simples. + +1. Télécharger ScummVM sur <http://www.scummvm.org/downloads.php> et +installer l'application. + +2. Créez un répertoire sur votre disque dur et copier les fichiers de +données de jeu à partir du support original dans ce répertoire. Répétez +cette opération pour chaque jeu que vous voulez jouer. Utilisez un +répertoire séparé pour chaque jeu. + +3. Lancez ScummVM. + +Si ScummVM apparaît en anglais au lieu du français, procédez comme suit +pour changer la langue: +- Cliquez sur 'Options'. +- Cliquez sur la flèche droite dans la barre d'onglets et sélectionnez + l'onglet 'Misc'. +- Choisissez 'Francais' dans le champs 'GUI Language' et cliquez sur + 'OK'. Confirmez-le message qui apparaît, cliquez sur 'Quit' pour + quitter ScummVM, puis redémarrer le programme. + +Maintenant cliquez sur 'Ajouter...', puis sélectionnez le répertoire +contenant les fichiers de données du jeu (ne pas essayer de sélectionner +les fichiers de données eux-mêmes!) et cliquez sur 'Choisir'. + +4. Une boîte de dialogue devrait apparaître vous permettant de +configurer divers paramètres si vous le souhaitez (la valeur par défaut +devrait convenir dans la plupart des cas). Confirmez la boîte de +dialogue. + +5. Sélectionnez le jeu que vous voulez jouer dans la liste, et appuyez +sur 'Démarrer'. + +ScummVM se souvient des jeux ajoutés. Donc si vous quittez ScummVM puis +le relancez la liste des jeux contiendra tous les jeux que vous avez +déjà ajoutés. Vous pouvez donc passer directement à l'étape 5, à moins +que vous vouliez ajouter des jeux supplémentaires. + +Astuce: Si vous souhaitez ajouter plusieurs jeux d'un coup, essayez +d'appuyer et de maintenir la touche Maj (Shift) tout en cliquant sur +'Ajouter...' - son texte changera en 'Ajout Massif…'. Vous serez alors +invitez à sélectioner un répertoire dans lequel ScummVM parcourra tous +les sous-répertoire à la recherche de jeux supportés. + + +2.0) Contact: +---- -------- +La meilleure façon de contacter l'équipe de ScummVM est en soumettant +des rapports de bogues (voir section 2.1) ou en utilisant nos forums +http://forums.scummvm.org. Vous pouvez également envoyer un e-mail sur +la liste de diffusion scummvm-devel, ou discuter avec nous sur IRC +(#scummvm sur irc.freenode.net). S'il vous plaît ne nous demandez pas de +supporter un jeu non pris en charge - lire la FAQ sur notre site web +avant. Notez que la langue officielle de la liste de diffusion, forum et +chat est l'Anglais, et aucune autre langues ne doivent être utilisée. + + +2.1) Reporting Bugs: +---- --------------- +Pour signaler un bogue, veuillez créer un compte SourceForge et suivez +le lien "Bug Tracker" depuis notre page d'accueil. S'il vous plaît +vérifiez que le bogue est reproductible, et se produit encore dans la +'Daily Build' la plus récente. Vérifiez également la liste des problèmes +connus (ci-dessous) et la liste de compatibilité sur notre site Web pour +ce jeu, pour s'assurer que le problème n'est pas déjà connue: + + http://www.scummvm.org/compatibility_stable.php + +Veuillez ne pas rapporter de bogues sur les jeux qui ne sont pas +répertoriés comme étant finissable sur la liste de compatibilité. Nous +savons que ces jeux ont des bogues. + +Veuillez inclure les informations suivantes lorsque vous signalez un +problème: + - Version de ScummVM (veuillez tester avec la 'Daily Build' la plus + récente) + - Détails du problème, incluant les instructions pour le reproduire + - Langue du jeu (anglais, allemand, ...) + - Version du jeu (talkie, disquette, ...) + - Plate-forme et compilateur (Win32, Linux, Mac, FreeBSD, ...) + - Joindre une sauvegarde si possible + - Si ce problème est récent, s'il vous plaît notez la dernière + version sans bogue, et la première version qui à le problème. De + cette façon, nous pouvons y remédier plus rapidement, en regardant + les modifications apportées entre ces deux versions. + +Enfin, veuillez signaler chaque problème séparément, sinon, il devient +difficile de suivre l'état de chaque problème individuel. S'il vous +plaît gardez à l'esprit également que tous les rapports de bogue doivent +être rédigés en anglais. + diff --git a/doc/translations/README-translation_template.txt b/doc/translations/README-translation_template.txt new file mode 100755 index 0000000000..ec43ebef60 --- /dev/null +++ b/doc/translations/README-translation_template.txt @@ -0,0 +1,158 @@ +This document is a partial translation of the English README file. The +original document has much more information, so if you cannot find what +you need here and can understand a bit of English, try to look at the +English README file. + +For more information, compatibility lists, details on donating, the +latest release, progress reports and more, please visit the ScummVM home +page at: http://www.scummvm.org/ + +Table of Contents: +------------------ +1.0) Introduction + * 1.1 About ScummVM + * 1.2 Quick start +2.0) Contact + * 2.1 Reporting Bugs + +1.0) Introduction: +---- ------------- + +1.1) About ScummVM: +---- -------------- +ScummVM is a program which allows you to run certain classic graphical +point-and-click adventure games, provided you already have their data +files. The clever part about this: ScummVM just replaces the executables +shipped with the game, allowing you to play them on systems for which +they were never designed! + +Originally it was designed to run LucasArts' SCUMM games, such as Maniac +Mansion, Monkey Island, Day of the Tentacle or Sam and Max. SCUMM stands +for 'Script Creation Utility for Maniac Mansion', which was the first +game for which LucasArts designed this system. And much later it gave +its name to ScummVM ('VM' meaning Virtual Machine). + +Over time support for a lot of non-SCUMM games has been added, and +ScummVM now also supports many of Sierra's AGI and SCI games (such as +King's Quest 1-6, Space Quest 1-5, ...), Discworld 1 and 2, Simon the +Sorcerer 1 and 2, Beneath A Steel Sky, Lure of the Temptress, Broken +Sword I and II, Flight of the Amazon Queen, Gobliiins 1-3, The Legend of +Kyrandia series, many of Humongous Entertainment's children's SCUMM +games (including Freddi Fish and Putt Putt games) and many more. You can +find a full list with details on which adventures are supported and how +well on the compatibility page. ScummVM is continually improving, so +check back often. + +Among the systems on which you can play those games are regular desktop +computers (running Windows, Linux, Mac OS X, ...), game consoles +(Dreamcast, Nintendo DS & Wii, PS2, PSP, ...), smartphones (Android, +iPhone, PocketPC, Symbian ...) and more. + +At this time ScummVM is still under heavy development. Be aware that +whilst we attempt to make sure that many games can be completed with few +major bugs, crashes can happen and we offer no warranty. That being +said, some of the games have been supported for a long time and should +work fine with any recent stable release. You can get a feeling of how +well each game is working in ScummVM by looking at the compatibility +page. Actually if you browse a bit around you might discover that +ScummVM is even being used commercially to re-release some of the +supported games on modern platforms. This shows that several companies +are happy with the quality of the software and how well it can run some +of the games. + +If you enjoy ScummVM feel free to donate using the PayPal button on the +ScummVM homepage. This will help us buy utilities needed to develop +ScummVM easier and quicker. If you cannot donate, help and contribute a +patch! + +1.2) Quick start: +---- ------------ +IMPORTANT: This short guide assumes you are using ScummVM in <translated +language>. By default, ScummVM will use your operating system's +language. If you prefer to use ScummVM in English, You may also prefer +to follow the guide from the English REAMDE file. + +For the impatient among you, here is how to get ScummVM running in five +simple steps. + +1. Download ScummVM from <http://www.scummvm.org/downloads.php> and +install it. + +2. Create a directory on your hard drive and copy the game datafiles +from the original media to this directory. Repeat this for every game +you want to play (it is better to use a separate directory for each +game). + +3. Start ScummVM. + +If at this stage ScummVM appears in English instead of <translated +language>, do as follow to change the language: +- Click on 'Options'. +- Click on the right arrow in the tab bar and select the 'Misc' tab. +- Select "<translated language>" in the 'GUI Language' box and click on + 'OK'. +- Confirm the message box that pops-up, click on 'Quit' to quit ScummVM + and then restart the program. + +Now choose 'Add game', select the directory with the game datafiles (do +not try to select the datafiles themselves!) and press 'Choose' + +4. A dialog should popup allowing you to configure various settings if +you wish to (it should be just fine to leave everything at its default, +though). Confirm the dialog. + +5. Select the game you want to play in the list, and press 'Start'. + +ScummVM remembers the games that you add. So if you close ScummVM, the +next time you start it again the list of game will contain all the games +you previously added. You can therefore go directly to step 5, unless +you want to add more games. + +Hint: If you want to add multiple games in one go, try pressing and +holding the shift key before clicking 'Add game' -- its label will +change to 'Mass Add' and if you press it, you are again asked to select +a directory, only this time ScummVM will search through all +subdirectoriess for supported games. + + +2.0) Contact: +---- -------- +The easiest way to contact the ScummVM team is by submitting bug reports +(see section 2.1) or by using our forums at http://forums.scummvm.org . +You can also join and e-mail the scummvm-devel mailing list, or chat +with us on IRC (#scummvm on irc.freenode.net) Please do not ask us to +support an unsupported game -- read the FAQ on our web site first. Note +that the official language of the forum, mailing list and chat is +English and no other languages should be used. + + +2.1) Reporting Bugs: +---- --------------- +To report a bug, please create a SourceForge account and follow the "Bug +Tracker" link from our homepage. Please make sure the bug is +reproducible, and still occurs in the latest SVN/Daily build version. +Also check the known problems list (below) and the compatibility list on +our website for that game, to ensure the issue is not already known: + + http://www.scummvm.org/compatibility_stable.php + +Please do not report bugs on games that are not listed as being +completeable in the 'Supported Games' section, or compatibility list. We +-know- those games have bugs. + +Please include the following information: + - ScummVM version (PLEASE test the latest SVN/Daily build) + - Bug details, including instructions on reproducing + - Language of game (English, German, ...) + - Version of game (talkie, floppy, ...) + - Platform and Compiler (Win32, Linux, FreeBSD, ...) + - Attach a savegame if possible + - If this bug only occurred recently, please note the last version + without the bug, and the first version including the bug. That way + we can fix it quicker by looking at the changes made. + +Finally, please report each issue separately; do not file multiple +issues on the same ticket. (Otherwise, it gets difficult to track the +status of each individual bug). Please keep also in mind that all the +bug reports must be written in English. + diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp index d273c2a9fb..22d8adf92d 100644 --- a/engines/agi/detection.cpp +++ b/engines/agi/detection.cpp @@ -164,7 +164,7 @@ public: AgiMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "AGI preAGI + v2 + v3 Engine"; + return "AGI preAGI + v2 + v3"; } virtual const char *getOriginalCopyright() const { return "Sierra AGI Engine (C) Sierra On-Line Software"; diff --git a/engines/cine/detection.cpp b/engines/cine/detection.cpp index 2b7bf0375c..262798a34e 100644 --- a/engines/cine/detection.cpp +++ b/engines/cine/detection.cpp @@ -90,7 +90,7 @@ public: CineMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Cinematique evo 1 engine"; + return "Cinematique evo 1"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/cruise/detection.cpp b/engines/cruise/detection.cpp index d77d920205..4aaaf03e29 100644 --- a/engines/cruise/detection.cpp +++ b/engines/cruise/detection.cpp @@ -247,7 +247,7 @@ public: CruiseMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Cinematique evo 2 engine"; + return "Cinematique evo 2"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/draci/detection.cpp b/engines/draci/detection.cpp index c3502cbaa0..572ecce77b 100644 --- a/engines/draci/detection.cpp +++ b/engines/draci/detection.cpp @@ -113,7 +113,7 @@ public: DraciMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Draci Historie Engine"; + return "Draci Historie"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/drascula/detection.cpp b/engines/drascula/detection.cpp index 58a05495fd..5a8903db9d 100644 --- a/engines/drascula/detection.cpp +++ b/engines/drascula/detection.cpp @@ -296,7 +296,7 @@ public: DrasculaMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Drascula Engine"; + return "Drascula"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/gob/detection.cpp b/engines/gob/detection.cpp index c165090c4c..be44c05bfb 100644 --- a/engines/gob/detection.cpp +++ b/engines/gob/detection.cpp @@ -116,7 +116,7 @@ public: GobMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Gob Engine"; + return "Gob"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/groovie/detection.cpp b/engines/groovie/detection.cpp index bde89f8769..78ecac8dbb 100644 --- a/engines/groovie/detection.cpp +++ b/engines/groovie/detection.cpp @@ -219,7 +219,7 @@ public: GroovieMetaEngine() : AdvancedMetaEngine(detectionParams) {} const char *getName() const { - return "Groovie Engine"; + return "Groovie"; } const char *getOriginalCopyright() const { diff --git a/engines/hugo/detection.cpp b/engines/hugo/detection.cpp index 2fdb63d0a7..25b8b16084 100644 --- a/engines/hugo/detection.cpp +++ b/engines/hugo/detection.cpp @@ -161,7 +161,7 @@ public: HugoMetaEngine() : AdvancedMetaEngine(detectionParams) {} const char *getName() const { - return "Hugo Engine"; + return "Hugo"; } const char *getOriginalCopyright() const { diff --git a/engines/kyra/detection.cpp b/engines/kyra/detection.cpp index 3c59838e0f..864228a2d4 100644 --- a/engines/kyra/detection.cpp +++ b/engines/kyra/detection.cpp @@ -79,7 +79,7 @@ public: KyraMetaEngine() : AdvancedMetaEngine(detectionParams) {} const char *getName() const { - return "Legend of Kyrandia Engine"; + return "Legend of Kyrandia"; } const char *getOriginalCopyright() const { diff --git a/engines/lastexpress/detection.cpp b/engines/lastexpress/detection.cpp index e55a6f6fad..bfcb415da1 100644 --- a/engines/lastexpress/detection.cpp +++ b/engines/lastexpress/detection.cpp @@ -207,7 +207,7 @@ public: LastExpressMetaEngine() : AdvancedMetaEngine(detectionParams) {} const char *getName() const { - return "LastExpress Engine"; + return "Last Express"; } const char *getOriginalCopyright() const { diff --git a/engines/lure/detection.cpp b/engines/lure/detection.cpp index b40e60af67..a69300ee2f 100644 --- a/engines/lure/detection.cpp +++ b/engines/lure/detection.cpp @@ -205,7 +205,7 @@ public: LureMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Lure of the Temptress Engine"; + return "Lure of the Temptress"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/m4/detection.cpp b/engines/m4/detection.cpp index 645855a43b..1aefe3d02d 100644 --- a/engines/m4/detection.cpp +++ b/engines/m4/detection.cpp @@ -414,7 +414,7 @@ public: M4MetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "MADS/M4 engine"; + return "MADS/M4"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/made/detection.cpp b/engines/made/detection.cpp index e5a11766f4..4576e2b5ce 100644 --- a/engines/made/detection.cpp +++ b/engines/made/detection.cpp @@ -555,7 +555,7 @@ public: MadeMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "MADE Engine"; + return "MADE"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/mohawk/detection.cpp b/engines/mohawk/detection.cpp index 3b7efe714d..6a73b28246 100644 --- a/engines/mohawk/detection.cpp +++ b/engines/mohawk/detection.cpp @@ -188,7 +188,7 @@ public: MohawkMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Mohawk Engine"; + return "Mohawk"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/parallaction/detection.cpp b/engines/parallaction/detection.cpp index 7e5798bf5c..c3719bcd51 100644 --- a/engines/parallaction/detection.cpp +++ b/engines/parallaction/detection.cpp @@ -250,7 +250,7 @@ public: ParallactionMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Parallaction engine"; + return "Parallaction"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/saga/detection.cpp b/engines/saga/detection.cpp index ca52ff5208..b23baf4cc3 100644 --- a/engines/saga/detection.cpp +++ b/engines/saga/detection.cpp @@ -131,7 +131,7 @@ public: SagaMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Saga engine [" + return "SAGA [" #if defined(ENABLE_IHNM) && defined(ENABLE_SAGA2) "all games" diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp index 28d6abbd48..61e6cc9d09 100644 --- a/engines/sci/detection.cpp +++ b/engines/sci/detection.cpp @@ -402,7 +402,7 @@ public: SciMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "SCI Engine [SCI0, SCI01, SCI10, SCI11" + return "SCI [SCI0, SCI01, SCI10, SCI11" #ifdef ENABLE_SCI32 ", SCI32" #endif diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp index ec85f52ace..bba26961c7 100644 --- a/engines/scumm/detection.cpp +++ b/engines/scumm/detection.cpp @@ -1156,7 +1156,7 @@ Common::Error ScummMetaEngine::createInstance(OSystem *syst, Engine **engine) co } const char *ScummMetaEngine::getName() const { - return "SCUMM Engine [" + return "SCUMM [" #if defined(ENABLE_SCUMM_7_8) && defined(ENABLE_HE) "all games" diff --git a/engines/sword25/detection.cpp b/engines/sword25/detection.cpp index 9ca44c61eb..caa1cf51ac 100644 --- a/engines/sword25/detection.cpp +++ b/engines/sword25/detection.cpp @@ -102,7 +102,7 @@ public: Sword25MetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "The Broken Sword 2.5 Engine"; + return "Broken Sword 2.5"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/teenagent/detection.cpp b/engines/teenagent/detection.cpp index 8db2b36e9a..4784e2fb7e 100644 --- a/engines/teenagent/detection.cpp +++ b/engines/teenagent/detection.cpp @@ -113,7 +113,7 @@ public: } virtual const char *getName() const { - return "Teen Agent Engine"; + return "Teen Agent"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/tinsel/detection.cpp b/engines/tinsel/detection.cpp index b0af9a9f9b..27b16c5b93 100644 --- a/engines/tinsel/detection.cpp +++ b/engines/tinsel/detection.cpp @@ -104,7 +104,7 @@ public: TinselMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Tinsel Engine"; + return "Tinsel"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/toon/detection.cpp b/engines/toon/detection.cpp index f98d09a5fc..1056f6ec0d 100644 --- a/engines/toon/detection.cpp +++ b/engines/toon/detection.cpp @@ -147,7 +147,7 @@ public: ToonMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Toon Engine"; + return "Toon"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/touche/detection.cpp b/engines/touche/detection.cpp index 9d159e8327..b7f9c092aa 100644 --- a/engines/touche/detection.cpp +++ b/engines/touche/detection.cpp @@ -156,7 +156,7 @@ public: ToucheMetaEngine() : AdvancedMetaEngine(detectionParams) {} virtual const char *getName() const { - return "Touche Engine"; + return "Touche"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp index 2f0536599a..7534abdec7 100644 --- a/engines/tsage/core.cpp +++ b/engines/tsage/core.cpp @@ -3481,52 +3481,11 @@ void SceneHandler::postInit(SceneObjectList *OwnerList) { void SceneHandler::process(Event &event) { // Main keypress handler - if ((event.eventType == EVENT_KEYPRESS) && !event.handled) { - switch (event.kbd.keycode) { - case Common::KEYCODE_F1: - // F1 - Help - MessageDialog::show((_vm->getFeatures() & GF_DEMO) ? DEMO_HELP_MSG : HELP_MSG, OK_BTN_STRING); - break; - - case Common::KEYCODE_F2: { - // F2 - Sound Options - ConfigDialog *dlg = new ConfigDialog(); - dlg->runModal(); - delete dlg; - _globals->_events.setCursorFromFlag(); - break; - } - - case Common::KEYCODE_F3: - // F3 - Quit - _globals->_game->quitGame(); - event.handled = false; - break; - - case Common::KEYCODE_F4: - // F4 - Restart - _globals->_game->restartGame(); - _globals->_events.setCursorFromFlag(); - break; - - case Common::KEYCODE_F7: - // F7 - Restore - _globals->_game->restoreGame(); - _globals->_events.setCursorFromFlag(); - break; + if (!event.handled) { + _globals->_game->processEvent(event); - case Common::KEYCODE_F10: - // F10 - Pause - GfxDialog::setPalette(); - MessageDialog::show(GAME_PAUSED_MSG, OK_BTN_STRING); + if (event.eventType == EVENT_KEYPRESS) _globals->_events.setCursorFromFlag(); - break; - - default: - break; - } - - _globals->_events.setCursorFromFlag(); } // Check for displaying right-click dialog diff --git a/engines/tsage/detection.cpp b/engines/tsage/detection.cpp index 4ab2142c95..20c2002257 100644 --- a/engines/tsage/detection.cpp +++ b/engines/tsage/detection.cpp @@ -88,7 +88,7 @@ public: } virtual const char *getName() const { - return "TsAGE Engine"; + return "TsAGE"; } virtual const char *getOriginalCopyright() const { diff --git a/engines/tsage/events.cpp b/engines/tsage/events.cpp index 132225dacb..e889c56c4d 100644 --- a/engines/tsage/events.cpp +++ b/engines/tsage/events.cpp @@ -151,8 +151,13 @@ void EventsClass::setCursor(CursorType cursorType) { switch (cursorType) { case CURSOR_NONE: // No cursor - cursor = _resourceManager->getSubResource(4, 1, 6, &size); _globals->setFlag(122); + + if (_vm->getFeatures() & GF_DEMO) { + CursorMan.showMouse(false); + return; + } + cursor = _resourceManager->getSubResource(4, 1, 6, &size); break; case CURSOR_LOOK: diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp index 5da00e8522..85dfc5d058 100644 --- a/engines/tsage/graphics.cpp +++ b/engines/tsage/graphics.cpp @@ -967,9 +967,10 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) { // Event loop GfxButton *selectedButton = NULL; - while (!_vm->getEventManager()->shouldQuit()) { + bool breakFlag = false; + while (!_vm->getEventManager()->shouldQuit() && !breakFlag) { Event event; - while (_globals->_events.getEvent(event)) { + while (_globals->_events.getEvent(event) && !breakFlag) { // Adjust mouse positions to be relative within the dialog event.mousePos.x -= _gfxManager._bounds.left; event.mousePos.y -= _gfxManager._bounds.top; @@ -978,19 +979,23 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) { if ((*i)->process(event)) selectedButton = static_cast<GfxButton *>(*i); } - } - if (selectedButton) - break; - else if (!event.handled) { - if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) { - selectedButton = NULL; - break; - } else if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN)) { - selectedButton = defaultButton; + if (selectedButton) { + breakFlag = true; break; + } else if (!event.handled) { + if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) { + selectedButton = NULL; + breakFlag = true; + break; + } else if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN)) { + selectedButton = defaultButton; + breakFlag = true; + break; + } } } + g_system->delayMillis(10); g_system->updateScreen(); } diff --git a/engines/tsage/ringworld_demo.cpp b/engines/tsage/ringworld_demo.cpp index 2dacea660a..3ad414fa20 100644 --- a/engines/tsage/ringworld_demo.cpp +++ b/engines/tsage/ringworld_demo.cpp @@ -39,6 +39,68 @@ Scene *RingworldDemoGame::createScene(int sceneNumber) { return new RingworldDemoScene(); } +void RingworldDemoGame::quitGame() { + _globals->_events.setCursor(CURSOR_ARROW); + MessageDialog *dlg = new MessageDialog(DEMO_EXIT_MSG, EXIT_BTN_STRING, DEMO_BTN_STRING); + dlg->draw(); + + GfxButton *selectedButton = dlg->execute(&dlg->_btn2); + bool exitFlag = selectedButton != &dlg->_btn2; + + delete dlg; + _globals->_events.hideCursor(); + + if (exitFlag) + _vm->quitGame(); +} + +void RingworldDemoGame::pauseGame() { + _globals->_events.setCursor(CURSOR_ARROW); + MessageDialog *dlg = new MessageDialog(DEMO_PAUSED_MSG, EXIT_BTN_STRING, DEMO_RESUME_BTN_STRING); + dlg->draw(); + + GfxButton *selectedButton = dlg->execute(&dlg->_btn2); + bool exitFlag = selectedButton != &dlg->_btn2; + + delete dlg; + _globals->_events.hideCursor(); + + if (exitFlag) + _vm->quitGame(); +} + +void RingworldDemoGame::processEvent(Event &event) { + if (event.eventType == EVENT_KEYPRESS) { + switch (event.kbd.keycode) { + case Common::KEYCODE_F1: + // F1 - Help + MessageDialog::show(DEMO_HELP_MSG, OK_BTN_STRING); + break; + + case Common::KEYCODE_F2: { + // F2 - Sound Options + ConfigDialog *dlg = new ConfigDialog(); + dlg->runModal(); + delete dlg; + _globals->_events.setCursorFromFlag(); + break; + } + + case Common::KEYCODE_F3: + // F3 - Quit + quitGame(); + event.handled = false; + break; + + default: + break; + } + } else if (event.eventType == EVENT_BUTTON_DOWN) { + pauseGame(); + event.handled = true; + } +} + /*-------------------------------------------------------------------------- * Ringworld Demo scene * diff --git a/engines/tsage/ringworld_demo.h b/engines/tsage/ringworld_demo.h index 8b69da8f43..7492c1e871 100644 --- a/engines/tsage/ringworld_demo.h +++ b/engines/tsage/ringworld_demo.h @@ -32,9 +32,13 @@ namespace tSage { class RingworldDemoGame: public Game { +private: + void pauseGame(); public: virtual void start(); virtual Scene *createScene(int sceneNumber); + virtual void quitGame(); + virtual void processEvent(Event &event); }; class RingworldDemoScene: public Scene { diff --git a/engines/tsage/ringworld_logic.cpp b/engines/tsage/ringworld_logic.cpp index a03c4081da..2141fcce5a 100644 --- a/engines/tsage/ringworld_logic.cpp +++ b/engines/tsage/ringworld_logic.cpp @@ -1421,4 +1421,52 @@ void RingworldGame::endGame(int resNum, int lineNum) { _globals->_events.setCursorFromFlag(); } +void RingworldGame::processEvent(Event &event) { + if (event.eventType == EVENT_KEYPRESS) { + switch (event.kbd.keycode) { + case Common::KEYCODE_F1: + // F1 - Help + MessageDialog::show(HELP_MSG, OK_BTN_STRING); + break; + + case Common::KEYCODE_F2: { + // F2 - Sound Options + ConfigDialog *dlg = new ConfigDialog(); + dlg->runModal(); + delete dlg; + _globals->_events.setCursorFromFlag(); + break; + } + + case Common::KEYCODE_F3: + // F3 - Quit + quitGame(); + event.handled = false; + break; + + case Common::KEYCODE_F4: + // F4 - Restart + restartGame(); + _globals->_events.setCursorFromFlag(); + break; + + case Common::KEYCODE_F7: + // F7 - Restore + restoreGame(); + _globals->_events.setCursorFromFlag(); + break; + + case Common::KEYCODE_F10: + // F10 - Pause + GfxDialog::setPalette(); + MessageDialog::show(GAME_PAUSED_MSG, OK_BTN_STRING); + _globals->_events.setCursorFromFlag(); + break; + + default: + break; + } + } +} + } // End of namespace tSage diff --git a/engines/tsage/ringworld_logic.h b/engines/tsage/ringworld_logic.h index 6fa92fa043..19b0f10b42 100644 --- a/engines/tsage/ringworld_logic.h +++ b/engines/tsage/ringworld_logic.h @@ -453,6 +453,7 @@ public: virtual void endGame(int resNum, int lineNum); virtual Scene *createScene(int sceneNumber); + virtual void processEvent(Event &event); }; } // End of namespace tSage diff --git a/engines/tsage/ringworld_scenes2.cpp b/engines/tsage/ringworld_scenes2.cpp index 906f648b9e..4378eac724 100644 --- a/engines/tsage/ringworld_scenes2.cpp +++ b/engines/tsage/ringworld_scenes2.cpp @@ -477,13 +477,14 @@ void Scene1001::Action1::signal() { case 19: { _globals->_soundHandler.startSound(91); byte adjustData[4] = {0xff, 0xff, 0xff, 0}; - _globals->_scenePalette.fade(adjustData, true, 0); + _globals->_scenePalette.fade(adjustData, false, 0); scene->_object1._strip = 7; scene->_object1._frame = 1; scene->_object1.setPosition(Common::Point(314, 112)); scene->_object1.addMover(NULL); setDelay(2); + break; } case 20: _globals->_scenePalette.loadPalette(16); diff --git a/engines/tsage/scenes.h b/engines/tsage/scenes.h index a5aacbacfa..b3c009c4fe 100644 --- a/engines/tsage/scenes.h +++ b/engines/tsage/scenes.h @@ -129,6 +129,7 @@ public: virtual void quitGame() {} virtual void endGame(int resNum, int lineNum) {} virtual Scene *createScene(int sceneNumber) = 0; + virtual void processEvent(Event &event) {} }; } // End of namespace tSage diff --git a/engines/tsage/staticres.cpp b/engines/tsage/staticres.cpp index 6c2d92497e..9f36268ce3 100644 --- a/engines/tsage/staticres.cpp +++ b/engines/tsage/staticres.cpp @@ -112,6 +112,10 @@ const char *SCENE6100_VERY_WELL = "Very well. I will retrieve the stasis box and Wait for it's return in the lander bay."; const char *DEMO_HELP_MSG = " Help...\rF2 - Sound Options\rF3 - Exit demo\r\rPress ENTER\rto continue"; -const char *DEMO_PAUSED_MSG = " demo is paused"; +const char *DEMO_PAUSED_MSG = "Ringworld\x14 demo is paused"; +const char *DEMO_EXIT_MSG = "Press ENTER to resume the Ringworld\x14 demo. Press ESC to exit"; +const char *EXIT_BTN_STRING = "Exit"; +const char *DEMO_BTN_STRING = "Demo"; +const char *DEMO_RESUME_BTN_STRING = "Resume"; } // End of namespace tSage diff --git a/engines/tsage/staticres.h b/engines/tsage/staticres.h index bed9e0dce0..fa93511779 100644 --- a/engines/tsage/staticres.h +++ b/engines/tsage/staticres.h @@ -79,6 +79,12 @@ extern const char *SCENE6100_VERY_WELL; // Demo messages extern const char *DEMO_HELP_MSG; extern const char *DEMO_PAUSED_MSG; +extern const char *DEMO_HELP_MSG; +extern const char *DEMO_PAUSED_MSG; +extern const char *DEMO_EXIT_MSG; +extern const char *EXIT_BTN_STRING; +extern const char *DEMO_BTN_STRING; +extern const char *DEMO_RESUME_BTN_STRING; } // End of namespace tSage diff --git a/engines/tucker/detection.cpp b/engines/tucker/detection.cpp index 89b0b87fbd..9b466d682d 100644 --- a/engines/tucker/detection.cpp +++ b/engines/tucker/detection.cpp @@ -143,7 +143,7 @@ public: } virtual const char *getName() const { - return "Tucker Engine"; + return "Tucker"; } virtual const char *getOriginalCopyright() const { diff --git a/gui/credits.h b/gui/credits.h index 7ad480032e..f8e939061d 100644 --- a/gui/credits.h +++ b/gui/credits.h @@ -59,7 +59,7 @@ static const char *credits[] = { "C0""Ludvig Strigeus", "C2""(retired)", "", -"C1""BASS", +"C1""Beneath a Steel Sky", "C0""Robert G\366ffringmann", "C2""(retired)", "C0""Oliver Kiehl", @@ -101,7 +101,7 @@ static const char *credits[] = { "C0""Vincent Hamm", "C2""(retired)", "", -"C1""Draci", +"C1""Draci Historie", "C0""Denis Kasak", "C0""Robert Spalek", "", @@ -109,7 +109,7 @@ static const char *credits[] = { "C0""Filippos Karapetis", "C0""Pawel Kolodziejski", "", -"C1""FOTAQ", +"C1""Flight of the Amazon Queen", "C0""David Eriksson", "C2""(retired)", "C0""Gregory Montoir", @@ -131,7 +131,7 @@ static const char *credits[] = { "C0""Oystein Eftevaag", "C0""Eugene Sandulenko", "", -"C1""Kyra", +"C1""Legend of Kyrandia", "C0""Torbj\366rn Andersson", "C2""VQA Player", "C0""Oystein Eftevaag", @@ -144,7 +144,7 @@ static const char *credits[] = { "C0""Jordi Vilalta Prat", "C0""Julien Templier", "", -"C1""Lure", +"C1""Lure of the Temptress", "C0""Paul Gilbert", "", "C1""M4", @@ -185,7 +185,7 @@ static const char *credits[] = { "C0""Jordi Vilalta Prat", "C0""Lars Skovlund", "", -"C1""TeenAgent", +"C1""Teen Agent", "C0""Robert Megone", "C2""Help with callback rewriting", "C0""Vladimir Menshakov", diff --git a/gui/options.cpp b/gui/options.cpp index d3501390db..e42d6c62ee 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -305,8 +305,14 @@ void OptionsDialog::close() { if (getResult()) { // Graphic options + bool graphicsModeChanged = false; if (_fullscreenCheckbox) { if (_enableGraphicSettings) { + if (ConfMan.getBool("fullscreen", _domain) != _fullscreenCheckbox->getState()) + graphicsModeChanged = true; + if (ConfMan.getBool("aspect_ratio", _domain) != _aspectCheckbox->getState()) + graphicsModeChanged = true; + ConfMan.setBool("fullscreen", _fullscreenCheckbox->getState(), _domain); ConfMan.setBool("aspect_ratio", _aspectCheckbox->getState(), _domain); ConfMan.setBool("disable_dithering", _disableDitheringCheckbox->getState(), _domain); @@ -318,6 +324,8 @@ void OptionsDialog::close() { while (gm->name) { if (gm->id == (int)_gfxPopUp->getSelectedTag()) { + if (ConfMan.get("gfx_mode", _domain) != gm->name) + graphicsModeChanged = true; ConfMan.set("gfx_mode", gm->name, _domain); isSet = true; break; @@ -338,6 +346,48 @@ void OptionsDialog::close() { ConfMan.removeKey("render_mode", _domain); } } + + // Setup graphics again if needed + if (_domain == Common::ConfigManager::kApplicationDomain && graphicsModeChanged) { + g_system->beginGFXTransaction(); + g_system->setGraphicsMode(ConfMan.get("gfx_mode", _domain).c_str()); + + if (ConfMan.hasKey("aspect_ratio")) + g_system->setFeatureState(OSystem::kFeatureAspectRatioCorrection, ConfMan.getBool("aspect_ratio", _domain)); + if (ConfMan.hasKey("fullscreen")) + g_system->setFeatureState(OSystem::kFeatureFullscreenMode, ConfMan.getBool("fullscreen", _domain)); + OSystem::TransactionError gfxError = g_system->endGFXTransaction(); + if (gfxError != OSystem::kTransactionSuccess) { + // Revert ConfMan to what OSystem is using. + Common::String message = "Failed to apply some of the graphic options changes:"; + + if (gfxError & OSystem::kTransactionModeSwitchFailed) { + const OSystem::GraphicsMode *gm = g_system->getSupportedGraphicsModes(); + while (gm->name) { + if (gm->id == g_system->getGraphicsMode()) { + ConfMan.set("gfx_mode", gm->name, _domain); + break; + } + gm++; + } + message += "\nthe video mode could not be changed."; + } + + if (gfxError & OSystem::kTransactionAspectRatioFailed) { + ConfMan.setBool("aspect_ratio", g_system->getFeatureState(OSystem::kFeatureAspectRatioCorrection), _domain); + message += "\nthe fullscreen setting could not be changed"; + } + + if (gfxError & OSystem::kTransactionFullscreenFailed) { + ConfMan.setBool("fullscreen", g_system->getFeatureState(OSystem::kFeatureFullscreenMode), _domain); + message += "\nthe aspect ratio setting could not be changed"; + } + + // And display the error + GUI::MessageDialog dialog(message); + dialog.runModal(); + } + } // Volume options if (_musicVolumeSlider) { diff --git a/test/common/array.h b/test/common/array.h index f17edd3984..c10270436f 100644 --- a/test/common/array.h +++ b/test/common/array.h @@ -107,6 +107,34 @@ class ArrayTestSuite : public CxxTest::TestSuite } + void test_self_insert() { + Common::Array<int> array; + int i; + + // Insert some data -- and make sure we have enough space for + // *twice* as much data. This way, there is no need to allocate + // new storage, so if the insert() operation is "clever", it + // will try to reuse the existing storage. + // This in turn may uncover bugs if the insertion code does not + // expect self-insertions. + array.reserve(128); + for (i = 0; i < 64; ++i) + array.push_back(i); + + // Now insert the array into the middle of itself + array.insert_at(12, array); + + // Verify integrity + TS_ASSERT_EQUALS(array.size(), 128UL); + + for (i = 0; i < 12; ++i) + TS_ASSERT_EQUALS(array[i], i); + for (i = 0; i < 64; ++i) + TS_ASSERT_EQUALS(array[i+12], i); + for (i = 12; i < 64; ++i) + TS_ASSERT_EQUALS(array[i+64], i); + } + void test_remove_at() { Common::Array<int> array; diff --git a/test/module.mk b/test/module.mk index 3542ae2903..4e5cbf62e1 100644 --- a/test/module.mk +++ b/test/module.mk @@ -9,7 +9,7 @@ TESTS := $(srcdir)/test/common/*.h $(srcdir)/test/audio/*.h TEST_LIBS := audio/libaudio.a common/libcommon.a # -TEST_FLAGS := --runner=StdioPrinter +TEST_FLAGS := --runner=StdioPrinter --no-std --no-eh TEST_CFLAGS := -I$(srcdir)/test/cxxtest TEST_LDFLAGS := $(LIBS) TEST_CXXFLAGS := $(filter-out -Wglobal-constructors,$(CXXFLAGS)) |