aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/PalmOS/Src/launcher/forms/formSelect.cpp
diff options
context:
space:
mode:
authorChris Apers2007-05-01 14:50:55 +0000
committerChris Apers2007-05-01 14:50:55 +0000
commit8573ca3f7409108bff0e24ba3a942ca692ce5787 (patch)
tree69765c162244a502c79d451e5116a8cc5cbd21e9 /backends/platform/PalmOS/Src/launcher/forms/formSelect.cpp
parent54b8a4d06f56b3045f0e5a1ec3709ac1524f48d0 (diff)
downloadscummvm-rg350-8573ca3f7409108bff0e24ba3a942ca692ce5787.tar.gz
scummvm-rg350-8573ca3f7409108bff0e24ba3a942ca692ce5787.tar.bz2
scummvm-rg350-8573ca3f7409108bff0e24ba3a942ca692ce5787.zip
Added supported games list and got rid of bStartScumm
svn-id: r26716
Diffstat (limited to 'backends/platform/PalmOS/Src/launcher/forms/formSelect.cpp')
-rwxr-xr-xbackends/platform/PalmOS/Src/launcher/forms/formSelect.cpp275
1 files changed, 275 insertions, 0 deletions
diff --git a/backends/platform/PalmOS/Src/launcher/forms/formSelect.cpp b/backends/platform/PalmOS/Src/launcher/forms/formSelect.cpp
new file mode 100755
index 0000000000..7fd29e6145
--- /dev/null
+++ b/backends/platform/PalmOS/Src/launcher/forms/formSelect.cpp
@@ -0,0 +1,275 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2001 Ludvig Strigeus
+ * Copyright (C) 2001-2007 The ScummVM project
+ * Copyright (C) 2002-2007 Chris Apers - PalmOS Backend
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * $URL$
+ * $Id$
+ *
+ */
+
+#include <PalmOS.h>
+#include "StarterRsc.h"
+#include "formUtil.h"
+#include "games.h"
+#include "start.h"
+
+static Char **items = NULL;
+Int16 selectedEngine = -1;
+
+// Supported games
+static const char *engine_agos[] = {
+ "Demon in my Pocket",
+ "Elvira - Mistress of the Dark",
+ "Elvira II - The Jaws of Cerberus",
+ "Jumble",
+ "NoPatience",
+ "Simon the Sorcerer I",
+ "Simon the Sorcerer II",
+ "Swampy Adventures",
+ "The Feeble Files",
+ "Waxworks"
+};
+
+static const char *engine_sky[] = {
+ "Floppy, CD and Demo"
+};
+
+static const char *engine_sword1[] = {
+ "The Shadow of the Templars (PC/Mac)",
+ "The Shadow of the Templars (Demo)"
+};
+
+static const char *engine_sword2[] = {
+ "The Smoking Mirror",
+ "The Smoking Mirror (Demo)"
+};
+
+static const char *engine_cine[] = {
+ "Future Wars",
+ "Operation Stealth"
+};
+
+static const char *engine_queen[] = {
+ "Flight of the Amazon Queen"
+};
+
+static const char *engine_lure[] = {
+ "Lure of the Tempress"
+};
+
+static const char *engine_gob[] = {
+ "Bargon Attack",
+ "Gobliiins",
+ "Gobliins 2",
+ "Goblins Quest 3",
+ "The Bizarre Adventures of Woodruff and the Schnibble",
+ "Ween: The Prophecy",
+};
+
+static const char *engine_kyra[] = {
+ "The Legend of Kyrandia",
+ "The Legend of Kyrandia: The Hand of Fate",
+ "The Legend of Kyrandia: Malcolm's Revenge"
+};
+
+static const char *engine_parallaction[] = {
+ "Nippon Safes Inc."
+};
+
+static const char *engine_saga[] = {
+ "I Have No Mouth And I Must Scream",
+ "Inherit the earth"
+};
+
+static const char *engine_scumm[] = {
+ "Day of the Tentacle",
+ "Indiana Jones and the Fate of Atlantis",
+ "Indiana Jones and the Last Crusade",
+ "Loom",
+ "Maniac Mansion",
+ "Monkey Island 2: LeChuck's Revenge",
+ "Passport to Adventure",
+ "Sam & Max Hit the Road",
+ "The Secret of Monkey Island"
+ "Zak McKracken and the Alien Mindbenders"
+};
+
+static const char *engine_agi[] = {
+ "AGI Tetris",
+ "Caitlyn's Destiny",
+ "Donald Duck's Playground",
+ "Fanmade AGI game",
+ "Gold Rush!",
+ "King's Quest I: Quest for the Crown",
+ "King's Quest II: Romancing the Throne",
+ "King's Quest III: To Heir Is Human",
+ "King's Quest IV: The Perils of Rosella",
+ "Leisure Suit Larry in the Land of the Lounge Lizards",
+ "Mixed-Up Mother Goose",
+ "Manhunter 1: New York",
+ "Manhunter 2: San Francisco",
+ "Police Quest I: In Pursuit of the Death Angel",
+ "Serguei's Destiny 1",
+ "Serguei's Destiny 2",
+ "Space Quest 0: Replicated",
+ "Space Quest I: The Sarien Encounter",
+ "Space Quest II: Vohaul's Revenge",
+ "Space Quest X: The Lost Chapter",
+ "The Black Cauldron",
+ "Xmas Card"
+};
+
+static const char *engine_touche[] = {
+ "Touche: The Adventures of the Fifth Musketeer"
+};
+
+static const char *engine_cruise[] = {
+ "Cruise for a Corpse"
+};
+
+static const struct {
+ int size;
+ const char **listP;
+} supported[] = {
+ { 10, engine_agos },
+ { 1, engine_sky },
+ { 2, engine_sword1 },
+ { 2, engine_sword2 },
+ { 2, engine_cine },
+ { 1, engine_queen },
+ { 1, engine_lure },
+ { 6, engine_gob },
+ { 3, engine_kyra },
+ { 1, engine_parallaction },
+ { 2, engine_saga },
+ { 10, engine_scumm },
+ { 22, engine_agi },
+ { 1, engine_touche },
+ { 1, engine_cruise }
+};
+
+static void SelectorSetList(Int16 sel) {
+ ListType *listP;
+ FormPtr frmP = FrmGetActiveForm();
+
+ Boolean toBeDrawn = (items != NULL);
+ if (items)
+ MemPtrFree(items);
+
+ listP = (ListType *)FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, EngineSupportedList));
+ items = (Char **)MemPtrNew(supported[sel].size * sizeof(Char *));
+
+ for (int i = 0; i < supported[sel].size; i++)
+ items[i] = (Char *)supported[sel].listP[i];
+
+ LstSetListChoices (listP, items, supported[sel].size);
+ LstSetTopItem(listP, 0);
+ LstSetSelection(listP, -1);
+
+ if (toBeDrawn) {
+ WinScreenLock(winLockCopy);
+ LstDrawList(listP);
+ WinScreenUnlock();
+ }
+}
+
+static void SelectorFormInit() {
+ ListType *listP;
+ FormPtr frmP = FrmGetActiveForm();
+
+ listP = (ListType *)FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, EngineListList));
+ itemsText = (Char **)MemPtrNew(ENGINE_COUNT * sizeof(Char *));
+
+ for (int i = 0; i < ENGINE_COUNT; i++)
+ itemsText[i] = (Char *)engines[i].nameP;
+
+ LstSetListChoices (listP, itemsText, ENGINE_COUNT);
+ LstSetSelection(listP, 0);
+
+ SelectorSetList(0);
+
+ FrmDrawForm(frmP);
+}
+
+static void SelectorFormFree(bool quit) {
+ items = NULL;
+
+ if (!quit) {
+ ListType *listP = (ListType *)GetObjectPtr(EngineListList);
+ Int16 sel = LstGetSelection(listP);
+
+ FrmReturnToMain();
+ StartScummVM(sel);
+
+ } else {
+ FrmReturnToMain();
+
+ if (bDirectMode) {
+ // force exit if nothing selected
+ EventType event;
+ event.eType = keyDownEvent;
+ event.data.keyDown.chr = vchrLaunch;
+ event.data.keyDown.modifiers = commandKeyMask;
+ EvtAddUniqueEventToQueue(&event, 0, true);
+ }
+ }
+}
+
+Boolean SelectorFormHandleEvent(EventPtr eventP) {
+ FormPtr frmP = FrmGetActiveForm();
+ Boolean handled = false;
+
+ switch (eventP->eType) {
+ case frmOpenEvent:
+ SelectorFormInit();
+ handled = true;
+ break;
+
+ case frmCloseEvent:
+ SelectorFormFree(true);
+ handled = true;
+ break;
+
+ case lstSelectEvent:
+ if (eventP->data.lstSelect.listID == EngineSupportedList)
+ LstSetSelection(eventP->data.lstSelect.pList, -1);
+ else
+ SelectorSetList(eventP->data.lstSelect.selection);
+ handled = true;
+ break;
+
+ case ctlSelectEvent:
+ switch (eventP->data.ctlSelect.controlID)
+ {
+ case EngineOkButton:
+ SelectorFormFree(false);
+ break;
+
+ case EngineCancelButton:
+ SelectorFormFree(true);
+ break;
+ }
+ handled = true;
+ break;
+
+ default:
+ break;
+ }
+
+ return handled;
+}