]> git.sur5r.net Git - c128-kasse/blobdiff - src/credit_manager.c
Restructure Makefile and create include/version.h
[c128-kasse] / src / credit_manager.c
index 29fdac6dbbbd062bcf3834fb629d41233f8da2df..670926dad7f713fd148264f0cf28d652f9009d8b 100644 (file)
@@ -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
  *
  */
 
 #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");