X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=src%2Fclient%2Fdraw_wins.c;h=46ef8ed93e838fbf30889a71c0b8beef708342fa;hb=0907037fc188c28471805286a67b786264ba3e2f;hp=54191f614832b1cf9428f97e1735158a64fc436d;hpb=316a56901b2249264b72992fd5aa63ce16fd3304;p=plomrogue diff --git a/src/client/draw_wins.c b/src/client/draw_wins.c index 54191f6..46ef8ed 100644 --- a/src/client/draw_wins.c +++ b/src/client/draw_wins.c @@ -38,19 +38,19 @@ static void add_line(struct Win * w, char * line, attr_t attri); */ static void draw_text_from_bottom(struct Win * win, char * text); -/* Return keybinding list line via "kb_pp", iterate pointer pointed to by it. */ -static char * get_kb_line_and_iterate(struct KeyBinding ** kb_pp); +/* Return a properly formatted keybinding list line for "kb". */ +static char * get_kb_line(struct KeyBinding * kb); /* Draw from line "start" on config view for keybindings defined at "kb". */ static void draw_keybinding_config(struct Win * w, struct KeyBindingDB * kb, uint8_t start); /* Draw into window "w" from line "start" on a "title" followed by an empty - * line followed by a list of all keybindings starting at kb_p. + * line followed by a list of all keybindings starting in "kbdb". */ static uint16_t draw_titled_keybinding_list(char * title, struct Win * w, uint16_t start, - struct KeyBinding * kb_p); + struct KeyBindingDB * kbdb); @@ -231,44 +231,40 @@ static void draw_text_from_bottom(struct Win * win, char * text) -static char * get_kb_line_and_iterate(struct KeyBinding ** kb_pp) +static char * get_kb_line(struct KeyBinding * kb) { - char * f_name = "get_kb_line_and_iterate()"; - struct KeyBinding * kb_p = * kb_pp; - char * keyname = get_keyname_to_keycode(kb_p->key); - struct Command * command = get_command_to_keycode(kb_p, kb_p->key); - uint16_t size = 9 + 1 + strlen(command->dsc_long) + 1; - char * line = try_malloc(size, f_name); - sprintf(line, "%-9s %s", keyname, command->dsc_long); + char * f_name = "get_kb_line()"; + char * keyname = get_keyname_to_keycode(kb->keycode); + uint16_t size = 9 + 1 + strlen(kb->command->dsc_long) + 1; + char * kb_line = try_malloc(size, f_name); + sprintf(kb_line, "%-9s %s", keyname, kb->command->dsc_long); free(keyname); - * kb_pp = kb_p->next; - return line; + return kb_line; } -static void draw_keybinding_config(struct Win * w, struct KeyBindingDB * kb, +static void draw_keybinding_config(struct Win * w, struct KeyBindingDB * kbdb, uint8_t start) { - if (0 == kb->kbs) + if (0 == kbdb->n_of_kbs) { add_line(w, "(none)", 0); return; } - struct KeyBinding * kb_p = kb->kbs; - uint16_t y; - for (y = start; 0 != kb_p; y++) + uint16_t y, kb_n; + for (y = start, kb_n = 0; kb_n < kbdb->n_of_kbs; y++, kb_n++) { attr_t attri = 0; - if (y - start == kb->select) + if (y - start == kbdb->select) { attri = A_REVERSE; - if (1 == kb->edit) + if (1 == kbdb->edit) { attri = attri | A_BLINK; } } - char * kb_line = get_kb_line_and_iterate(&kb_p); + char * kb_line = get_kb_line(&kbdb->kbs[kb_n]); add_line(w, kb_line, attri); free(kb_line); } @@ -278,21 +274,22 @@ static void draw_keybinding_config(struct Win * w, struct KeyBindingDB * kb, static uint16_t draw_titled_keybinding_list(char * title, struct Win * w, uint16_t start, - struct KeyBinding * kb_p) + struct KeyBindingDB * kbdb) { uint16_t y; uint8_t state = 0; - for (y = start; (0 == state || 0 != kb_p); y++) + uint16_t kb_n = 0; + for (y = start; (0 == state || kb_n < kbdb->n_of_kbs); y++, kb_n++) { if (0 == state) { add_line(w, title, 0); y++; add_line(w, " ", 0); - state = 1 + (0 == kb_p); + state = 1 + (0 == kbdb->n_of_kbs); continue; } - char * kb_line = get_kb_line_and_iterate(&kb_p); + char * kb_line = get_kb_line(&kbdb->kbs[kb_n]); add_line(w, kb_line, 0); free(kb_line); } @@ -340,14 +337,10 @@ extern void draw_win_info(struct Win * win) { char * dsc_turn = "Turn: "; char * dsc_hitpoints = "\nHitpoints: "; - char * dsc_score = "\nScore: "; - uint16_t maxl = strlen(dsc_turn) + strlen(dsc_hitpoints) + strlen(dsc_score) - + 5 + 3 + 5; /* Max strlens of strings of numbers to use. */ + uint16_t maxl = strlen(dsc_turn) + 5 + strlen(dsc_hitpoints) + 3; char text[maxl + 1]; - sprintf(text, "%s%d%s%d%s%d", - dsc_turn, world.turn, - dsc_hitpoints, world.player_lifepoints, - dsc_score, world.score); + sprintf(text, "%s%d%s%d", + dsc_turn, world.turn, dsc_hitpoints, world.player_lifepoints); add_text_with_linebreaks(win, text); } @@ -383,24 +376,24 @@ extern void draw_win_inventory(struct Win * win) extern void draw_win_available_keybindings(struct Win * win) { char * title = "Active window's keybindings:"; - struct KeyBinding * kb_p; - struct Win * w = get_win_by_id(world.windb.active); + struct KeyBindingDB * kbdb; + struct Win * w = get_win_by_id(world.winDB.active); if (0 == w->view) { - kb_p = w->kb.kbs; + kbdb = &w->kb; } else if (1 == w->view) { - kb_p = world.kb_wingeom.kbs; + kbdb = &world.kb_wingeom; } else if (2 == w->view) { - kb_p = world.kb_winkeys.kbs; + kbdb = &world.kb_winkeys; } - uint16_t offset = draw_titled_keybinding_list(title, win, 0, kb_p); + uint16_t offset = draw_titled_keybinding_list(title, win, 0, kbdb); add_line(win, " ", 0); - struct KeyBinding * kbs_glo = world.kb_global.kbs; - draw_titled_keybinding_list("Global keybindings", win, offset + 1, kbs_glo); + draw_titled_keybinding_list("Global keybindings", win, offset + 1, + &world.kb_global); }