X-Git-Url: http://git.draconx.ca/gitweb/rrace.git/blobdiff_plain/f6be82664a5b8e8bc34c048b56417b591dcd5a5e..ad65227b902d251d04131d6d3947172de4885400:/src/curses.c diff --git a/src/curses.c b/src/curses.c index f66589e..f4e70d2 100644 --- a/src/curses.c +++ b/src/curses.c @@ -1,6 +1,6 @@ /* * Curses UI for slide puzzle game - * Copyright © 2022 Nick Bowler + * Copyright © 2022-2023 Nick Bowler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,6 +17,7 @@ */ #include +#include #include #include #include @@ -24,6 +25,7 @@ #include #include "help.h" +#include "xtra.h" #include "version.h" #include "cursesui.h" @@ -34,7 +36,6 @@ enum { }; static const char *progname = "rrace"; -static const struct option lopts[] = { LOPTS_INITIALIZER, {0} }; static struct app_state state; @@ -53,7 +54,7 @@ static void print_usage(FILE *f) fprintf(f, "Try %s --help for more information.\n", progname); } -static void print_help(void) +static void print_help(const struct option *lopts) { struct lopt_help help = {0}; const struct option *opt; @@ -156,13 +157,8 @@ static void curs_redraw_game(struct app_state *state, uint_fast32_t mask) if (mask == -1) redraw_area_border(state->gamewin, 2, 5); - if (state->view_goal_on_game) { - for (i = 0; i < 3; i++) { - buf[i] = state->board.goal[i]; - buf[i] = (gp[i] & ~GOAL_MASK) | (buf[i] << GOAL_SHIFT); - } - gp = buf; - } + if (state->view_goal_on_game) + gp = game_overlay_goal(&state->board, buf); for (i = 0; i < 25; i++) { if (mask & 1) { @@ -297,6 +293,8 @@ static void app_initialize(int argc, char **argv) int enable_mouse = 1; int opt; + XTRA_PACKED_LOPTS(lopts); + if (argc > 0) progname = argv[0]; @@ -312,7 +310,7 @@ static void app_initialize(int argc, char **argv) print_version(); exit(EXIT_SUCCESS); case LOPT_HELP: - print_help(); + print_help(lopts); exit(EXIT_SUCCESS); default: print_usage(stderr); @@ -427,6 +425,7 @@ void curs_new_game(struct app_state *state) game_reset(&state->board); do_reset_cursor(state); + state->view_goal_on_game = 0; curs_redraw_game(state, -1); curs_redraw_goal(state, -1); update_timer(state, 0);