diff options
author | Ludvig Strigeus | 2002-04-12 21:26:59 +0000 |
---|---|---|
committer | Ludvig Strigeus | 2002-04-12 21:26:59 +0000 |
commit | d2b0070c5f39661561484f8e2dfd6be271ed21cf (patch) | |
tree | 0e751495a08c9514e82879d78a977ad6f27469a7 /main.cpp | |
parent | b195bb597c32384bf4ce6f9c22ffc281c0828ca4 (diff) | |
download | scummvm-rg350-d2b0070c5f39661561484f8e2dfd6be271ed21cf.tar.gz scummvm-rg350-d2b0070c5f39661561484f8e2dfd6be271ed21cf.tar.bz2 scummvm-rg350-d2b0070c5f39661561484f8e2dfd6be271ed21cf.zip |
new video engine (expect broken non-sdl builds),
simon the sorcerer 1 & 2 support (non SCUMM games)
svn-id: r3912
Diffstat (limited to 'main.cpp')
-rw-r--r-- | main.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000000..ee20253902 --- /dev/null +++ b/main.cpp @@ -0,0 +1,87 @@ +#include "stdafx.h" +#include "scumm.h" +#include "gameDetector.h" +#include "gui.h" +#include "simon/simon.h" + +GameDetector detector; +Gui gui; + +Scumm *g_scumm; +SoundEngine sound; +SOUND_DRIVER_TYPE snd_driv; + + +#if !defined(__APPLE__) +#undef main +#endif + +int main(int argc, char *argv[]) +{ +#if defined(MACOS) + /* support for config file on macos */ + + char *argitem; + char *argstr; + FILE *argf; + + if ((argf = fopen("configuration.macos", "r")) == NULL) { + error("Can't open configuration file.\n"); + exit(1); + } + + argc = 0; + argstr = (char *)malloc(64); + argstr = fgets(argstr, 64, argf); + if ((argitem = strchr(argstr, '\n')) != NULL) + *argitem = '\0'; + + argitem = strtok(argstr, " "); + + while (argitem != NULL) { + argv = (char **)realloc(argv, (argc + 1) * 8); + argv[argc] = (char *)malloc(64); + strcpy(argv[argc], argitem); + argc++; + + argitem = strtok(NULL, " "); + } + + free(argstr); + fclose(argf); + +#endif + + if (detector.detectMain(argc, argv)) + return (-1); + + OSystem *system = OSystem_SDL_create(detector._gfx_mode, false); + + { + char *s = detector.getGameName(); + system->set_param(OSystem::PARAM_WINDOW_CAPTION, (long)s); + free(s); + } + + /* Simon the Sorcerer? */ + if (detector._gameId >= GID_SIMON_FIRST && detector._gameId <= GID_SIMON_LAST) { + /* Simon the Sorcerer. Completely different initialization */ + SimonState *simon = SimonState::create(); + simon->_game = detector._gameId - GID_SIMON_FIRST; + simon->go(system); + + } else { + Scumm *scumm = Scumm::createFromDetector(&detector, system); + g_scumm = scumm; + + sound.initialize(scumm, &snd_driv); + + /* bind to Gui */ + scumm->_gui = &gui; + gui.init(scumm); /* Reinit GUI after loading a game */ + + scumm->go(); + } + + return 0; +} |