// // Created by william on 6/8/24. // #include #include #include "char_map.h" SDL_Texture *map[CHAR_MAP_COUNT]; SDL_Texture **char_map_get(char c) { int char_index = c - CHAR_MAP_MIN; return &map[char_index]; } void char_map_init(SDL_Renderer *renderer, TTF_Font *font) { char buffer[2]; SDL_Color color = CHAR_MAP_COLOR; SDL_Surface *surface; SDL_Texture **texture; for (int i = 0; i <= CHAR_MAP_COUNT; i++) { buffer[0] = (char) (i + CHAR_MAP_MIN); buffer[1] = '\0'; surface = TTF_RenderText_Solid(font, buffer, color); texture = char_map_get(buffer[0]); *texture = SDL_CreateTextureFromSurface(renderer, surface); SDL_FreeSurface(surface); } } void char_map_uninit() { for (int i = 0; i < CHAR_MAP_COUNT; i++) { SDL_Texture *texture = map[i]; SDL_DestroyTexture(texture); } } void char_map_render(SDL_Renderer *renderer, char *text) { int x = 0; for (int i = 0; i < strlen(text); i++) { char c = text[i]; SDL_Texture *texture = *char_map_get(c); SDL_Rect rect = {x, 0, 16, 16}; SDL_RenderCopy(renderer, texture, NULL, &rect); x += 16; } }