diff --git a/include/arc/graphics/spritesheet.h b/include/arc/graphics/spritesheet.h index 3310fe0..b543927 100644 --- a/include/arc/graphics/spritesheet.h +++ b/include/arc/graphics/spritesheet.h @@ -34,6 +34,15 @@ void ARC_Spritesheet_CreateFromFile(ARC_Spritesheet **spritesheet, ARC_Renderer */ void ARC_Spritesheet_Destroy(ARC_Spritesheet *spritesheet); +/** + * @brief renders the texture of a spritesheet + * + * @param[in] spritesheet ARC_Spritesheet to render + * @param[in] renderer the renderer to draw to + * @param[in] renderBounds the area of the renderer to copy the spritesheet to +*/ +void ARC_Spritesheet_Render(ARC_Spritesheet *spritesheet, ARC_Renderer *renderer, ARC_Rect renderBounds); + /** * @brief renders a section of a spritesheet * diff --git a/include/arc/std/parser/helpers.h b/include/arc/std/parser/helpers.h index e06f5c5..c4cc4db 100644 --- a/include/arc/std/parser/helpers.h +++ b/include/arc/std/parser/helpers.h @@ -6,7 +6,6 @@ extern "C" { #endif #include "arc/std/parser.h" -#include /** * @brief recurses through a tag token adding token strings to a main string diff --git a/packages/graphics/sdl/config.c b/packages/graphics/sdl/config.c index 07ced82..529bba3 100644 --- a/packages/graphics/sdl/config.c +++ b/packages/graphics/sdl/config.c @@ -22,10 +22,13 @@ void ARC_Config_InitGraphics(ARC_Config *config, ARC_Renderer *renderer){ void ARC_ConfigType_SpritesheetString(void **type, ARC_ParserTagToken *parsedData, ARC_Config *config, void *userdata){ ARC_Renderer *renderer = (ARC_Renderer *)userdata; + //get the string chars between the quotes + ARC_ParserTagToken *stringCharsTagToken = (ARC_ParserTagToken *)ARC_Vector_Get(parsedData->tagTokens, 1); + //get the path ARC_String *path; ARC_String_Create(&path, NULL, 0); - ARC_ParserData_HelperRecurseStringAdd(&path, parsedData); + ARC_ParserData_HelperRecurseStringAdd(&path, stringCharsTagToken); //read in and set the texture ARC_Spritesheet_CreateFromFile((ARC_Spritesheet **)type, renderer, path); diff --git a/packages/graphics/sdl/spritesheet.c b/packages/graphics/sdl/spritesheet.c index a2e8a20..eaa496b 100644 --- a/packages/graphics/sdl/spritesheet.c +++ b/packages/graphics/sdl/spritesheet.c @@ -49,6 +49,10 @@ void ARC_Spritesheet_Destroy(ARC_Spritesheet *spritesheet){ free(spritesheet); } +void ARC_Spritesheet_Render(ARC_Spritesheet *spritesheet, ARC_Renderer *renderer, ARC_Rect renderBounds){ + SDL_RenderCopy((SDL_Renderer *)renderer, spritesheet->texture, NULL, (SDL_Rect *)&renderBounds); +} + void ARC_Spritesheet_RenderArea(ARC_Spritesheet *spritesheet, ARC_Rect sheetBounds, ARC_Renderer *renderer, ARC_Rect renderBounds){ SDL_RenderCopy((SDL_Renderer *)renderer, spritesheet->texture, (SDL_Rect *)&sheetBounds, (SDL_Rect *)&renderBounds); } diff --git a/src/std/lexer.c b/src/std/lexer.c index c2ee606..e690dd6 100644 --- a/src/std/lexer.c +++ b/src/std/lexer.c @@ -335,7 +335,8 @@ uint32_t ARC_Lexer_AutomataMatchCharFn(ARC_String **tokenData, ARC_String *strin //check to see if there is a match with automataData as a char if(string->data[0] == *(char *)automataData){ - //return the token was found of length 1 + //return the token as token data and the token was found of length 1 + ARC_String_Create(tokenData, string->data, 1); return 1; }