]> git.sur5r.net Git - c128-kasse/blob - credit_manager.c
format_euro(123) => "1,23EUR"
[c128-kasse] / credit_manager.c
1 #include <conio.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5
6 #include "config.h"
7 #include "general.h"
8
9 char *filter = NULL;
10 BYTE filter_len;
11
12 void print_credit_screen() {
13         BYTE i = 0;
14         clrscr();
15         printf("C128-Kassenprogramm: Credit Manager\n\n");
16         for (; i < num_credit_items; ++i)
17                 if (filter == NULL || strncmp(credits[i].nickname, filter, filter_len) == 0)
18                         printf("Guthaben %s: %d Cents\n", credits[i].nickname, credits[i].credit);
19         printf("\nBefehle: n) Neues Guthaben f) Filtern z) Zurueck\n");
20 }
21
22 /* Guthabenverwalter */
23 void credit_manager() {
24         int negative = 1;
25         BYTE c;
26         char *nickname, *credits_input;
27         /* credits_int is a stupid name, but overlaps with struct credits_t credits; else */
28         int credits_int;
29         while (1) {
30                 print_credit_screen();
31                 c = getchar();
32                 if (c == 'n') {
33                         printf("Nickname eingeben:\n");
34                         nickname = get_input();
35                         if (nickname[0] == '\0') {
36                                 free(nickname);
37                                 continue;
38                         }
39                         printf("\nGuthaben eingeben:\n");
40                         credits_input = get_input();
41                         if (credits_input[0] == '\0') {
42                                 free(credits_input);
43                                 continue;
44                         }
45                         if (credits_input[0] == '-') {
46                                 negative = -1;
47                                 ++credits_input;
48                         }
49                         credits_int = atoi(credits_input) * negative;
50                         if (credits_int > 0) {
51                                 credits[num_credit_items].nickname = nickname;
52                                 credits[num_credit_items].credit = credits_int;
53                                 ++num_credit_items;
54                         }
55                         if (negative == -1)
56                                 --credits_input;
57                         free(credits_input);
58                 } else if (c == 'f') {
59                         printf("Filter eingeben:\n");
60                         if (filter != NULL)
61                                 free(filter);
62                         filter = get_input();
63                         if (filter[0] == '0') {
64                                 free(filter);
65                                 filter = NULL;
66                         } else filter_len = strlen(filter);
67                 } else if (c == 'z' || c == 'q')
68                         break;
69         }
70 }