From 194112490cf58dc5fe9c0ca0488d4964faa9f2a3 Mon Sep 17 00:00:00 2001 From: Oxore Date: Sat, 2 Dec 2017 11:25:50 +0300 Subject: Make all text resources load from yaml file --- src/functions.c | 32 +++++++++++++++++++------------- src/main.c | 39 ++++++++++++--------------------------- 2 files changed, 31 insertions(+), 40 deletions(-) (limited to 'src') diff --git a/src/functions.c b/src/functions.c index cf01bfb..482a459 100644 --- a/src/functions.c +++ b/src/functions.c @@ -71,22 +71,28 @@ void initFld() } -void scoreDisplay(int s, Text *textScore) +void valueAfterTextDisplay(int value, List *texts, char *type) { - char a[64]; - sprintf(a, "Score: %d", s); - sfText_setString(textScore->sfText, (char *)&a); -} - - -void levelDisplay(int s, Text *textLevel) -{ - char a[64]; - sprintf(a, "Level: %d", s); - sfText_setString(textLevel->sfText, (char *)&a); + List *l = texts; + while (l) { + Text *text = (Text *)l->obj; + if (text->type) + if (!strcmp(text->type, type)) { + char a[64]; + if (text->text) { + if (strlen(text->text) > 52) { + memset(text->text+52, '\0', 1); + strcpy(a, text->text); + } + sprintf(a, "%s%d", text->text, value); + sfText_setString(text->sfText, (char *)&a); + break; + } + } + l = l->next; + } } - /* * Removes line when cells all are in row in it * diff --git a/src/main.c b/src/main.c index 6f28c0f..731aa86 100644 --- a/src/main.c +++ b/src/main.c @@ -6,8 +6,6 @@ Window w = {.mode = {450, 520, 32}}; Game game = {.isStarted = 0, .scoreCurrent = 0, .level = 1}; List *texts; -Text score; -Text level; sfFont *fontScore; Shape active, next; Field fld; @@ -44,18 +42,7 @@ void prepare() { .cSize = {.x = 23, .y = 23}}; initFld(); - texts = ListOfText_getFromListOfKeyMapOfString(ListOfKeyMapOfString_getFromYaml("dat/ya.yaml")); - score.sfText = sfText_create(); - sfText_setFont(score.sfText, fontScore); - sfText_setCharacterSize(score.sfText, 20); - sfText_setPosition(score.sfText, (sfVector2f){.x = 250+10+10, .y = 10}); - - level.sfText = sfText_create(); - sfText_setFont(level.sfText, fontScore); - sfText_setCharacterSize(level.sfText, 20); - sfText_setPosition(level.sfText, (sfVector2f){.x = 250+10+10, .y = 44}); - w.window = sfRenderWindow_create(w.mode, windowName_conf, sfResize | sfClose, @@ -70,17 +57,25 @@ void handleWindowEvents() { sfRenderWindow_close(w.window); } +void drawTextsAtScene(List *texts, char *scene, sfRenderWindow *window) { + List *t = texts; + while (t) { + if (!strcmp(((Text *)t->obj)->scene, scene)) + sfRenderWindow_drawText(window, ((Text *)t->obj)->sfText, NULL); + t = t->next; + } +} + void gameLoop() { tTick(); tKeyCtrl(); - scoreDisplay(game.scoreCurrent, &score); - levelDisplay(game.level, &level); + valueAfterTextDisplay(game.scoreCurrent, texts, "score"); + valueAfterTextDisplay(game.level, texts, "level"); colorizeFld(); colorizeActive(); drawFld(w.window); drawNextShape(w.window); - sfRenderWindow_drawText(w.window, score.sfText, NULL); - sfRenderWindow_drawText(w.window, level.sfText, NULL); + drawTextsAtScene(texts, "game", w.window); } void menuTick() @@ -91,15 +86,6 @@ void menuTick() } } -void drawTextsAtScene(List *texts, char *scene, sfRenderWindow *window) { - List *t = texts; - while (t) { - if (!strcmp(((Text *)t->obj)->scene, scene)) - sfRenderWindow_drawText(window, ((Text *)t->obj)->sfText, NULL); - t = t->next; - } -} - void menuLoop() { menuTick(); drawFld(w.window); @@ -133,7 +119,6 @@ int main() printf("%d\n", game.scoreCurrent); freeFld(); sfRenderWindow_destroy(w.window); - sfText_destroy(score.sfText); ListOfText_free(&texts); return EXIT_SUCCESS; -- cgit v1.2.3