Skip to content

Commit

Permalink
controls gui
Browse files Browse the repository at this point in the history
  • Loading branch information
xtreme8000 committed Jul 13, 2018
1 parent 4e59531 commit 29681a6
Show file tree
Hide file tree
Showing 7 changed files with 217 additions and 143 deletions.
204 changes: 107 additions & 97 deletions src/config.c
Expand Up @@ -60,6 +60,11 @@ void config_save() {
config_seti("vol",settings.volume);
config_seti("show_fps",settings.show_fps);

for(int k=0;k<list_size(&config_keys);k++) {
struct config_key_pair* e = list_get(&config_keys,k);
config_seti(e->name,e->def);
}


FILE* f = fopen("config.ini","w");
char last_section[32] = {0};
Expand Down Expand Up @@ -133,16 +138,21 @@ static int config_read_key(void* user, const char* section, const char* name, co
return 1;
}

void config_register_key(int internal, int def, const char* name, int toggle) {
struct config_key_pair key;
key.internal = internal;
key.def = def;
key.toggle = toggle;
if(name)
strcpy(key.name,name);
else
*key.name = 0;
list_add(&config_keys,&key);
void config_register_key(int internal, int def, const char* name, int toggle, const char* display) {
struct config_key_pair key;
key.internal = internal;
key.def = def;
key.toggle = toggle;
if(display)
strncpy(key.display,display,sizeof(key.display)-1);
else
*key.display = 0;

if(name)
strncpy(key.name,name,sizeof(key.name)-1);
else
*key.name = 0;
list_add(&config_keys,&key);
}

int config_key_translate(int key, int dir) {
Expand Down Expand Up @@ -175,100 +185,100 @@ void config_key_reset_togglestates() {

void config_reload() {
if(!list_created(&config_file))
list_create(&config_file,sizeof(struct config_file_entry));
else
list_clear(&config_file);
list_create(&config_file,sizeof(struct config_file_entry));
else
list_clear(&config_file);


if(!list_created(&config_keys))
list_create(&config_keys,sizeof(struct config_key_pair));
else
list_clear(&config_keys);
if(!list_created(&config_keys))
list_create(&config_keys,sizeof(struct config_key_pair));
else
list_clear(&config_keys);

#ifdef USE_SDL
config_register_key(WINDOW_KEY_UP,SDLK_w,"move_forward",0);
config_register_key(WINDOW_KEY_DOWN,SDLK_s,"move_backward",0);
config_register_key(WINDOW_KEY_LEFT,SDLK_a,"move_left",0);
config_register_key(WINDOW_KEY_RIGHT,SDLK_d,"move_right",0);
config_register_key(WINDOW_KEY_SPACE,SDLK_SPACE,"jump",0);
config_register_key(WINDOW_KEY_SPRINT,SDLK_LSHIFT,"sprint",0);
config_register_key(WINDOW_KEY_CURSOR_UP,SDLK_UP,"cube_color_up",0);
config_register_key(WINDOW_KEY_CURSOR_DOWN,SDLK_DOWN,"cube_color_down",0);
config_register_key(WINDOW_KEY_CURSOR_LEFT,SDLK_LEFT,"cube_color_left",0);
config_register_key(WINDOW_KEY_CURSOR_RIGHT,SDLK_RIGHT,"cube_color_right",0);
config_register_key(WINDOW_KEY_BACKSPACE,SDLK_BACKSPACE,NULL,0);
config_register_key(WINDOW_KEY_TOOL1,SDLK_1,NULL,0);
config_register_key(WINDOW_KEY_TOOL2,SDLK_2,NULL,0);
config_register_key(WINDOW_KEY_TOOL3,SDLK_3,NULL,0);
config_register_key(WINDOW_KEY_TOOL4,SDLK_4,NULL,0);
config_register_key(WINDOW_KEY_TAB,SDLK_TAB,"view_score",0);
config_register_key(WINDOW_KEY_ESCAPE,SDLK_ESCAPE,"quit_game",0);
config_register_key(WINDOW_KEY_MAP,SDLK_m,"view_map",1);
config_register_key(WINDOW_KEY_CROUCH,SDLK_LCTRL,"crouch",0);
config_register_key(WINDOW_KEY_SNEAK,SDLK_v,"sneak",0);
config_register_key(WINDOW_KEY_ENTER,SDLK_RETURN,NULL,0);
config_register_key(WINDOW_KEY_F1,SDLK_F1,NULL,0);
config_register_key(WINDOW_KEY_F2,SDLK_F2,NULL,0);
config_register_key(WINDOW_KEY_F3,SDLK_F3,NULL,0);
config_register_key(WINDOW_KEY_F4,SDLK_F4,NULL,0);
config_register_key(WINDOW_KEY_YES,SDLK_y,NULL,0);
config_register_key(WINDOW_KEY_YES,SDLK_z,NULL,0);
config_register_key(WINDOW_KEY_NO,SDLK_n,NULL,0);
config_register_key(WINDOW_KEY_VOLUME_UP,SDLK_KP_PLUS,"volume_up",0);
config_register_key(WINDOW_KEY_VOLUME_DOWN,SDLK_KP_MINUS,"volume_down",0);
config_register_key(WINDOW_KEY_V,SDLK_v,NULL,0);
config_register_key(WINDOW_KEY_RELOAD,SDLK_r,"reload",0);
config_register_key(WINDOW_KEY_CHAT,SDLK_t,"chat_global",0);
config_register_key(WINDOW_KEY_FULLSCREEN,SDLK_F11,"fullscreen",0);
config_register_key(WINDOW_KEY_SCREENSHOT,SDLK_F5,"screenshot",0);
config_register_key(WINDOW_KEY_CHANGETEAM,SDLK_COMMA,"change_team",0);
config_register_key(WINDOW_KEY_CHANGEWEAPON,SDLK_PERIOD,"change_weapon",0);
config_register_key(WINDOW_KEY_PICKCOLOR,SDLK_e,"cube_color_sample",0);
config_register_key(WINDOW_KEY_COMMAND,SDLK_SLASH,"chat_command",0);
config_register_key(WINDOW_KEY_HIDEHUD,SDLK_F6,"hide_hud",1);
config_register_key(WINDOW_KEY_UP,SDLK_w,"move_forward",0,"Forward");
config_register_key(WINDOW_KEY_DOWN,SDLK_s,"move_backward",0,"Backward");
config_register_key(WINDOW_KEY_LEFT,SDLK_a,"move_left",0,"Left");
config_register_key(WINDOW_KEY_RIGHT,SDLK_d,"move_right",0,"Right");
config_register_key(WINDOW_KEY_SPACE,SDLK_SPACE,"jump",0,"Jump");
config_register_key(WINDOW_KEY_SPRINT,SDLK_LSHIFT,"sprint",0,"Sprint");
config_register_key(WINDOW_KEY_CURSOR_UP,SDLK_UP,"cube_color_up",0,"Color up");
config_register_key(WINDOW_KEY_CURSOR_DOWN,SDLK_DOWN,"cube_color_down",0,"Color down");
config_register_key(WINDOW_KEY_CURSOR_LEFT,SDLK_LEFT,"cube_color_left",0,"Color left");
config_register_key(WINDOW_KEY_CURSOR_RIGHT,SDLK_RIGHT,"cube_color_right",0,"Color right");
config_register_key(WINDOW_KEY_BACKSPACE,SDLK_BACKSPACE,NULL,0);
config_register_key(WINDOW_KEY_TOOL1,SDLK_1,NULL,0);
config_register_key(WINDOW_KEY_TOOL2,SDLK_2,NULL,0);
config_register_key(WINDOW_KEY_TOOL3,SDLK_3,NULL,0);
config_register_key(WINDOW_KEY_TOOL4,SDLK_4,NULL,0);
config_register_key(WINDOW_KEY_TAB,SDLK_TAB,"view_score",0,"Score");
config_register_key(WINDOW_KEY_ESCAPE,SDLK_ESCAPE,"quit_game",0,"Quit");
config_register_key(WINDOW_KEY_MAP,SDLK_m,"view_map",1,"Map");
config_register_key(WINDOW_KEY_CROUCH,SDLK_LCTRL,"crouch",0,"Crouch");
config_register_key(WINDOW_KEY_SNEAK,SDLK_v,"sneak",0,"Sneak");
config_register_key(WINDOW_KEY_ENTER,SDLK_RETURN,NULL,0);
config_register_key(WINDOW_KEY_F1,SDLK_F1,NULL,0);
config_register_key(WINDOW_KEY_F2,SDLK_F2,NULL,0);
config_register_key(WINDOW_KEY_F3,SDLK_F3,NULL,0);
config_register_key(WINDOW_KEY_F4,SDLK_F4,NULL,0);
config_register_key(WINDOW_KEY_YES,SDLK_y,NULL,0);
config_register_key(WINDOW_KEY_YES,SDLK_z,NULL,0);
config_register_key(WINDOW_KEY_NO,SDLK_n,NULL,0);
config_register_key(WINDOW_KEY_VOLUME_UP,SDLK_KP_PLUS,"volume_up",0,"Volume up");
config_register_key(WINDOW_KEY_VOLUME_DOWN,SDLK_KP_MINUS,"volume_down",0,"Volume down");
config_register_key(WINDOW_KEY_V,SDLK_v,NULL,0);
config_register_key(WINDOW_KEY_RELOAD,SDLK_r,"reload",0,"Reload");
config_register_key(WINDOW_KEY_CHAT,SDLK_t,"chat_global",0,"Chat");
config_register_key(WINDOW_KEY_FULLSCREEN,SDLK_F11,"fullscreen",0,"Fullscreen");
config_register_key(WINDOW_KEY_SCREENSHOT,SDLK_F5,"screenshot",0,"Screenshot");
config_register_key(WINDOW_KEY_CHANGETEAM,SDLK_COMMA,"change_team",0,"Team select");
config_register_key(WINDOW_KEY_CHANGEWEAPON,SDLK_PERIOD,"change_weapon",0,"Gun select");
config_register_key(WINDOW_KEY_PICKCOLOR,SDLK_e,"cube_color_sample","Pick color");
config_register_key(WINDOW_KEY_COMMAND,SDLK_SLASH,"chat_command",0,"Command");
config_register_key(WINDOW_KEY_HIDEHUD,SDLK_F6,"hide_hud",1,"Hide HUD");
#endif

#ifdef USE_GLFW
config_register_key(WINDOW_KEY_UP,GLFW_KEY_W,"move_forward",0);
config_register_key(WINDOW_KEY_DOWN,GLFW_KEY_S,"move_backward",0);
config_register_key(WINDOW_KEY_LEFT,GLFW_KEY_A,"move_left",0);
config_register_key(WINDOW_KEY_RIGHT,GLFW_KEY_D,"move_right",0);
config_register_key(WINDOW_KEY_SPACE,GLFW_KEY_SPACE,"jump",0);
config_register_key(WINDOW_KEY_SPRINT,GLFW_KEY_LEFT_SHIFT,"sprint",0);
config_register_key(WINDOW_KEY_CURSOR_UP,GLFW_KEY_UP,"cube_color_up",0);
config_register_key(WINDOW_KEY_CURSOR_DOWN,GLFW_KEY_DOWN,"cube_color_down",0);
config_register_key(WINDOW_KEY_CURSOR_LEFT,GLFW_KEY_LEFT,"cube_color_left",0);
config_register_key(WINDOW_KEY_CURSOR_RIGHT,GLFW_KEY_RIGHT,"cube_color_right",0);
config_register_key(WINDOW_KEY_BACKSPACE,GLFW_KEY_BACKSPACE,NULL,0);
config_register_key(WINDOW_KEY_TOOL1,GLFW_KEY_1,NULL,0);
config_register_key(WINDOW_KEY_TOOL2,GLFW_KEY_2,NULL,0);
config_register_key(WINDOW_KEY_TOOL3,GLFW_KEY_3,NULL,0);
config_register_key(WINDOW_KEY_TOOL4,GLFW_KEY_4,NULL,0);
config_register_key(WINDOW_KEY_TAB,GLFW_KEY_TAB,"view_score",0);
config_register_key(WINDOW_KEY_ESCAPE,GLFW_KEY_ESCAPE,"quit_game",0);
config_register_key(WINDOW_KEY_MAP,GLFW_KEY_M,"view_map",1);
config_register_key(WINDOW_KEY_CROUCH,GLFW_KEY_LEFT_CONTROL,"crouch",0);
config_register_key(WINDOW_KEY_SNEAK,GLFW_KEY_V,"sneak",0);
config_register_key(WINDOW_KEY_ENTER,GLFW_KEY_ENTER,NULL,0);
config_register_key(WINDOW_KEY_F1,GLFW_KEY_F1,NULL,0);
config_register_key(WINDOW_KEY_F2,GLFW_KEY_F2,NULL,0);
config_register_key(WINDOW_KEY_F3,GLFW_KEY_F3,NULL,0);
config_register_key(WINDOW_KEY_F4,GLFW_KEY_F4,NULL,0);
config_register_key(WINDOW_KEY_YES,GLFW_KEY_Y,NULL,0);
config_register_key(WINDOW_KEY_YES,GLFW_KEY_Z,NULL,0);
config_register_key(WINDOW_KEY_NO,GLFW_KEY_N,NULL,0);
config_register_key(WINDOW_KEY_VOLUME_UP,GLFW_KEY_KP_ADD,"volume_up",0);
config_register_key(WINDOW_KEY_VOLUME_DOWN,GLFW_KEY_KP_SUBTRACT,"volume_down",0);
config_register_key(WINDOW_KEY_V,GLFW_KEY_V,NULL,0);
config_register_key(WINDOW_KEY_RELOAD,GLFW_KEY_R,"reload",0);
config_register_key(WINDOW_KEY_CHAT,GLFW_KEY_T,"chat_global",0);
config_register_key(WINDOW_KEY_FULLSCREEN,GLFW_KEY_F11,"fullscreen",0);
config_register_key(WINDOW_KEY_SCREENSHOT,GLFW_KEY_F5,"screenshot",0);
config_register_key(WINDOW_KEY_CHANGETEAM,GLFW_KEY_COMMA,"change_team",0);
config_register_key(WINDOW_KEY_CHANGEWEAPON,GLFW_KEY_PERIOD,"change_weapon",0);
config_register_key(WINDOW_KEY_PICKCOLOR,GLFW_KEY_E,"cube_color_sample",0);
config_register_key(WINDOW_KEY_COMMAND,GLFW_KEY_SLASH,"chat_command",0);
config_register_key(WINDOW_KEY_HIDEHUD,GLFW_KEY_F6,"hide_hud",1);
config_register_key(WINDOW_KEY_UP,GLFW_KEY_W,"move_forward",0,"Forward");
config_register_key(WINDOW_KEY_DOWN,GLFW_KEY_S,"move_backward",0,"Backward");
config_register_key(WINDOW_KEY_LEFT,GLFW_KEY_A,"move_left",0,"Left");
config_register_key(WINDOW_KEY_RIGHT,GLFW_KEY_D,"move_right",0,"Right");
config_register_key(WINDOW_KEY_SPACE,GLFW_KEY_SPACE,"jump",0,"Jump");
config_register_key(WINDOW_KEY_SPRINT,GLFW_KEY_LEFT_SHIFT,"sprint",0,"Sprint");
config_register_key(WINDOW_KEY_CURSOR_UP,GLFW_KEY_UP,"cube_color_up",0,"Color up");
config_register_key(WINDOW_KEY_CURSOR_DOWN,GLFW_KEY_DOWN,"cube_color_down",0,"Color down");
config_register_key(WINDOW_KEY_CURSOR_LEFT,GLFW_KEY_LEFT,"cube_color_left",0,"Color left");
config_register_key(WINDOW_KEY_CURSOR_RIGHT,GLFW_KEY_RIGHT,"cube_color_right",0,"Color right");
config_register_key(WINDOW_KEY_BACKSPACE,GLFW_KEY_BACKSPACE,NULL,0,NULL);
config_register_key(WINDOW_KEY_TOOL1,GLFW_KEY_1,NULL,0,NULL);
config_register_key(WINDOW_KEY_TOOL2,GLFW_KEY_2,NULL,0,NULL);
config_register_key(WINDOW_KEY_TOOL3,GLFW_KEY_3,NULL,0,NULL);
config_register_key(WINDOW_KEY_TOOL4,GLFW_KEY_4,NULL,0,NULL);
config_register_key(WINDOW_KEY_TAB,GLFW_KEY_TAB,"view_score",0,"Score");
config_register_key(WINDOW_KEY_ESCAPE,GLFW_KEY_ESCAPE,"quit_game",0,"Quit");
config_register_key(WINDOW_KEY_MAP,GLFW_KEY_M,"view_map",1,"Map");
config_register_key(WINDOW_KEY_CROUCH,GLFW_KEY_LEFT_CONTROL,"crouch",0,"Crouch");
config_register_key(WINDOW_KEY_SNEAK,GLFW_KEY_V,"sneak",0,"Sneak");
config_register_key(WINDOW_KEY_ENTER,GLFW_KEY_ENTER,NULL,0,NULL);
config_register_key(WINDOW_KEY_F1,GLFW_KEY_F1,NULL,0,NULL);
config_register_key(WINDOW_KEY_F2,GLFW_KEY_F2,NULL,0,NULL);
config_register_key(WINDOW_KEY_F3,GLFW_KEY_F3,NULL,0,NULL);
config_register_key(WINDOW_KEY_F4,GLFW_KEY_F4,NULL,0,NULL);
config_register_key(WINDOW_KEY_YES,GLFW_KEY_Y,NULL,0,NULL);
config_register_key(WINDOW_KEY_YES,GLFW_KEY_Z,NULL,0,NULL);
config_register_key(WINDOW_KEY_NO,GLFW_KEY_N,NULL,0,NULL);
config_register_key(WINDOW_KEY_VOLUME_UP,GLFW_KEY_KP_ADD,"volume_up",0,"Volume up");
config_register_key(WINDOW_KEY_VOLUME_DOWN,GLFW_KEY_KP_SUBTRACT,"volume_down",0,"Volume down");
config_register_key(WINDOW_KEY_V,GLFW_KEY_V,NULL,0,NULL);
config_register_key(WINDOW_KEY_RELOAD,GLFW_KEY_R,"reload",0,"Reload");
config_register_key(WINDOW_KEY_CHAT,GLFW_KEY_T,"chat_global",0,"Chat");
config_register_key(WINDOW_KEY_FULLSCREEN,GLFW_KEY_F11,"fullscreen",0,"Fullscreen");
config_register_key(WINDOW_KEY_SCREENSHOT,GLFW_KEY_F5,"screenshot",0,"Screenshot");
config_register_key(WINDOW_KEY_CHANGETEAM,GLFW_KEY_COMMA,"change_team",0,"Team select");
config_register_key(WINDOW_KEY_CHANGEWEAPON,GLFW_KEY_PERIOD,"change_weapon",0,"Gun select");
config_register_key(WINDOW_KEY_PICKCOLOR,GLFW_KEY_E,"cube_color_sample",0,"Pick color");
config_register_key(WINDOW_KEY_COMMAND,GLFW_KEY_SLASH,"chat_command",0,"Command");
config_register_key(WINDOW_KEY_HIDEHUD,GLFW_KEY_F6,"hide_hud",1,"Hide HUD");
#endif

ini_parse("config.ini",config_read_key,NULL);
Expand Down
11 changes: 6 additions & 5 deletions src/config.h
Expand Up @@ -46,10 +46,11 @@ extern struct RENDER_OPTIONS {
extern struct list config_keys;

struct config_key_pair {
int internal;
int def;
int toggle;
char name[32];
int internal;
int def;
int toggle;
char name[24];
char display[16];
};

enum {
Expand All @@ -70,7 +71,7 @@ struct config_setting {

extern struct list config_settings;

void config_register_key(int internal, int def, const char* name, int toggle);
void config_register_key(int internal, int def, const char* name, int toggle, const char* display);
int config_key_translate(int key, int dir);
struct config_key_pair* config_key(int key);
void config_key_reset_togglestates();
Expand Down

0 comments on commit 29681a6

Please sign in to comment.