[Change] Still cleaning up the place.
-- Basically just moving things into conf.c to make things cleaner. -- Got to get the input out player.c That file is wayyyy too big.
This commit is contained in:
parent
5f3f1a9529
commit
95ac1a61d7
60
src/conf.c
60
src/conf.c
@ -1,3 +1,7 @@
|
|||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
|
||||||
#include "lua.h"
|
#include "lua.h"
|
||||||
#include "lauxlib.h"
|
#include "lauxlib.h"
|
||||||
#include "lualib.h"
|
#include "lualib.h"
|
||||||
@ -38,6 +42,21 @@ extern char* namjoystick;
|
|||||||
// From player.c
|
// From player.c
|
||||||
extern const char* keybindNames[]; // Keybindings.
|
extern const char* keybindNames[]; // Keybindings.
|
||||||
|
|
||||||
|
static void print_usae(char** argv);
|
||||||
|
|
||||||
|
// Print usage.
|
||||||
|
static void print_usage(char** argv) {
|
||||||
|
LOG("USAGE: %s [OPTION]", argv[0]);
|
||||||
|
LOG("Options are:");
|
||||||
|
LOG("\t-f, --fullscreen - Fullscreen");
|
||||||
|
LOG("\t-F, --fps - Limit frames per second");
|
||||||
|
LOG("\t-d s, --data s - Set the data file to be s");
|
||||||
|
LOG("\t-j n, --joystick n - Use joystick (n)");
|
||||||
|
LOG("\t-J s, --joystick s - Use joystick whose name contains (s)");
|
||||||
|
LOG("\t-h --help - Display this message and exit.");
|
||||||
|
LOG("\t-v - Print the version and exit");
|
||||||
|
}
|
||||||
|
|
||||||
// Set the default configuration.
|
// Set the default configuration.
|
||||||
void conf_setDefaults(void) {
|
void conf_setDefaults(void) {
|
||||||
// Global.
|
// Global.
|
||||||
@ -139,3 +158,44 @@ int conf_loadConfig(const char* file) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parse some CLI options.
|
||||||
|
void conf_parseCLI(int argc, char** argv) {
|
||||||
|
static struct option long_options[] = {
|
||||||
|
{ "fullscreen", no_argument, 0, 'f' },
|
||||||
|
{ "fps", required_argument, 0, 'F' },
|
||||||
|
{ "data", required_argument, 0, 'd' },
|
||||||
|
{ "joystick", required_argument, 0, 'j' },
|
||||||
|
{ "Joystick", required_argument, 0, 'J' },
|
||||||
|
{ "help", no_argument, 0, 'h' },
|
||||||
|
{ "version", no_argument, 0, 'v' },
|
||||||
|
{ NULL, 0, 0, 0 }
|
||||||
|
};
|
||||||
|
int option_index = 0;
|
||||||
|
int c = 0;
|
||||||
|
|
||||||
|
while((c = getopt_long(argc, argv, "fF:d:J:j:hv", long_options, &option_index)) != -1) {
|
||||||
|
switch(c) {
|
||||||
|
case 'f':
|
||||||
|
gl_screen.fullscreen = 1;
|
||||||
|
break;
|
||||||
|
case 'F':
|
||||||
|
max_fps = atoi(optarg);
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
data = strdup(optarg);
|
||||||
|
break;
|
||||||
|
case 'j':
|
||||||
|
indjoystick = atoi(optarg);
|
||||||
|
break;
|
||||||
|
case 'J':
|
||||||
|
namjoystick = strdup(optarg);
|
||||||
|
break;
|
||||||
|
case 'v':
|
||||||
|
LOG(APPNAME": version %d.%d.%d", VMAJOR, VMINOR, VREV);
|
||||||
|
case 'h':
|
||||||
|
print_usage(argv);
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -2,4 +2,5 @@
|
|||||||
|
|
||||||
void conf_setDefaults(void);
|
void conf_setDefaults(void);
|
||||||
int conf_loadConfig(const char* file);
|
int conf_loadConfig(const char* file);
|
||||||
|
void conf_parseCLI(int argc, char** argv);
|
||||||
|
|
||||||
|
119
src/main.c
119
src/main.c
@ -1,7 +1,5 @@
|
|||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include <unistd.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <getopt.h>
|
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
@ -31,6 +29,7 @@
|
|||||||
#define MINIMUM_FPS 0.5
|
#define MINIMUM_FPS 0.5
|
||||||
#define FONT_SIZE 12
|
#define FONT_SIZE 12
|
||||||
|
|
||||||
|
static int space = 1; // Global value, control whether or not player is flying.
|
||||||
static int quit = 0; // Primary loop.
|
static int quit = 0; // Primary loop.
|
||||||
static unsigned int time = 0; // Calculate FPS and movement.
|
static unsigned int time = 0; // Calculate FPS and movement.
|
||||||
static char version[VERSION_LEN];
|
static char version[VERSION_LEN];
|
||||||
@ -46,26 +45,12 @@ char* namjoystick = NULL;
|
|||||||
|
|
||||||
// Prototypes.
|
// Prototypes.
|
||||||
|
|
||||||
static void print_usage(char** argv);
|
|
||||||
static void display_fps(const double dt);
|
static void display_fps(const double dt);
|
||||||
static void window_caption(void);
|
static void window_caption(void);
|
||||||
static void data_name(void);
|
static void data_name(void);
|
||||||
// Update.
|
// Update.
|
||||||
static void update_all(void);
|
static void update_space(void);
|
||||||
static void render_all(void);
|
static void render_space(void);
|
||||||
|
|
||||||
// Usage.
|
|
||||||
static void print_usage(char** argv) {
|
|
||||||
LOG("USAGE: %s [OPTION]", argv[0]);
|
|
||||||
LOG("Options are:");
|
|
||||||
LOG("\t-f, --fullscreen - Fullscreen");
|
|
||||||
LOG("\t-F, --fps - Limit frames per second");
|
|
||||||
LOG("\t-d s, --data s - Set the data file to be s");
|
|
||||||
LOG("\t-j n, --joystick n - Use joystick (n)");
|
|
||||||
LOG("\t-J s, --joystick s - Use joystick whose name contains (s)");
|
|
||||||
LOG("\t-h --help - Display this message and exit.");
|
|
||||||
LOG("\t-v - Print the version and exit");
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
|
||||||
@ -79,61 +64,13 @@ int main(int argc, char** argv) {
|
|||||||
// Input must be initialized for config to work.
|
// Input must be initialized for config to work.
|
||||||
input_init();
|
input_init();
|
||||||
|
|
||||||
// Set the default config values.
|
// Set the configuration.
|
||||||
conf_setDefaults();
|
conf_setDefaults(); // Default config values.
|
||||||
|
conf_loadConfig(CONF_FILE); // Have Lua parse config.
|
||||||
|
conf_parseCLI(argc, argv); // Parse CLI arguments.
|
||||||
|
|
||||||
// Have Lua parse the config file.
|
// Load the data basics.
|
||||||
conf_loadConfig(CONF_FILE);
|
data_name();
|
||||||
|
|
||||||
// Parse arguments.
|
|
||||||
static struct option long_options[] = {
|
|
||||||
{ "fullscreen", no_argument, 0, 'f' },
|
|
||||||
{ "fps", required_argument, 0, 'F' },
|
|
||||||
{ "data", required_argument, 0, 'd' },
|
|
||||||
{ "joystick", required_argument, 0, 'j' },
|
|
||||||
{ "joystick", required_argument, 0, 'J' },
|
|
||||||
{ "help", no_argument, 0, 'h' },
|
|
||||||
{ "version", no_argument, 0, 'v' },
|
|
||||||
{ NULL, 0, 0, 0 }
|
|
||||||
};
|
|
||||||
int option_index = 0;
|
|
||||||
int c = 0;
|
|
||||||
while((c = getopt_long(argc, argv, "fF:d:J:j:hv", long_options, &option_index)) != -1) {
|
|
||||||
switch(c) {
|
|
||||||
case 'f':
|
|
||||||
gl_screen.fullscreen = 1;
|
|
||||||
break;
|
|
||||||
case 'F':
|
|
||||||
if(optarg != NULL) show_fps = atoi(optarg);
|
|
||||||
else max_fps = !show_fps;
|
|
||||||
break;
|
|
||||||
case 'd':
|
|
||||||
data = strdup(optarg);
|
|
||||||
break;
|
|
||||||
case 'j':
|
|
||||||
indjoystick = atoi(optarg);
|
|
||||||
break;
|
|
||||||
case 'J':
|
|
||||||
namjoystick = strdup(optarg);
|
|
||||||
break;
|
|
||||||
case 'v':
|
|
||||||
LOG(APPNAME": version %d.%d.%d", VMAJOR, VMINOR, VREV);
|
|
||||||
case 'h':
|
|
||||||
print_usage(argv);
|
|
||||||
exit(EXIT_SUCCESS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if the data file is valid.
|
|
||||||
if(pack_check(data)) {
|
|
||||||
ERR("Data file '%s'not found", data);
|
|
||||||
WARN("You should specify which data file to use with '-d'");
|
|
||||||
WARN("See -h or --help for more information.");
|
|
||||||
SDL_Quit();
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
data_name(); // Loads the data's name and friends.
|
|
||||||
LOG(" %s", dataname);
|
LOG(" %s", dataname);
|
||||||
DEBUG();
|
DEBUG();
|
||||||
|
|
||||||
@ -182,6 +119,7 @@ int main(int argc, char** argv) {
|
|||||||
if(ai_init())
|
if(ai_init())
|
||||||
WARN("Error initializing AI");
|
WARN("Error initializing AI");
|
||||||
|
|
||||||
|
// Misc openGL init stuff.
|
||||||
gl_fontInit(NULL, NULL, FONT_SIZE); // Init default font size.
|
gl_fontInit(NULL, NULL, FONT_SIZE); // Init default font size.
|
||||||
gui_init(); // Init the GUI crap.
|
gui_init(); // Init the GUI crap.
|
||||||
|
|
||||||
@ -206,10 +144,18 @@ int main(int argc, char** argv) {
|
|||||||
// Event loop.
|
// Event loop.
|
||||||
while(SDL_PollEvent(&event)) {
|
while(SDL_PollEvent(&event)) {
|
||||||
if(event.type == SDL_QUIT) quit = 1; // Handle quit.
|
if(event.type == SDL_QUIT) quit = 1; // Handle quit.
|
||||||
input_handle(&event); // handles all the events the player keybinds.
|
|
||||||
|
if(space) // Player is flying around happily.
|
||||||
|
input_handle(&event); // handles all the events the player keybinds.
|
||||||
|
}
|
||||||
|
|
||||||
|
if(space) {
|
||||||
|
// Player is flying around.
|
||||||
|
update_space();
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
render_space();
|
||||||
|
SDL_GL_SwapBuffers();
|
||||||
}
|
}
|
||||||
update_all();
|
|
||||||
render_all();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unload data.
|
// Unload data.
|
||||||
@ -229,13 +175,15 @@ int main(int argc, char** argv) {
|
|||||||
joystick_exit(); // Release joystick.
|
joystick_exit(); // Release joystick.
|
||||||
input_exit(); // Clean up keybindings.
|
input_exit(); // Clean up keybindings.
|
||||||
gl_exit(); // Kills video output.
|
gl_exit(); // Kills video output.
|
||||||
|
|
||||||
|
// All is good.
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Updates everything.
|
// Updates the game.
|
||||||
static double fps_dt = 1.;
|
static double fps_dt = 1.;
|
||||||
static double dt = 0.;
|
static double dt = 0.;
|
||||||
static void update_all(void) {
|
static void update_space(void) {
|
||||||
// dt in ms/1000.
|
// dt in ms/1000.
|
||||||
dt = (double)(SDL_GetTicks() - time) / 1000.;
|
dt = (double)(SDL_GetTicks() - time) / 1000.;
|
||||||
time = SDL_GetTicks();
|
time = SDL_GetTicks();
|
||||||
@ -257,7 +205,7 @@ static void update_all(void) {
|
|||||||
pilots_update(dt);
|
pilots_update(dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
// == Renders everything. ==================================
|
// == Renders the game. ==================================
|
||||||
// Blitting order. (layers)
|
// Blitting order. (layers)
|
||||||
//
|
//
|
||||||
// BG | Stars and planets.
|
// BG | Stars and planets.
|
||||||
@ -272,9 +220,7 @@ static void update_all(void) {
|
|||||||
// | Foreground particles.
|
// | Foreground particles.
|
||||||
// | Text and GUI.
|
// | Text and GUI.
|
||||||
// ========================================================
|
// ========================================================
|
||||||
static void render_all(void) {
|
static void render_space(void) {
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
|
||||||
|
|
||||||
// BG.
|
// BG.
|
||||||
space_render(dt);
|
space_render(dt);
|
||||||
planets_render();
|
planets_render();
|
||||||
@ -285,8 +231,6 @@ static void render_all(void) {
|
|||||||
// FG.
|
// FG.
|
||||||
player_render();
|
player_render();
|
||||||
display_fps(dt);
|
display_fps(dt);
|
||||||
|
|
||||||
SDL_GL_SwapBuffers();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -310,6 +254,15 @@ static void display_fps(const double dt) {
|
|||||||
static void data_name(void) {
|
static void data_name(void) {
|
||||||
uint32_t bufsize;
|
uint32_t bufsize;
|
||||||
char* buf;
|
char* buf;
|
||||||
|
|
||||||
|
// Check if data file is valid.
|
||||||
|
if(pack_check(DATA)) {
|
||||||
|
ERR("Data file '%s' not found", data);
|
||||||
|
WARN("You should specify which data file to use with '-d'");
|
||||||
|
WARN("See -h or --help for more information");
|
||||||
|
SDL_Quit();
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
// Check the version.
|
// Check the version.
|
||||||
buf = pack_readfile(DATA, VERSION_FILE, &bufsize);
|
buf = pack_readfile(DATA, VERSION_FILE, &bufsize);
|
||||||
|
Loading…
Reference in New Issue
Block a user