From cfb55bed7a4b36a745bb8b03ccb2f77e9ef67952 Mon Sep 17 00:00:00 2001 From: Michael Chen Date: Mon, 15 Jan 2018 23:47:39 +0100 Subject: [PATCH] Highscoretable works now (mostly) --- bin/assets/fonts/monofur.ttf | Bin 0 -> 169452 bytes bin/bhi.exe | Bin 12800 -> 13824 bytes highscores.c | 99 ++++++++++++++++++++++++++++++++--- highscores.h | 9 ++++ main.c | 54 +++---------------- 5 files changed, 107 insertions(+), 55 deletions(-) create mode 100644 bin/assets/fonts/monofur.ttf diff --git a/bin/assets/fonts/monofur.ttf b/bin/assets/fonts/monofur.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9aebf80094a59d16fd0f10ec0343ec67d2ed3fc2 GIT binary patch literal 169452 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

^oSWD#DvbmoMX!Qq#N{I?Nv!A zp%zpbTDVSRtLVW)QI*(bkd(su3qeKSx1y*t1K=t3DmO!9zseo93w z9`#h1SUeuZu`jV`%w_TWeEw)WO3c-mB^D3k

Z}Hpio&^jOT;M`{xaC;6es#?1qX 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 Y$#>e_;|*=Y!N%__`SqOPaOxZJU%7yj%K!iX diff --git a/highscores.c b/highscores.c index b58ebab..7ab9f3f 100644 --- a/highscores.c +++ b/highscores.c @@ -1,11 +1,93 @@ #include #include -#include #include +#include +#include +#include +#include #include "highscores.h" -User * HIGHSCORES_GetList(int * usercount){ +int entriesGot = 0; +User * ul; +SDL_Color White; +SDL_Texture * Message; +SDL_Surface * surfaceMessage; +SDL_Rect Message_rect; +TTF_Font * font = NULL; + +void HIGHSCORES_Initialize(){ + printf("Initializing Highscores...\n"); + White = (SDL_Color) {255, 255, 255 }; + ul = malloc(10 * sizeof(User)); + font = TTF_OpenFont("assets/fonts/monofur.ttf", 48); + if (!font) printf("Font could not initialize! Error: %s\n", TTF_GetError()); + else printf("Font was successfully initialized!\n"); + printFontStyle(font); + HIGHSCORES_ReloadList(&entriesGot); + printf("Highscores initialized!\n"); +} + +void printFontStyle(TTF_Font * ffont){ + int style; + + style = TTF_GetFontStyle(ffont); + printf("The font style is:"); + if (style == TTF_STYLE_NORMAL) + printf(" normal"); + else { + if (style & TTF_STYLE_BOLD) + printf(" bold"); + if (style & TTF_STYLE_ITALIC) + printf(" italic"); + if (style & TTF_STYLE_UNDERLINE) + printf(" underline"); + if (style & TTF_STYLE_STRIKETHROUGH) + printf(" strikethrough"); + } + printf("\n"); +} + +void HIGHSCORES_Draw(SDL_Renderer * renderer){ + char * buffer = calloc(100, sizeof(char)); + int count = 0; + char format[20] = "| %-50s | %-10s |"; + + sprintf(buffer, format, "Username", "Score"); + HIGHSCORES_GenerateTexture(renderer, buffer); + Message_rect.y = 70; + Message_rect.x = 50; + SDL_RenderCopy(renderer, Message, NULL, &Message_rect); + while (count < entriesGot) { + sprintf(buffer, format, ul[count].Username, ul[count].Score); + HIGHSCORES_GenerateTexture(renderer, buffer); + Message_rect.y = ((Message_rect.h + 10) * (count + 1)) + 140; + Message_rect.x = 50; + SDL_RenderCopy(renderer, Message, NULL, &Message_rect); + count++; + } +} + +void HIGHSCORES_Deinitialize(){ + printf("De-initializing Highscores...\n"); + TTF_CloseFont(font); + font = NULL; // to be safe... + SDL_FreeSurface(surfaceMessage); + SDL_DestroyTexture(Message); + free(ul); + printf("Highscores de-initialized!\n"); +} + +void HIGHSCORES_GenerateTexture(SDL_Renderer * renderer, char * text){ + int w, h; + + TTF_SizeText(font, text, &w, &h); + surfaceMessage = TTF_RenderText_Solid(font, text, White); // as TTF_RenderText_Solid could only be used on SDL_Surface then you have to create the surface first + Message = SDL_CreateTextureFromSurface(renderer, surfaceMessage); // now you can convert it into a texture + Message_rect = (SDL_Rect) {.x = 0, .y = 0, .w = w, .h = h }; // create a rect +} + +void HIGHSCORES_ReloadList(int * usercount){ printf("Call BHI interface:\n"); system("bhi top output.txt"); printf("BHI interface quit!\nBHI output handling...\n"); @@ -18,13 +100,13 @@ User * HIGHSCORES_GetList(int * usercount){ char * name, * scorestring; int nameCharCount = 0, scoreCharCount = 0; bool switchread = false; - User * ul = malloc(10 * sizeof(User)); + ul = malloc(10 * sizeof(User)); fp = fopen("output.txt", "r"); if (fp == NULL) - return ul; + return; if ((read = getline(&line, &len, fp)) != -1) if (line[0] == 0) - return ul; + return; int counter = 0; while ((read = getline(&line, &len, fp)) != -1) { name = malloc(read * sizeof(char)); @@ -50,10 +132,12 @@ User * HIGHSCORES_GetList(int * usercount){ name[nameCharCount] = '\0'; scorestring[scoreCharCount] = '\0'; User tmp; - tmp.Username = name; - tmp.Score = scorestring; + strcpy(tmp.Username, name); + strcpy(tmp.Score, scorestring); ul[counter++] = tmp; } + free(name); + free(scorestring); fclose(fp); if (line) @@ -64,5 +148,4 @@ User * HIGHSCORES_GetList(int * usercount){ *usercount = counter; printf("BHI Interface successfully quit!\n"); - return ul; } /* main */ diff --git a/highscores.h b/highscores.h index d8f0660..7d56811 100644 --- a/highscores.h +++ b/highscores.h @@ -7,4 +7,13 @@ typedef struct userStruct { } User; // End Structs +// Prototypes +void HIGHSCORES_Initialize(); +void printFontStyle(TTF_Font * ffont); +void HIGHSCORES_Draw(SDL_Renderer * renderer); +void HIGHSCORES_Deinitialize(); +void HIGHSCORES_GenerateTexture(SDL_Renderer * renderer, char * text); +void HIGHSCORES_ReloadList(int * usercount); +// End Prototypes + #endif diff --git a/main.c b/main.c index e0f54f5..20c95a0 100644 --- a/main.c +++ b/main.c @@ -11,6 +11,7 @@ #include "vector.h" #include "startmenu.h" #include "gamestate.h" +#include "highscores.h" #ifndef __nullptr__ #define Nullptr(type) (type *)0 @@ -24,7 +25,6 @@ void INITIALIZE(); void QUIT(); void HandleSDLEvents(); -void DrawText(SDL_Renderer * renderer, const char * text); void DrawBackground(SDL_Renderer * renderer); void printFontStyle(TTF_Font * ffont); void mousePress(SDL_MouseButtonEvent b); @@ -44,7 +44,6 @@ SDL_Window * window; SDL_Renderer * renderer; SDL_Event event; bool running = true, fullscreen = false; -TTF_Font * font = NULL; GameState gameState = Game; Scenery scenery; @@ -64,6 +63,9 @@ int main(int argc, char * args[]){ // Startmenu_Update(keystate); Startmenu_Draw(renderer); break; + case Highscores: + HIGHSCORES_Draw(renderer); + break; default: printf("Unknow state was updated: %d\n", gameState); } @@ -78,6 +80,7 @@ void HandleSDLEvents(){ while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: + printf("NOTICE: User manually quit window!\n"); running = false; break; case SDL_KEYDOWN: @@ -137,43 +140,6 @@ void DrawBackground(SDL_Renderer * renderer){ SDL_RenderClear(renderer); } /* DrawFrame */ -void DrawText(SDL_Renderer * renderer, const char * text){ - int w, h; - - if (TTF_SizeText(font, text, &w, &h)) { - // perhaps print the current TTF_GetError(), the string can't be rendered... - } else { - printf("width=%d height=%d\n", w, h); - } - SDL_Color White = { 255, 255, 255 }; // this is the color in rgb format, maxing out all would give you the color white, and it will be your text's color - SDL_Surface * surfaceMessage = TTF_RenderText_Solid(font, text, White); // as TTF_RenderText_Solid could only be used on SDL_Surface then you have to create the surface first - SDL_Texture * Message = SDL_CreateTextureFromSurface(renderer, surfaceMessage); // now you can convert it into a texture - SDL_Rect Message_rect = (SDL_Rect) {.x = 0, .y = 0, .w = w, .h = h }; // create a rect - SDL_RenderCopy(renderer, Message, NULL, &Message_rect); // you put the renderer's name first, the Message, the crop size(you can ignore this if you don't want to dabble with cropping), and the rect which is the size and coordinate of your texture - SDL_FreeSurface(surfaceMessage); - SDL_DestroyTexture(Message); -} - -void printFontStyle(TTF_Font * ffont){ - int style; - - style = TTF_GetFontStyle(ffont); - printf("The font style is:"); - if (style == TTF_STYLE_NORMAL) - printf(" normal"); - else { - if (style & TTF_STYLE_BOLD) - printf(" bold"); - if (style & TTF_STYLE_ITALIC) - printf(" italic"); - if (style & TTF_STYLE_UNDERLINE) - printf(" underline"); - if (style & TTF_STYLE_STRIKETHROUGH) - printf(" strikethrough"); - } - printf("\n"); -} - void INITIALIZE() { printf("Initializing started...\n"); srand(time(NULL)); @@ -185,12 +151,6 @@ void INITIALIZE() { if (TTF_Init() == -1) printf("TTF could not initialize! Error: %s\n", TTF_GetError()); else printf("TTF was successfully initialized!\n"); -// load font.ttf at size 16 into font - font = TTF_OpenFont("assets/fonts/minecraft.ttf", 32); - if (!font) printf("Font could not initialize! Error: %s\n", TTF_GetError()); - else printf("Font was successfully initialized!\n"); - printFontStyle(font); - window = SDL_CreateWindow("BreakING", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_OPENGL); SDL_SetWindowResizable(window, true); printf("Window was created!\n"); @@ -199,15 +159,15 @@ void INITIALIZE() { BREAKOUT_INITIALIZE(renderer, width, height); scenery = BREAKOUT_CreateDefault(); Load_Textures(renderer); + HIGHSCORES_Initialize(); printf("Initializing finished!\n"); } /* INITIALIZE */ void QUIT(){ printf("De-initializing started...\n"); + HIGHSCORES_Deinitialize(); BREAKOUT_DestroyObject(&scenery); BREAKOUT_DEINITIALIZE(); - TTF_CloseFont(font); - font = NULL; // to be safe... TTF_Quit(); IMG_Quit(); printf("Quitting SDL_IMG finished!\n");