diff --git a/README b/README index 29aa854..c8183d8 100644 --- a/README +++ b/README @@ -35,17 +35,50 @@ already been documented before posting. Instructions: ~~~~~~~~~~~~~ Keys: + ========================================================= + Lephisto uses a dynamic keybinding system that allows you + to configure the keybinds to joystick, keyboard or a mix + of both. + -- Joystick. + If you are going to use a joystick, You will have to tell + Lephisto which joystick to use. You can either use the -j + or -J parameter from the terminal or put it in the conf + file. + -- Eg. + -- ./Lephisto -j 0 + -- ./Lephisto -J "Precision" + -- joystick = "Precision" # in conf file. + + -- Syntax. + KEY_IDENTIFIER = { type = KEY_TYPE, key = KEY_NUMBER, + [reverse = KEY_REVERSE] } + + KEY_IDENTIFIER is the indetifier given below: + KEY_TYPE can be one of keyboard, jaxis or jbutton. + KEY_NUMBER is the number of the key (found with xev) + KEY_REVERSE is whether it is reversed or not, which + is only useful in the case of jaxis. + + -- Eg. + accel = { type = "jbutton", key = 0 } + ========================================================= Movement: -- w : Accelerate. -- a : Left. -- d : Right. Combat: - -- Space : Primary weapons. - -- Tab : Target. - -- 'r' : Target closest hostile ship. - -- 'f' : Faces the target. - -- 'b' : Board the target. + -- Space : Primary weapons. + -- Tab : Target. + -- 'r' : Target closest hostile ship. + -- 'f' : Faces the target. + -- 'b' : Board the target. + -- Left Shift : Fires secondary weapon. + -- 'q' : Switches to the next secondary weapon. + + Space: + -- 'p' : Cycles through planets. + -- 'l' : Attempts to land or targets nearest planet. GUI: -- UP : Zoom in. diff --git a/bin/Makefile b/bin/Makefile index 52efd9d..996c5bd 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -63,4 +63,9 @@ clean: @echo -e "\tRemoving data.." rm -rf $(OBJS) $(APPNAME) $(DATA) pack core mksprite *.out a.txt #rm -rf ../lib/lua/*.o ../lib/lua/*.a + @echo -e "\tCleaning utils." + @(cd ../utils/pack; $(MAKE) clean) + @(cd ../utils/mkspr; $(MAKE) clean) + @echo -e "\tCleaning Lua" + @(cd ../lib/lua; $(MAKE) clean) diff --git a/bin/conf.example b/bin/conf.example index 80631c5..f854873 100644 --- a/bin/conf.example +++ b/bin/conf.example @@ -16,12 +16,25 @@ joystick = "Precision" -- 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 } -primary = { type = "jbutton", key = 1 } -target = { type = "jbutton", key = 4 } -target_nearest = { type = "jbutton", key = 3 } -mapzoomin = { type = "jbutton", key = 7 } -mapzoomout = { type = "jbuton", key = 6 } + +-- Movement. +accel = { type = "jbutton", key = 0 } +left = { type = "jaxis", key = 0 } +right = { type = "jaxis", key = 0 } + +-- Combat. +primary = { type = "jbutton", key = 1 } +target = { type = "jbutton", key = 4 } +target_nearest = { type = "jbutton", key = 3 } +face = { type = "keyboard", key = 38 } +board = { type = "keyboard", key = 57 } +secondary = { type = "jbutton", key = 7 } +secondary_next = { type = "jbutotn", key = 5 } + +-- Space. + +-- Gui. +mapzoomin = { type = "jbutton", key = 4 } +mapzoomout = { type = "jbuton", key = 6 } +screenshot = { type = "keyboard", key = 82 } diff --git a/src/ai.c b/src/ai.c index 758f08f..c71c9f5 100644 --- a/src/ai.c +++ b/src/ai.c @@ -517,7 +517,7 @@ static int ai_exists(lua_State* L) { MIN_ARGS(1); if(lua_isnumber(L,1)) { - lua_pushboolean(L, (int)pilot_get((unsigned int)lua_tonumber(L,1))); + lua_pushboolean(L, (pilot_get((unsigned int)lua_tonumber(L,1)) != NULL)?1:0); return 1; } return 0; diff --git a/src/main.c b/src/main.c index 99749d5..3e3b0eb 100644 --- a/src/main.c +++ b/src/main.c @@ -95,30 +95,44 @@ int main(int argc, char** argv) { if(luaL_dofile(L, CONF_FILE) == 0) { // Conf file exists. // Global. lua_getglobal(L, "data"); - if(lua_isstring(L, -1)) + if(lua_isstring(L, -1)) { data = strdup((char*)lua_tostring(L, -1)); + lua_remove(L, -1); + } // OpenGL properties. lua_getglobal(L, "width"); - if(lua_isnumber(L, -1)) + if(lua_isnumber(L, -1)) { gl_screen.w = (int)lua_tonumber(L, -1); + lua_remove(L, -1); + } lua_getglobal(L, "height"); - if(lua_isnumber(L, -1)) + if(lua_isnumber(L, -1)) { gl_screen.h = (int)lua_tonumber(L, -1); + lua_remove(L, -1); + } lua_getglobal(L, "fullscreen"); if(lua_isnumber(L, -1)) - if((int)lua_tonumber(L, -1) == 1) + if((int)lua_tonumber(L, -1) == 1) { gl_screen.fullscreen = 1; + lua_remove(L, -1); + } lua_getglobal(L, "fps"); - if(lua_isnumber(L, -1)) + if(lua_isnumber(L, -1)) { max_fps = (int)lua_tonumber(L, -1); + lua_remove(L, -1); + } // Joystick. lua_getglobal(L, "joystick"); - if(lua_isnumber(L, -1)) + if(lua_isnumber(L, -1)) { indjoystick = (int)lua_tonumber(L, -1); - else if(lua_isstring(L, -1)) + lua_remove(L, -1); + } + else if(lua_isstring(L, -1)) { namjoystick = strdup((char*)lua_tostring(L, -1)); + lua_remove(L, -1); + } // Grab the keybindings if there are any. char* str; @@ -160,6 +174,12 @@ int main(int argc, char** argv) { // Set the keybind. input_setKeybind((char*)keybindNames[i], type, key, reverse); } else WARN("Malformed keybind in %s", CONF_FILE); + + // Clean up after table stuff. + lua_remove(L, -1); + lua_remove(L, -1); + lua_remove(L, -1); + lua_remove(L, -1); } } } diff --git a/utils/mkspr/Makefile b/utils/mkspr/Makefile index 29adc7b..e4660a8 100644 --- a/utils/mkspr/Makefile +++ b/utils/mkspr/Makefile @@ -16,3 +16,6 @@ all: @$(CC) $(LFLAGS) $(CFLAGS) -o $(ROOTDIR)$(APPNAME) main.c $(COBJS) @echo -e "\tLD $(APPNAME)" +clean: + rm -rf *.o +