steed/src/sdl-instead/main.c

175 lines
3.4 KiB
C
Raw Normal View History

#include "externals.h"
#include "internals.h"
2009-08-26 08:25:53 +03:00
extern int debug_init(void);
extern void debug_done(void);
int debug_sw = 0;
int noauto_sw = 0;
2009-11-21 13:58:24 +02:00
int nostdgames_sw = 0;
int nostdthemes_sw = 0;
2010-01-20 14:41:38 +02:00
int version_sw = 0;
2009-08-31 22:50:29 +03:00
char *game_sw = NULL;
2009-09-03 13:34:53 +03:00
char *games_sw = NULL;
2009-09-07 09:14:26 +03:00
char *theme_sw = NULL;
2009-09-03 13:34:53 +03:00
char *themes_sw = NULL;
2009-10-12 08:07:15 +03:00
char *encode_sw = NULL;
char *encode_output = NULL;
2009-10-24 18:57:08 +03:00
char *mode_sw = NULL;
2009-02-21 12:52:44 +02:00
int main(int argc, char **argv)
{
2009-10-12 08:07:15 +03:00
int err = 0;
2009-08-26 08:25:53 +03:00
int i;
2009-10-25 07:51:03 +02:00
putenv("SDL_MOUSE_RELATIVE=0"); /* test this! */
2009-08-26 08:25:53 +03:00
for (i = 1; i < argc; i++) {
if (!strcmp(argv[i],"-alsa"))
alsa_sw = 1;
else if (!strcmp(argv[i], "-nosound"))
nosound_sw = 1;
else if (!strcmp(argv[i], "-fullscreen"))
fullscreen_sw = 1;
2009-10-24 18:57:08 +03:00
else if (!strcmp(argv[i], "-mode")) {
if ((i + 1) < argc)
mode_sw = argv[++i];
else
mode_sw = "-1x-1";
} else if (!strcmp(argv[i], "-window"))
2009-08-26 08:25:53 +03:00
window_sw = 1;
else if (!strcmp(argv[i], "-debug"))
debug_sw = 1;
else if (!strcmp(argv[i], "-noautosave"))
noauto_sw = 1;
2009-08-31 22:50:29 +03:00
else if (!strcmp(argv[i], "-game")) {
if ((i + 1) < argc)
game_sw = argv[++i];
else
game_sw = "";
2009-09-07 09:14:26 +03:00
} else if (!strcmp(argv[i], "-theme")) {
if ((i + 1) < argc)
theme_sw = argv[++i];
else
theme_sw = "";
2009-11-21 13:58:24 +02:00
} else if (!strcmp(argv[i], "-nostdgames")) {
nostdgames_sw = 1;
} else if (!strcmp(argv[i], "-nostdthemes")) {
nostdthemes_sw = 1;
2009-09-03 13:34:53 +03:00
} else if (!strcmp(argv[i], "-gamespath")) {
if ((i + 1) < argc)
games_sw = argv[++i];
else
games_sw = "";
} else if (!strcmp(argv[i], "-themespath")) {
if ((i + 1) < argc)
themes_sw = argv[++i];
else
themes_sw = "";
2009-10-12 08:07:15 +03:00
} else if (!strcmp(argv[i], "-encode")) {
if ((i + 1) < argc)
encode_sw = argv[++i];
else {
fprintf(stderr,"No lua file specified.\n");
exit(1);
}
if ((i + 1) < argc)
encode_output = argv[++i];
else
encode_output = "lua.enc";
2010-01-20 14:41:38 +02:00
} else if (!strcmp(argv[i], "-version")) {
version_sw = 1;
2010-01-21 17:32:53 +02:00
} else {
fprintf(stderr,"Unknow option: %s\n", argv[i]);
exit(1);
2009-10-12 08:07:15 +03:00
}
2010-01-20 14:41:38 +02:00
}
2009-09-03 13:34:53 +03:00
2009-08-26 08:25:53 +03:00
if (debug_sw) {
debug_init();
}
2010-01-20 14:41:38 +02:00
if (version_sw) {
fprintf(stdout, VERSION"\n");
goto out;
}
2009-10-12 08:07:15 +03:00
if (encode_sw) {
err = instead_encode(encode_sw, encode_output);
goto out;
}
2010-01-20 14:41:38 +02:00
menu_langs_lookup(LANG_PATH);
if (!langs_nr) {
fprintf(stderr, "No languages found in: %s.\n", LANG_PATH);
exit(1);
}
2009-11-20 09:54:50 +02:00
cfg_load();
if (!opt_lang || !opt_lang[0])
opt_lang = game_locale();
2009-11-20 10:14:33 +02:00
if (menu_lang_select(opt_lang) && menu_lang_select(LANG_DEF)) {
fprintf(stderr, "Can not load default language.\n");
exit(1);
}
2009-09-03 13:34:53 +03:00
if (games_sw)
games_lookup(games_sw);
2009-11-21 13:58:24 +02:00
if (!nostdgames_sw && games_lookup(GAMES_PATH))
fprintf(stderr, "No games found in: %s.\n", GAMES_PATH);
2009-09-03 13:34:53 +03:00
if (themes_sw)
themes_lookup(themes_sw);
2009-11-21 13:58:24 +02:00
if (!nostdthemes_sw) {
themes_lookup(THEMES_PATH);
themes_lookup(game_local_themes_path());
}
2009-08-26 08:25:53 +03:00
2009-11-21 13:58:24 +02:00
if (!nostdgames_sw)
games_lookup(game_local_games_path());
2009-09-03 13:34:53 +03:00
if (noauto_sw)
opt_autosave = 0;
2009-09-15 12:47:23 +03:00
if (window_sw)
opt_fs = 0;
if (fullscreen_sw)
opt_fs = 1;
2009-10-24 18:57:08 +03:00
if (mode_sw)
parse_mode(mode_sw, opt_mode);
2009-09-15 12:47:23 +03:00
2009-09-01 20:42:05 +03:00
if (game_sw) {
2009-09-07 09:14:26 +03:00
FREE(opt_game);
2009-08-31 22:50:29 +03:00
opt_game = game_sw;
2009-09-01 20:42:05 +03:00
}
2009-09-07 09:14:26 +03:00
if (theme_sw) {
FREE(opt_theme);
opt_theme = theme_sw;
}
2009-09-01 20:42:05 +03:00
2009-08-26 08:25:53 +03:00
if (opt_theme)
game_theme_select(opt_theme);
if (!curtheme_dir)
game_theme_select(DEFAULT_THEME);
// Initialize SDL
2009-09-10 20:07:32 +03:00
if (gfx_init() < 0)
return -1;
2009-08-26 08:25:53 +03:00
if (game_init(opt_game)) {
game_error(opt_game);
2009-02-21 12:52:44 +02:00
}
game_loop();
2009-08-26 08:25:53 +03:00
cfg_save();
2009-10-03 20:01:56 +03:00
game_done(0);
2009-10-12 08:07:15 +03:00
gfx_done();
out:
2009-08-26 08:25:53 +03:00
if (debug_sw)
debug_done();
2009-10-12 08:07:15 +03:00
return err;
2009-02-21 12:52:44 +02:00
}
2009-08-26 08:25:53 +03:00