Highscore changed
This commit is contained in:
parent
4bbd306407
commit
8dd21a51a8
67
highscores.c
67
highscores.c
@ -13,20 +13,19 @@
|
|||||||
int entriesGot = 0;
|
int entriesGot = 0;
|
||||||
User * ul;
|
User * ul;
|
||||||
SDL_Color White;
|
SDL_Color White;
|
||||||
SDL_Texture * Message;
|
SDL_Texture * HIGHSCORES_TableTexture;
|
||||||
SDL_Surface * surfaceMessage;
|
SDL_Rect HIGHSCORES_TotalRect;
|
||||||
SDL_Rect Message_rect;
|
|
||||||
TTF_Font * font = NULL;
|
TTF_Font * font = NULL;
|
||||||
|
|
||||||
void HIGHSCORES_Initialize(){
|
void HIGHSCORES_Initialize(){
|
||||||
printf("Initializing Highscores...\n");
|
printf("Initializing Highscores...\n");
|
||||||
Message_rect = (SDL_Rect) {.x = 0, .y = 0, .w = 2, .h = 2 };
|
|
||||||
White = (SDL_Color) {255, 255, 255 };
|
White = (SDL_Color) {255, 255, 255 };
|
||||||
ul = malloc(10 * sizeof(User));
|
ul = malloc(10 * sizeof(User));
|
||||||
font = TTF_OpenFont(HIGHSCORES_FontFamily, 48);
|
font = TTF_OpenFont(HIGHSCORES_FontFamily, 48);
|
||||||
if (!font) printf("Font could not initialize! Error: %s\n", TTF_GetError());
|
if (!font) printf("Font could not initialize! Error: %s\n", TTF_GetError());
|
||||||
else printf("Font was successfully initialized!\n");
|
else printf("Font was successfully initialized!\n");
|
||||||
printFontStyle(font);
|
printFontStyle(font);
|
||||||
|
HIGHSCORES_TotalRect = (SDL_Rect) {.x = 0, .y = 0, .w = 1920, .h = 1080 };
|
||||||
printf("Highscores initialized!\n");
|
printf("Highscores initialized!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,46 +50,48 @@ void printFontStyle(TTF_Font * ffont){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void HIGHSCORES_Draw(SDL_Renderer * renderer){
|
void HIGHSCORES_Draw(SDL_Renderer * renderer){
|
||||||
char * buffer = calloc(100, sizeof(char));
|
SDL_RenderCopy(renderer, HIGHSCORES_TableTexture, &HIGHSCORES_TotalRect, &HIGHSCORES_TotalRect);
|
||||||
int count = 0;
|
|
||||||
char format[20] = "| %-58s | %-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);
|
|
||||||
SDL_DestroyTexture(Message);
|
|
||||||
while (count < entriesGot) {
|
|
||||||
sprintf(buffer, format, ul[count].Username, ul[count].Score);
|
|
||||||
HIGHSCORES_GenerateTexture(renderer, buffer);
|
|
||||||
Message_rect.y = ((Message_rect.h + 15) * (count + 1)) + 140;
|
|
||||||
Message_rect.x = 50;
|
|
||||||
SDL_RenderCopy(renderer, Message, NULL, &Message_rect);
|
|
||||||
SDL_DestroyTexture(Message);
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
} /* HIGHSCORES_Draw */
|
} /* HIGHSCORES_Draw */
|
||||||
|
|
||||||
void HIGHSCORES_Deinitialize(){
|
void HIGHSCORES_Deinitialize(){
|
||||||
printf("De-initializing Highscores...\n");
|
printf("De-initializing Highscores...\n");
|
||||||
TTF_CloseFont(font);
|
TTF_CloseFont(font);
|
||||||
font = NULL; // to be safe...
|
font = NULL; // to be safe...
|
||||||
SDL_FreeSurface(surfaceMessage);
|
SDL_DestroyTexture(HIGHSCORES_TableTexture);
|
||||||
SDL_DestroyTexture(Message);
|
|
||||||
free(ul);
|
free(ul);
|
||||||
printf("Highscores de-initialized!\n");
|
printf("Highscores de-initialized!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void HIGHSCORES_GenerateTexture(SDL_Renderer * renderer, char * text){
|
void HIGHSCORES_GenerateTexture(SDL_Renderer * renderer){
|
||||||
int w, h;
|
char * buffer = calloc(100, sizeof(char));
|
||||||
|
int count = 0;
|
||||||
|
char format[20] = "| %-58s | %-10s |";
|
||||||
|
SDL_Rect Message_rect;
|
||||||
|
SDL_Surface * HIGHSCORES_TableSurface = SDL_CreateRGBSurface(0, 1920, 1080, 32, 0, 0, 0, 0);
|
||||||
|
|
||||||
TTF_SizeText(font, text, &w, &h);
|
sprintf(buffer, format, "Username", "Score");
|
||||||
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_Surface * tempSurface = HIGHSCORES_DrawText(buffer, &Message_rect);
|
||||||
Message = SDL_CreateTextureFromSurface(renderer, surfaceMessage); // now you can convert it into a texture
|
Message_rect.y = 70;
|
||||||
SDL_FreeSurface(surfaceMessage);
|
Message_rect.x = 50;
|
||||||
Message_rect.w = w;
|
SDL_BlitSurface(tempSurface, NULL, HIGHSCORES_TableSurface, &Message_rect);
|
||||||
Message_rect.h = h;
|
SDL_FreeSurface(tempSurface);
|
||||||
|
while (count < entriesGot) {
|
||||||
|
sprintf(buffer, format, ul[count].Username, ul[count].Score);
|
||||||
|
tempSurface = HIGHSCORES_DrawText(buffer, &Message_rect);
|
||||||
|
Message_rect.y = ((Message_rect.h + 15) * (count + 1)) + 140;
|
||||||
|
Message_rect.x = 50;
|
||||||
|
SDL_BlitSurface(tempSurface, NULL, HIGHSCORES_TableSurface, &Message_rect);
|
||||||
|
SDL_FreeSurface(tempSurface);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
HIGHSCORES_TableTexture = SDL_CreateTextureFromSurface(renderer, HIGHSCORES_TableSurface);
|
||||||
|
SDL_FreeSurface(HIGHSCORES_TableSurface);
|
||||||
|
} /* HIGHSCORES_GenerateSurface */
|
||||||
|
|
||||||
|
SDL_Surface * HIGHSCORES_DrawText(char * text, SDL_Rect * Message_rect){
|
||||||
|
TTF_SizeText(font, text, &(Message_rect->w), &(Message_rect->h));
|
||||||
|
SDL_Surface * tempSurface = TTF_RenderText_Solid(font, text, White);
|
||||||
|
return tempSurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HIGHSCORES_ReloadList(){
|
void HIGHSCORES_ReloadList(){
|
||||||
|
@ -12,7 +12,8 @@ void HIGHSCORES_Initialize();
|
|||||||
void printFontStyle(TTF_Font * ffont);
|
void printFontStyle(TTF_Font * ffont);
|
||||||
void HIGHSCORES_Draw(SDL_Renderer * renderer);
|
void HIGHSCORES_Draw(SDL_Renderer * renderer);
|
||||||
void HIGHSCORES_Deinitialize();
|
void HIGHSCORES_Deinitialize();
|
||||||
void HIGHSCORES_GenerateTexture(SDL_Renderer * renderer, char * text);
|
void HIGHSCORES_GenerateTexture(SDL_Renderer * renderer);
|
||||||
|
SDL_Surface * HIGHSCORES_DrawText(char * text, SDL_Rect * Message_rect);
|
||||||
void HIGHSCORES_ReloadList();
|
void HIGHSCORES_ReloadList();
|
||||||
// End Prototypes
|
// End Prototypes
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user