Skip to content

Commit

Permalink
Redone all UI (not ingame)
Browse files Browse the repository at this point in the history
* add category to key inputs
* font now considers line breaks (rendering & length)
* redone UI using microui library
* add sort function to list
* add collapsed/expanded textures for ui
* blur background image
* fetch key names directly from some OS
  • Loading branch information
xtreme8000 committed Sep 1, 2020
1 parent 4a92b1b commit c0ecbed
Show file tree
Hide file tree
Showing 18 changed files with 787 additions and 940 deletions.
56 changes: 32 additions & 24 deletions resources/config.ini
Expand Up @@ -19,27 +19,35 @@ smooth_fog = 0
ambient_occlusion = 0

[controls]
move_forward = 87
move_backward = 83
move_left = 65
move_right = 68
jump = 32
crouch = 341
sneak = 86
sprint = 340
view_map = 77
reload = 82
cube_color_up = 265
cube_color_down = 264
cube_color_left = 263
cube_color_right = 262
cube_color_sample = 69
quit_game = 256
volume_up = 334
volume_down = 333
view_score = 258
change_team = 44
change_weapon = 46
screenshot = 294
fullscreen = 300
chat_global = 84
move_forward = 87
move_backward = 83
move_left = 65
move_right = 68
jump = 32
crouch = 341
sneak = 86
sprint = 340
view_map = 77
reload = 82
cube_color_up = 265
cube_color_down = 264
cube_color_left = 263
cube_color_right = 262
cube_color_sample = 69
quit_game = 256
volume_up = 334
volume_down = 333
view_score = 258
change_team = 44
change_weapon = 46
screenshot = 294
fullscreen = 300
chat_global = 84
chat_command = 47
hide_hud = 295
network_stats = 301
last_tool = 81
tool_block = 50
tool_grenade = 52
tool_gun = 51
tool_spade = 49
Binary file modified resources/png/ui/bg.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified resources/png/ui/box_check.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/png/ui/collapsed.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added resources/png/ui/expanded.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/CMakeLists.txt
Expand Up @@ -30,6 +30,8 @@ download_file_if_it_doesnt_exist(../deps/libdeflate.h https://raw.githubusercont
download_file_if_it_doesnt_exist(../bsresources.zip http://aos.party/bsresources.zip)
download_file_if_it_doesnt_exist(libvxl.c https://raw.githubusercontent.com/xtreme8000/libvxl/master/libvxl.c)
download_file_if_it_doesnt_exist(libvxl.h https://raw.githubusercontent.com/xtreme8000/libvxl/master/libvxl.h)
download_file_if_it_doesnt_exist(microui.c https://raw.githubusercontent.com/rxi/microui/master/src/microui.c)
download_file_if_it_doesnt_exist(microui.h https://raw.githubusercontent.com/rxi/microui/master/src/microui.h)

list(APPEND CLIENT_SOURCES aabb.c)
list(APPEND CLIENT_SOURCES camera.c)
Expand Down Expand Up @@ -67,6 +69,7 @@ list(APPEND CLIENT_SOURCES hashtable.c)
list(APPEND CLIENT_SOURCES rpc.c)
list(APPEND CLIENT_SOURCES tesselator.c)
list(APPEND CLIENT_SOURCES libvxl.c)
list(APPEND CLIENT_SOURCES microui.c)
list(APPEND CLIENT_SOURCES ${BetterSpades_SOURCE_DIR}/resources/icon.rc)

add_executable(client ${CLIENT_SOURCES})
Expand Down
188 changes: 103 additions & 85 deletions src/config.c
Expand Up @@ -178,7 +178,8 @@ 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, const char* display) {
void config_register_key(int internal, int def, const char* name, int toggle, const char* display,
const char* category) {
struct config_key_pair key;
key.internal = internal;
key.def = def;
Expand All @@ -192,6 +193,11 @@ void config_register_key(int internal, int def, const char* name, int toggle, co
strncpy(key.name, name, sizeof(key.name) - 1);
else
*key.name = 0;

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

Expand Down Expand Up @@ -223,6 +229,14 @@ void config_key_reset_togglestates() {
}
}

static int config_key_cmp(const void* a, const void* b) {
const struct config_key_pair* A = (const struct config_key_pair*)a;
const struct config_key_pair* B = (const struct config_key_pair*)b;

int cmp = strcmp(A->category, B->category);
return cmp ? cmp : strcmp(A->display, B->display);
}

void config_reload() {
if(!list_created(&config_file))
list_create(&config_file, sizeof(struct config_file_entry));
Expand All @@ -235,95 +249,99 @@ void config_reload() {
list_clear(&config_keys);

#ifdef USE_SDL
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, NULL);
config_register_key(WINDOW_KEY_TOOL1, SDLK_1, NULL, 0, NULL);
config_register_key(WINDOW_KEY_TOOL2, SDLK_2, NULL, 0, NULL);
config_register_key(WINDOW_KEY_TOOL3, SDLK_3, NULL, 0, NULL);
config_register_key(WINDOW_KEY_TOOL4, SDLK_4, NULL, 0, NULL);
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, "enter", 0, "Enter");
config_register_key(WINDOW_KEY_F1, SDLK_F1, NULL, 0, NULL);
config_register_key(WINDOW_KEY_F2, SDLK_F2, NULL, 0, NULL);
config_register_key(WINDOW_KEY_F3, SDLK_F3, NULL, 0, NULL);
config_register_key(WINDOW_KEY_F4, SDLK_F4, NULL, 0, NULL);
config_register_key(WINDOW_KEY_YES, SDLK_y, NULL, 0, NULL);
config_register_key(WINDOW_KEY_YES, SDLK_z, NULL, 0, NULL);
config_register_key(WINDOW_KEY_NO, SDLK_n, NULL, 0, NULL);
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, NULL);
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", 0, "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");
config_register_key(WINDOW_KEY_LASTTOOL, SDLK_q, "last_tool", 0, "Last tool");
config_register_key(WINDOW_KEY_NETWORKSTATS, SDLK_F12, "network_stats", 1, "Network stats");
config_register_key(WINDOW_KEY_UP, SDLK_w, "move_forward", 0, "Forward", "Movement");
config_register_key(WINDOW_KEY_DOWN, SDLK_s, "move_backward", 0, "Backward", "Movement");
config_register_key(WINDOW_KEY_LEFT, SDLK_a, "move_left", 0, "Left", "Movement");
config_register_key(WINDOW_KEY_RIGHT, SDLK_d, "move_right", 0, "Right", "Movement");
config_register_key(WINDOW_KEY_SPACE, SDLK_SPACE, "jump", 0, "Jump", "Movement");
config_register_key(WINDOW_KEY_SPRINT, SDLK_LSHIFT, "sprint", 0, "Sprint", "Movement");
config_register_key(WINDOW_KEY_SHIFT, SDLK_LSHIFT, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_CURSOR_UP, SDLK_UP, "cube_color_up", 0, "Color up", "Block");
config_register_key(WINDOW_KEY_CURSOR_DOWN, SDLK_DOWN, "cube_color_down", 0, "Color down", "Block");
config_register_key(WINDOW_KEY_CURSOR_LEFT, SDLK_LEFT, "cube_color_left", 0, "Color left", "Block");
config_register_key(WINDOW_KEY_CURSOR_RIGHT, SDLK_RIGHT, "cube_color_right", 0, "Color right", "Block");
config_register_key(WINDOW_KEY_BACKSPACE, SDLK_BACKSPACE, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_TOOL1, SDLK_1, "tool_spade", 0, "Select spade", "Tools & Weapons");
config_register_key(WINDOW_KEY_TOOL2, SDLK_2, "tool_block", 0, "Select block", "Tools & Weapons");
config_register_key(WINDOW_KEY_TOOL3, SDLK_3, "tool_gun", 0, "Select gun", "Tools & Weapons");
config_register_key(WINDOW_KEY_TOOL4, SDLK_4, "tool_grenade", 0, "Select grenade", "Tools & Weapons");
config_register_key(WINDOW_KEY_TAB, SDLK_TAB, "view_score", 0, "Score", "Information");
config_register_key(WINDOW_KEY_ESCAPE, SDLK_ESCAPE, "quit_game", 0, "Quit", "Game");
config_register_key(WINDOW_KEY_MAP, SDLK_m, "view_map", 1, "Map", "Information");
config_register_key(WINDOW_KEY_CROUCH, SDLK_LCTRL, "crouch", 0, "Crouch", "Movement");
config_register_key(WINDOW_KEY_SNEAK, SDLK_v, "sneak", 0, "Sneak", "Movement");
config_register_key(WINDOW_KEY_ENTER, SDLK_RETURN, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_F1, SDLK_F1, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_F2, SDLK_F2, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_F3, SDLK_F3, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_F4, SDLK_F4, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_YES, SDLK_y, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_YES, SDLK_z, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_NO, SDLK_n, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_VOLUME_UP, SDLK_KP_PLUS, "volume_up", 0, "Volume up", "Game");
config_register_key(WINDOW_KEY_VOLUME_DOWN, SDLK_KP_MINUS, "volume_down", 0, "Volume down", "Game");
config_register_key(WINDOW_KEY_V, SDLK_v, NULL, 0, NULL, NULL);
config_register_key(WINDOW_KEY_RELOAD, SDLK_r, "reload", 0, "Reload", "Tools & Weapons");
config_register_key(WINDOW_KEY_CHAT, SDLK_t, "chat_global", 0, "Chat", "Game");
config_register_key(WINDOW_KEY_FULLSCREEN, SDLK_F11, "fullscreen", 0, "Fullscreen", "Game");
config_register_key(WINDOW_KEY_SCREENSHOT, SDLK_F5, "screenshot", 0, "Screenshot", "Information");
config_register_key(WINDOW_KEY_CHANGETEAM, SDLK_COMMA, "change_team", 0, "Team select", "Game");
config_register_key(WINDOW_KEY_CHANGEWEAPON, SDLK_PERIOD, "change_weapon", 0, "Gun select", "Tools & Weapons");
config_register_key(WINDOW_KEY_PICKCOLOR, SDLK_e, "cube_color_sample", 0, "Pick color", "Block");
config_register_key(WINDOW_KEY_COMMAND, SDLK_SLASH, "chat_command", 0, "Command", "Game");
config_register_key(WINDOW_KEY_HIDEHUD, SDLK_F6, "hide_hud", 1, "Hide HUD", "Game");
config_register_key(WINDOW_KEY_LASTTOOL, SDLK_q, "last_tool", 0, "Last tool", "Tools & Weapons");
config_register_key(WINDOW_KEY_NETWORKSTATS, SDLK_F12, "network_stats", 1, "Network stats", "Information");
#endif

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

list_sort(&config_keys, config_key_cmp);

char* s = file_load("config.ini");
if(s) {
ini_parse_string(s, config_read_key, NULL);
Expand Down
6 changes: 4 additions & 2 deletions src/config.h
Expand Up @@ -59,7 +59,8 @@ struct config_key_pair {
int def;
int toggle;
char name[24];
char display[16];
char display[24];
char category[24];
};

enum {
Expand All @@ -80,7 +81,8 @@ struct config_setting {

extern struct list config_settings;

void config_register_key(int internal, int def, const char* name, int toggle, const char* display);
void config_register_key(int internal, int def, const char* name, int toggle, const char* display,
const char* category);
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 c0ecbed

Please sign in to comment.