aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2002-09-27 23:27:14 +0000
committerMax Horn2002-09-27 23:27:14 +0000
commit6024c80f147ce275413332323c2de8db6095c82b (patch)
tree86d42eb89c5866fd6418c867503521cc43643ddb
parente674b9e2e23ef1aa21b0be7c682dd77ceb591223 (diff)
downloadscummvm-rg350-6024c80f147ce275413332323c2de8db6095c82b.tar.gz
scummvm-rg350-6024c80f147ce275413332323c2de8db6095c82b.tar.bz2
scummvm-rg350-6024c80f147ce275413332323c2de8db6095c82b.zip
added (currently completly useless) launcher dialog
svn-id: r5024
-rw-r--r--Makefile.common2
-rw-r--r--backends/sdl/sdl-common.cpp4
-rw-r--r--common/gameDetector.cpp9
-rw-r--r--common/gameDetector.h10
-rw-r--r--common/main.cpp7
-rw-r--r--gui/launcher.cpp73
-rw-r--r--gui/launcher.h37
-rw-r--r--scumm/dialogs.cpp5
8 files changed, 133 insertions, 14 deletions
diff --git a/Makefile.common b/Makefile.common
index 758bfce9e5..7149e90da6 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -14,7 +14,7 @@ COMMON_OBJS = common/config-file.o common/engine.o common/file.o \
common/timer.o common/util.o
GUI_OBJS = gui/gui.o gui/newgui.o gui/widget.o gui/dialog.o gui/ListWidget.o \
- gui/ScrollBarWidget.o gui/message.o
+ gui/ScrollBarWidget.o gui/message.o gui/launcher.o
SCUMM_OBJS = scumm/actor.o scumm/akos.o scumm/boxes.o scumm/bundle.o \
scumm/costume.o scumm/debug.o scumm/debugrl.o scumm/gfx.o scumm/imuse.o \
diff --git a/backends/sdl/sdl-common.cpp b/backends/sdl/sdl-common.cpp
index 4808515490..45c25acdd0 100644
--- a/backends/sdl/sdl-common.cpp
+++ b/backends/sdl/sdl-common.cpp
@@ -70,7 +70,7 @@ void OSystem_SDL_Common::set_timer(int timer, int (*callback)(int)) {
}
OSystem_SDL_Common::OSystem_SDL_Common()
- : sdl_screen(0), SCREEN_WIDTH(0), SCREEN_HEIGHT(0),
+ : sdl_screen(0), cdrom(0), SCREEN_WIDTH(0), SCREEN_HEIGHT(0),
_dirty_checksums(0), _current_shake_pos(0), _new_shake_pos(0)
{
// allocate palette storage
@@ -91,7 +91,7 @@ OSystem_SDL_Common::~OSystem_SDL_Common()
void OSystem_SDL_Common::init_size(uint w, uint h) {
// Avoid redundant res changes
- if (w == SCREEN_WIDTH && h == SCREEN_HEIGHT)
+ if ((int)w == SCREEN_WIDTH && (int)h == SCREEN_HEIGHT)
return;
SCREEN_WIDTH = w;
diff --git a/common/gameDetector.cpp b/common/gameDetector.cpp
index 5e402eee7a..11bbb2e390 100644
--- a/common/gameDetector.cpp
+++ b/common/gameDetector.cpp
@@ -336,18 +336,11 @@ bool GameDetector::parseMusicDriver(const char *s) {
}
-struct VersionSettings {
- const char *filename;
- const char *gamename;
- byte id, major, middle, minor;
- uint32 features;
-};
-
/*
This is a list of all known SCUMM games. Commented games are not
supported at this time */
-static const VersionSettings version_settings[] = {
+const VersionSettings version_settings[] = {
/* Scumm Version 1 */
// {"maniac", "Maniac Mansion (C64)", GID_MANIAC64, 1, 0, 0,},
// {"zak", "Zak McKracken and the Alien Mindbenders (C64)", GID_ZAK64, 1, 0, 0,},
diff --git a/common/gameDetector.h b/common/gameDetector.h
index 6393440863..d628b45500 100644
--- a/common/gameDetector.h
+++ b/common/gameDetector.h
@@ -26,6 +26,16 @@
class OSystem;
class MidiDriver;
+struct VersionSettings {
+ const char *filename;
+ const char *gamename;
+ byte id, major, middle, minor;
+ uint32 features;
+};
+
+extern const VersionSettings version_settings[];
+
+
class GameDetector {
public:
int detectMain(int argc, char **argv);
diff --git a/common/main.cpp b/common/main.cpp
index 54e24564c9..207269500a 100644
--- a/common/main.cpp
+++ b/common/main.cpp
@@ -25,6 +25,7 @@
#include "gameDetector.h"
#include "config-file.h"
#include "gui/newgui.h"
+#include "gui/launcher.h"
#include "gui/message.h"
GameDetector detector;
@@ -186,10 +187,16 @@ int main(int argc, char *argv[])
system->set_palette(dummy_palette, 0, 16);
+#if 1
+ extern OSystem *g_system;
+ g_system = system;
+ Dialog *dlg = new LauncherDialog(g_gui);
+#else
const char *message = "This dialog is shown before the\n"
"Engine obejct is even created.\n"
"Wow! Ain't we cool?\n";
Dialog *dlg = new MessageDialog(g_gui, message);
+#endif
dlg->open();
g_gui->runLoop();
delete dlg;
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
new file mode 100644
index 0000000000..b25afd6292
--- /dev/null
+++ b/gui/launcher.cpp
@@ -0,0 +1,73 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2002 The ScummVM project
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#include "stdafx.h"
+#include "launcher.h"
+#include "newgui.h"
+#include "ListWidget.h"
+
+#include "common/engine.h"
+#include "common/gameDetector.h"
+#include "common/list.h"
+
+enum {
+ kOptionsCmd = 'QUIT',
+ kQuitCmd = 'QUIT'
+};
+
+LauncherDialog::LauncherDialog(NewGui *gui)
+ : Dialog(gui, 0, 0, 320, 200)
+{
+ // Add three buttons at the bottom
+ addButton(1*(_w - 54)/4, _h - 24, 54, 16, "Quit", kQuitCmd, 'Q');
+ addButton(2*(_w - 54)/4, _h - 24, 54, 16, "Options", kOptionsCmd, 'O');
+ addButton(3*(_w - 54)/4, _h - 24, 54, 16, "Run", kCloseCmd, 'R');
+
+ // Add list with game titles
+ ListWidget *w = new ListWidget(this, 10, 10, 300, 112);
+ w->setNumberingMode(kListNumberingOff);
+
+ const VersionSettings *v = version_settings;
+ ScummVM::StringList l;
+
+ while (v->filename && v->gamename) {
+ l.push_back(v->gamename);
+ v++;
+ }
+
+ w->setList(l);
+
+ // TODO - add an edit field with the path information; or maybe even a "file selector" ?
+}
+
+void LauncherDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data)
+{
+ switch (cmd) {
+ case kListItemChangedCmd:
+ break;
+ case kListItemDoubleClickedCmd:
+ break;
+ case kQuitCmd:
+ g_system->quit();
+ break;
+ default:
+ Dialog::handleCommand(sender, cmd, data);
+ }
+}
diff --git a/gui/launcher.h b/gui/launcher.h
new file mode 100644
index 0000000000..c0afb9a406
--- /dev/null
+++ b/gui/launcher.h
@@ -0,0 +1,37 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2002 The ScummVM project
+ *
+ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+#ifndef LAUNCHER_DIALOG_H
+#define LAUNCHER_DIALOG_H
+
+#include "dialog.h"
+#include "common/str.h"
+
+class LauncherDialog : public Dialog {
+ typedef ScummVM::String String;
+public:
+ LauncherDialog(NewGui *gui);
+
+ void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
+
+protected:
+};
+
+#endif
diff --git a/scumm/dialogs.cpp b/scumm/dialogs.cpp
index d1b681f891..34e0d3e54a 100644
--- a/scumm/dialogs.cpp
+++ b/scumm/dialogs.cpp
@@ -273,9 +273,8 @@ void SaveLoadDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 dat
case kOptionsCmd:
_scumm->optionsDialog();
break;
- case kQuitCmd: {
- _scumm->_system->quit();
- }
+ case kQuitCmd:
+ _scumm->_system->quit();
break;
default:
Dialog::handleCommand(sender, cmd, data);