/* * Copyright (C) 2024 Tristan Riehs * * 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 * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include "disp.h" #include "calc_data.h" static struct calc_data calcs[CALC_COUNT] = {0}; static int current_idx = 0; static WINDOW *win; void init(void) { win = initscr(); clear(); refresh(); } void display_calc(int x, int y) { calcs[current_idx].x = x; calcs[current_idx].y = y; clear(); printw("%d + %d = ", x, y); refresh(); } int read_input(void) { char c = getchar(); switch(c) { #ifndef NDEBUG case 'g': case 'r': return DISP_RELOAD; #endif case 'q': return DISP_QUIT; default: return DISP_ERR; } return DISP_ERR; } void display_res(bool right, int ms) { (void) right; (void) ms; } void destroy(void) { endwin(); } #ifndef NDEBUG void * pre_reload(void) { char *data = malloc(sizeof(calcs) + sizeof(current_idx)); memcpy(data, &calcs, sizeof(calcs)); memcpy(data + sizeof(calcs), ¤t_idx, sizeof(current_idx)); endwin(); return data; } void post_reload(void *state) { char *data = state; memcpy(&calcs, data, sizeof(calcs)); memcpy(¤t_idx, data + sizeof(calcs), sizeof(current_idx)); free(data); init(); } #endif