From: Michael Stapelberg Date: Mon, 1 Nov 2010 17:48:37 +0000 (+0100) Subject: use nice drawing characters and two-column layout X-Git-Tag: rgb2rv9~25 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=aa0e1bb3a4ebf8d8b9a1b9f943d24e12275568a9;p=c128-kasse use nice drawing characters and two-column layout --- diff --git a/include/general.h b/include/general.h index 481c104..3c76062 100644 --- a/include/general.h +++ b/include/general.h @@ -19,4 +19,7 @@ extern BYTE _oserror; #define xstr(s) str(s) #define str(s) #s +#define max(a, b) ((a) > (b) ? (a) : (b)) +#define min(a, b) ((a) > (b) ? (b) : (a)) + #endif /*GENERAL_H_*/ diff --git a/src/general.c b/src/general.c index db7807c..5994544 100644 --- a/src/general.c +++ b/src/general.c @@ -52,7 +52,7 @@ char *format_euro(char *s, int maxlen, int cent){ if (len >= maxlen) return NULL; // workaround to produce a leading zero for cents.. %0.2d won't work - sprintf(s, "%2d,%s%dEUR", cent / 100, ((cent%100)<10?"0":""), cent % 100); + sprintf(s, "%3d,%s%dEUR", cent / 100, ((cent%100)<10?"0":""), cent % 100); return s; } diff --git a/src/itemz.c b/src/itemz.c index f9ea82f..0b43fa8 100644 --- a/src/itemz.c +++ b/src/itemz.c @@ -23,7 +23,7 @@ static void itemz_print_screen() { clrscr(); cprintf("itemz (phil_fry, sECuRE, sur5r) v:" GV "\r\n\r\n"); cprintf("Datei: ITEMS\r\n\r\n"); - for (i = 0; i < status.num_items; i++) { + for (i = 0; i < max(status.num_items, 15); i++) { if (format_euro(buffer, 10, status.status[i].price) != buffer) { cprintf("Error: Could not format price %d\r\n", status.status[i].price); exit(1); diff --git a/src/kasse.c b/src/kasse.c index 08fbdc1..7086388 100644 --- a/src/kasse.c +++ b/src/kasse.c @@ -37,21 +37,34 @@ static void print_screen() { exit(1); } cprintf("C128-Kassenprogramm (phil_fry, sECuRE, sur5r) " GV "\r\ -\r\nUhrzeit: %s (wird nicht aktualisiert)\r\ -Eingenommen: %s, Verkauft: %ld Dinge, Drucken: %s\r\n\r\n", +\r\nUhrzeit: %s (wird nicht aktualisiert)\r\ +Eingenommen: %s, Verkauft: %ld Dinge, Drucken: %s\r\n", time, profit, items_sold, (printing == 1 ? "ein" : "aus")); - for (; i < status.num_items; ++i) { + cprintf("\xB0\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\xB2\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\xB2\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\xB2\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\xAE\r\n"); + for (; i < min(status.num_items, 15); ++i) { if (format_euro(profit, sizeof(profit), status.status[i].price) == NULL) { cprintf("Preis %ld konnte nicht umgerechnet werden\r\n", status.status[i].price); exit(1); } - cprintf("Eintrag %2d: %-" xstr(MAX_ITEM_NAME_LENGTH) "s (%s, %d mal verkauft)\r\n", + cprintf("\x7D%2d: %-" xstr(MAX_ITEM_NAME_LENGTH) "s \x7D%s, %3dx \x7D", i, status.status[i].item_name, profit, status.status[i].times_sold); + if ((i+16) < status.num_items) { + + if (format_euro(profit, sizeof(profit), status.status[i+16].price) == NULL) { + cprintf("Preis %ld konnte nicht umgerechnet werden\r\n", status.status[i+16].price); + exit(1); + } + cprintf("%2d: %-" xstr(MAX_ITEM_NAME_LENGTH) "s \x7D%s, %3dx \x7D", + i+16, status.status[i+16].item_name, profit, status.status[i+16].times_sold); + } else cprintf(" \x7D \x7D"); + cprintf("\r\n"); } - cprintf("\r\nBefehle: s) Daten sichern d) Drucken umschalten\r\ -g) Guthabenverwaltung z) Zeit setzen\r\ -f) Freitext verkaufen q) Beenden\r\n"); + cprintf("\xAD\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\xB1\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\xB1\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\xB1\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\x60\xBD\r\n"); + cprintf( +" s) Daten sichern d) Drucken umschalten\r\ + g) Guthabenverwaltung z) Zeit setzen\r\ + f) Freitext verkaufen q) Beenden\r\n"); } /* Prints a line and logs it to file */ @@ -301,7 +314,8 @@ int main() { } else if (*c == 'q') break; } - cprintf("BYEBYE\r\n"); + clrscr(); + cprintf("\r\nBYEBYE\r\n"); return 0; }