diff --git a/bin/conf.example b/bin/conf.example index b89c21b..91d8b19 100644 --- a/bin/conf.example +++ b/bin/conf.example @@ -3,12 +3,19 @@ width = 800 height = 640 fullscreen = 0 +-- SCREEN. +fps = 0 + -- JOYSTICK. -- Can be number or substring of joystick name. joystick = "Precision" -- KEYBINDINGS. -- Type can be keyboard, jaxis or jbutton. +-- +-- If left is an axis, it will automatically set right to the same axis. +-- setting both to the same axis (key). +-- You can use reverse = 1 option to reverse them. accel = { type = "jbutton", key = 0 } left = { type = "jaxis", key = 0 } right = { type = "jaxis", key = 0 } diff --git a/scripts/ai/test.lua b/scripts/ai/test.lua index 6efafd7..03890ed 100644 --- a/scripts/ai/test.lua +++ b/scripts/ai/test.lua @@ -1,9 +1,9 @@ function follow() - target = 1 + target =1 dir = face(target) - dist = getdist(getpos(target)) + dist = getdist(getpos(targer)) if dir < 10 and dist > 100 then - accel() + accel(dist/100-1) end end diff --git a/src/main.c b/src/main.c index 14c9bba..3919b51 100644 --- a/src/main.c +++ b/src/main.c @@ -28,6 +28,9 @@ extern const char* keybindNames[]; // Keybindings. static int quit = 0; // Primary loop. static unsigned int time = 0; // Calculate FPS and movement. +#define DATA_DEF "data" +char* data = NULL; + static int show_fps = 1; // Default - True. // Prototypes. @@ -43,8 +46,8 @@ static void print_usage(char** argv) { LOG("USAGE: %s [OPTION]", argv[0]); LOG("Options are:"); LOG("\t-f, --fullscreen - Fullscreen"); - //LOG("\t-w n - Set width to (n)"); - //LOG("\t-h n - Set height to (n)"); + LOG("\t-F, --fps - Toggle 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."); @@ -56,6 +59,8 @@ int main(int argc, char** argv) { // Initialize SDL for possible warnings. SDL_Init(0); // Default values.. + // Global. + data = DATA_DEF; gl_screen.w = 800; gl_screen.h = 640; gl_screen.fullscreen = 0; @@ -72,6 +77,10 @@ int main(int argc, char** argv) { // Use Lua to parse configuration file. lua_State* L = luaL_newstate(); if(luaL_dofile(L, CONF_FILE) == 0) { // Conf file exists. + // Global. + lua_getglobal(L, "data"); + if(lua_isstring(L, -1)) + data = strdup((char*)lua_tostring(L, -1)); // OpenGL properties. lua_getglobal(L, "width"); if(lua_isnumber(L, -1)) @@ -142,23 +151,28 @@ int main(int argc, char** argv) { // Parse arguments. static struct option long_options[] = { - { "fullscreen", no_argument, 0, 'f' }, - { "fps", optional_argument, 0, 'F' }, - { "joystick", required_argument, 0, 'j' }, - { "joystick", required_argument, 0, 'J' }, - { "help", no_argument, 0, 'h' }, - { "version", no_argument, 0, 'v' }, + { "fullscreen", no_argument, 0, 'f' }, + { "fps", optional_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, "fFJ:j:hv", long_options, &option_index)) != -1) { + while((c = getopt_long(argc, argv, "fFd: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 show_fps = !show_fps; + break; + case 'd': + data = strdup(optarg); break; case 'j': indjoystick = atoi(optarg); diff --git a/src/main.h b/src/main.h index 1d24a79..9f16338 100644 --- a/src/main.h +++ b/src/main.h @@ -5,5 +5,6 @@ #define ABS(X) ((X<0)?-X:X) -#define DATA "data" // Data file. +extern char* data; // Modifiable datafile. +#define DATA data // Data file.