changed lexer helper function to add match char to data, and fixed loading in spritesheet from string

This commit is contained in:
herbglitch 2025-03-19 14:49:04 -06:00
parent 83b87c6d63
commit 1435ae14b0
5 changed files with 19 additions and 3 deletions

View file

@ -34,6 +34,15 @@ void ARC_Spritesheet_CreateFromFile(ARC_Spritesheet **spritesheet, ARC_Renderer
*/ */
void ARC_Spritesheet_Destroy(ARC_Spritesheet *spritesheet); 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 * @brief renders a section of a spritesheet
* *

View file

@ -6,7 +6,6 @@ extern "C" {
#endif #endif
#include "arc/std/parser.h" #include "arc/std/parser.h"
#include <stddef.h>
/** /**
* @brief recurses through a tag token adding token strings to a main string * @brief recurses through a tag token adding token strings to a main string

View file

@ -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){ void ARC_ConfigType_SpritesheetString(void **type, ARC_ParserTagToken *parsedData, ARC_Config *config, void *userdata){
ARC_Renderer *renderer = (ARC_Renderer *)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 //get the path
ARC_String *path; ARC_String *path;
ARC_String_Create(&path, NULL, 0); ARC_String_Create(&path, NULL, 0);
ARC_ParserData_HelperRecurseStringAdd(&path, parsedData); ARC_ParserData_HelperRecurseStringAdd(&path, stringCharsTagToken);
//read in and set the texture //read in and set the texture
ARC_Spritesheet_CreateFromFile((ARC_Spritesheet **)type, renderer, path); ARC_Spritesheet_CreateFromFile((ARC_Spritesheet **)type, renderer, path);

View file

@ -49,6 +49,10 @@ void ARC_Spritesheet_Destroy(ARC_Spritesheet *spritesheet){
free(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){ 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); SDL_RenderCopy((SDL_Renderer *)renderer, spritesheet->texture, (SDL_Rect *)&sheetBounds, (SDL_Rect *)&renderBounds);
} }

View file

@ -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 //check to see if there is a match with automataData as a char
if(string->data[0] == *(char *)automataData){ 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; return 1;
} }