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 $";
44 #include "oglconsole.h"
46 extern struct game
* current_game
;
49 * TODO: Rename function. Need to look around code where it calls
50 * SDL_Quit() and exit and see if we can call this instead in
61 int parse_resolution(char *res
, int *w
, int *h
, int *bpp
)
66 snprintf(res_copy
, sizeof(res_copy
)-1, "%s", res
);
67 p
= strtok(res_copy
, "x");
74 p
= strtok(NULL
, "x");
81 p
= strtok(NULL
, "x");
91 printf("Could not parse resolution '%s'\n", res
);
96 /* TODO: rewrite parsing routines here */
97 /* TODO: Add 'map' command to change maps */
98 static void console_input(OGLCONSOLE_Console console
, int argc
, char **argv
)
101 int width
, height
, x
;
106 if (!strcasecmp(cmd
, "quit") ||
107 !strcasecmp(cmd
, "exit")) {
111 if (!strcasecmp(cmd
, "res")) {
113 con_printf("usage: res <resolution> e.g. 640x480\n");
116 if (parse_resolution(argv
[1], &width
, &height
, &x
) != 0) {
117 con_printf("usage: res <resolution> e.g. 640x480\n");
120 screen_set_resolution(width
, height
);
121 screen_switch_resolution();
122 OGLCONSOLE_InitText(console
, width
, height
);
126 if (!strcasecmp(cmd
, "score")) {
128 con_printf("Start playing, first...\n");
131 if (!current_game
->players
) {
132 con_printf("But, there are no players?\n");
135 for (x
= 0; x
< current_game
->n_players
; x
++) {
136 con_printf("Player %d: %d points, %d lives\n", x
+1,
137 current_game
->players
[x
].score
,
138 current_game
->players
[x
].lives
);
143 OGLCONSOLE_Output(console
, "Invalid command: %s\n", cmd
);
147 int main(int argc
, char **argv
)
150 int width
= 800, height
= 600, bpp
= 32, fullscreen
= 0;
151 int enable_sound
= 1;
153 while ((opt
= getopt(argc
, argv
, "fwr:q")) != EOF
) {
165 if (parse_resolution(optarg
, &width
, &height
,
168 printf("Set resolution to %dx%dx%d\n",
172 fprintf(stderr
, "Invalid command line option: %c\n",
182 render_reshape_window(screen->w, screen->h);
185 srand(SDL_GetTicks());
187 screen_init(fullscreen
, width
, height
, bpp
);
189 audio_init(enable_sound
);
193 object_read_file("gfx/pacman-moving.3d", &last_update);
194 object_read_file("gfx/pacman-dying.3d", &last_update);
195 object_read_file("gfx/pacman-stopped.3d", &last_update);
196 object_read_file("gfx/ghost-green-moving.3d", &last_update);
197 object_read_file("gfx/ghost-green-dying.3d", &last_update);
198 object_read_file("gfx/ghost-green-returning.3d", &last_update);
200 if(argc > 1 && strcmp(argv[1], "--server") == 0)
203 if(argc > 1 && strcmp(argv[1], "--connect") == 0)
204 net_client_init(argv[2]);
208 OGLCONSOLE_EnterKey(console_input
);