3 Copyright (C) 2003 Nuno Subtil
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 static const char cvsid
[] =
21 "$Id: main.c,v 1.60 2003/11/27 22:11:57 nsubtil Exp $";
33 #include <libgen.h> /* basename() */
45 #include "oglconsole.h"
48 extern struct game
* current_game
;
51 * TODO: Rename function. Need to look around code where it calls
52 * SDL_Quit() and exit and see if we can call this instead in
63 int parse_resolution(char *res
, int *w
, int *h
, int *bpp
)
68 snprintf(res_copy
, sizeof(res_copy
)-1, "%s", res
);
69 p
= strtok(res_copy
, "x");
76 p
= strtok(NULL
, "x");
83 p
= strtok(NULL
, "x");
93 printf("Could not parse resolution '%s'\n", res
);
98 /* TODO: rewrite parsing routines here */
99 /* TODO: Add 'map' command to change maps */
100 static void console_input(OGLCONSOLE_Console console
, int argc
, char **argv
)
103 int width
, height
, x
;
108 if (!strcasecmp(cmd
, "quit") ||
109 !strcasecmp(cmd
, "exit")) {
113 if (!strcasecmp(cmd
, "res")) {
115 con_printf("usage: res <resolution> e.g. 640x480\n");
118 if (parse_resolution(argv
[1], &width
, &height
, &x
) != 0) {
119 con_printf("usage: res <resolution> e.g. 640x480\n");
122 screen_set_resolution(width
, height
);
123 screen_switch_resolution();
124 OGLCONSOLE_InitText(console
, width
, height
);
128 if (!strcasecmp(cmd
, "high-scores")) {
129 debug_print_high_scores();
133 if (!strncasecmp(cmd
, "score", 5)) {
135 con_printf("Start playing, first...\n");
138 if (!current_game
->players
) {
139 con_printf("But, there are no players?\n");
142 for (x
= 0; x
< current_game
->n_players
; x
++) {
143 con_printf("Player %d: %d points, %d lives\n", x
+1,
144 current_game
->players
[x
].score
,
145 current_game
->players
[x
].lives
);
150 OGLCONSOLE_Output(console
, "Invalid command: %s\n", cmd
);
153 void usage(char *prog
)
155 printf("Usage: %s [options]\n"
158 "\t-q\tQuiet (disable sound)\n"
159 "\t-r\tResolution <w>x<h> e.g. 640x480\n"
160 "\t-h\tThis help text\n", basename(prog
));
163 int main(int argc
, char **argv
)
166 int width
= 800, height
= 600, bpp
= 32, fullscreen
= 0;
167 int enable_sound
= 1;
169 while ((opt
= getopt(argc
, argv
, "fwr:q")) != EOF
) {
181 if (parse_resolution(optarg
, &width
, &height
,
184 printf("Set resolution to %dx%dx%d\n",
188 fprintf(stderr
, "Invalid command line option: %c\n",
198 render_reshape_window(screen->w, screen->h);
201 srand(SDL_GetTicks());
203 screen_init(fullscreen
, width
, height
, bpp
);
205 audio_init(enable_sound
);
209 object_read_file("gfx/pacman-moving.3d", &last_update);
210 object_read_file("gfx/pacman-dying.3d", &last_update);
211 object_read_file("gfx/pacman-stopped.3d", &last_update);
212 object_read_file("gfx/ghost-green-moving.3d", &last_update);
213 object_read_file("gfx/ghost-green-dying.3d", &last_update);
214 object_read_file("gfx/ghost-green-returning.3d", &last_update);
216 if(argc > 1 && strcmp(argv[1], "--server") == 0)
219 if(argc > 1 && strcmp(argv[1], "--connect") == 0)
220 net_client_init(argv[2]);
224 OGLCONSOLE_EnterKey(console_input
);