]> git.sur5r.net Git - c128-kasse/blob - kasse.c
print_log-dummy, drucken nach verkauf, fix beim abfragen der aktion, print-toggling
[c128-kasse] / kasse.c
1 #include <stdio.h>
2 #include <conio.h>
3 #include <stdlib.h>
4
5 #include "general.h"
6 #include "config.h"
7 #include "kasse.h"
8 // conf
9 // drucker 4 oder 5
10 // pricee+getraenke
11 //
12 // graphic 4,0,10
13
14
15
16 /* Hauptbildschirm ausgeben */
17 void print_screen() {
18         uc i = 0;
19         clrscr();
20         printf("C128-Kassenprogramm\n\n");
21         printf("Eingenommen: %d Euro, Verkauft: %d Flaschen\n\n", money * 100, items_sold);
22         for (; i < num_items; ++i)
23                 printf("Item %x: %s (%d Cents, %d mal verkauft)\n", i, status[i].item_name, status[i].price, status[i].times_sold);
24         printf("\nBefehle: s) Save Data\tp) Toggle Printing\n");
25 }
26
27 /* Druckt eine entsprechende Zeile aus */
28 void print_log(uc n, int einheiten, char *nickname) {
29         /* Format: 
30            Transaction-ID (Anzahl verkaufter Einträge, inklusive des zu druckenden!)
31            Uhrzeit (TODO)
32            Eintragname (= Getränk)
33            Preis (in Cents)
34            Anzahl
35            Nickname (falls es vom Guthaben abgezogen wird)
36            */
37         printf("[%d] UHRZEIT - %s - %d - %d - an %s\n", items_sold, status[n].item_name, status[n].price, einheiten, (nickname != NULL ? nickname : "Unbekannt"));
38 }
39
40 /* Dialog, der einen durch's Abrechnen der Einträge führt */
41 void buy(uc n) {
42         int negative = 1;
43         char entered[5] = {'1', 0, 0, 0, 0};
44         uc i = 0;
45         uc c;
46         int einheiten;
47         if (status[n].item_name == NULL)
48                 printf("ERROR: No such item\n");
49         else {
50                 printf("Wieviel Einheiten \"%s\"?\n", status[n].item_name);
51                 while (1) {
52                         c = getchar();
53                         if (c == 13)
54                                 break;
55                         else if (c == 45 && i == 0)
56                                 negative = -1;
57                         else if (c > 47 && c < 58)
58                                 entered[i++] = c;
59                 }
60                 einheiten = atoi(entered) * negative;
61                 status[n].times_sold += einheiten;
62                 money += status[n].price * einheiten;
63                 items_sold += einheiten;
64                 // TODO: NULL in nickname des guthabenden ändern
65                 print_log(n, einheiten, NULL);
66         }
67 }
68
69 int main() {
70         static uc c;
71         while (1) {
72                 /* Bildschirm anzeigen */
73                 print_screen();
74                 /* Tastatureingaben abfragen */
75                 c = getchar();
76                 /* und eventuell weitere Dialoge anzeigen */
77                 if (c > 47 && c < 58)
78                         buy(c - 48);
79                 else if (c == 's') {
80                         save_state();
81                         printf("Statefile saved, press ANYKEY to continue...\n");
82                         getchar();
83                 } else if (c == 'p') {
84                         printing = (printing == 1 ? 0 : 1);
85                         printf("Printing is now %s, press ANYKEY to continue...\n", (printing == 1 ? "on" : "off"));
86                         getchar();
87                 } else if (c == 'q')
88                         break;
89         }
90         printf("BYEBYE\n");
91 }