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; +} | 
