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