X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcredit_manager.c;h=670926dad7f713fd148264f0cf28d652f9009d8b;hb=1948f8cdda59d3b5cbcc72e3902a832108bca7ff;hp=29fdac6dbbbd062bcf3834fb629d41233f8da2df;hpb=d15721117a8d2dbd7266882c556626cd5d30b574;p=c128-kasse diff --git a/src/credit_manager.c b/src/credit_manager.c index 29fdac6..670926d 100644 --- a/src/credit_manager.c +++ b/src/credit_manager.c @@ -1,6 +1,6 @@ /* * RGB2R-C128-Kassenprogramm - * (c) 2007-2008 phil_fry, sECuRE, sur5r + * © 2007-2009 phil_fry, sECuRE, sur5r * See LICENSE for license information * */ @@ -11,6 +11,10 @@ #include "config.h" #include "general.h" +#include "kasse.h" +#include "c128time.h" +#include "print.h" +#include "version.h" static char *filter = NULL; static BYTE filter_len; @@ -22,13 +26,12 @@ static void credit_print_screen() { char buffer[10]; clrscr(); - cprintf("itemz (phil_fry, sECuRE, sur5r)\r\n\r\n"); - /* 16 entries per page */ - pages = (credits.num_items / 10); + cprintf("credit_manager (phil_fry, sECuRE, sur5r) v:" GV "\r\n\r\n"); + pages = (credits.num_items / CREDITS_PER_PAGE); if (current_credits_page > pages) current_credits_page = pages; cprintf("Datei: CREDITS (Seite %d von %d)\r\n\r\n", current_credits_page, pages); - for (i = (current_credits_page * 10); i < credits.num_items && i < ((current_credits_page+1) * 10); i++) { + for (i = (current_credits_page * CREDITS_PER_PAGE); i < credits.num_items && i < ((current_credits_page+1) * CREDITS_PER_PAGE); i++) { if (filter == NULL || strncmp(credits.credits[i].nickname, filter, filter_len) == 0) { if (format_euro(buffer, 10, credits.credits[i].credit) != buffer) { cprintf("Error: Could not format credit %d\r\n", credits.credits[i].credit); @@ -50,19 +53,22 @@ struct credits_t *find_credit(char *name){ } /* - * when depositing money with this and returning to the main menu, the program - * will crash with a message like the following: + * Deposits credit for a user. Called in the credit manager (with input == + * NULL) or interactively when the user does not have enough money for his + * intended purchase (with input == nickname). * */ -static void deposit_credit() { - char *input; +void deposit_credit(char *input) { + char *time = get_time(); struct credits_t *credit; unsigned int deposit; - cprintf("\r\nName:\r\n"); - if ((input = get_input()) == NULL || *input == '\0') - return; // no name given - + if (input == NULL) { + cprintf("\r\nName:\r\n"); + if ((input = get_input()) == NULL || *input == '\0') + return; // no name given + } + if ((credit = find_credit(input)) == NULL) return; // cannot find named credit @@ -74,8 +80,11 @@ static void deposit_credit() { toggle_videomode(); cprintf("%d Cent eingezahlt fuer %s.\r\nRestguthaben: %d\r\n", deposit, credit->nickname, credit->credit); + sprintf(print_buffer, "%c%s - %d Cent eingezahlt fuer %s. Restguthaben: %d Cent\r", 17, time, deposit, credit->nickname, credit->credit); + cprintf("%s", print_buffer); toggle_videomode(); - cprintf("\r\nEinzahlung durchgefuehrt, drucke RETURN...\r\n"); + print_the_buffer(); + cprintf("\r\nEinzahlung durchgefuehrt, druecke RETURN...\r\n"); input = get_input(); toggle_videomode(); clrscr(); @@ -84,6 +93,7 @@ static void deposit_credit() { static void new_credit() { char *input, *name; + char *time; int credit; if (credits.num_items == 75) { @@ -92,6 +102,7 @@ static void new_credit() { return; } + clrscr(); cprintf("\rNickname:\r\n"); if ((input = get_input()) == NULL || *input == '\0') return; @@ -101,6 +112,11 @@ static void new_credit() { return; strcpy(credits.credits[credits.num_items].nickname, name); credits.credits[credits.num_items].credit = credit; + + time = get_time(); + sprintf(print_buffer, "%c%s - Guthaben mit %d Cent fuer %s angelegt\r", 17, time, credit, name); + print_the_buffer(); + credits.num_items++; free(name); } @@ -144,7 +160,7 @@ void credit_manager(){ case 's': save_credits(); break; case 'f': - if (current_credits_page < (credits.num_items / 16)) + if (current_credits_page < (credits.num_items / CREDITS_PER_PAGE)) current_credits_page++; break; case 'b': @@ -152,7 +168,7 @@ void credit_manager(){ current_credits_page--; break; case 'p': - deposit_credit(); break; + deposit_credit(NULL); break; case 'g': cprintf("Filter eingeben:\r\n"); filter = get_input(); @@ -160,6 +176,7 @@ void credit_manager(){ filter = NULL; break; case 'z': + save_credits(); return; default: cprintf("Unbekannter Befehl, druecke RETURN...\r\n");