diff --git a/src/character.c b/src/character.c index 83e7f22..9354096 100644 --- a/src/character.c +++ b/src/character.c @@ -71,6 +71,15 @@ SYMBOL_EXPORT void SelectSpritesheet(struct Game* game, struct Character* charac PrintConsole(game, "ERROR: No spritesheets registered for %s with given name: %s", character->name, name); } +SYMBOL_EXPORT void SwitchSpritesheet(struct Game* game, struct Character* character, char* name) { + int pos = character->pos; + SelectSpritesheet(game, character, name); + if (pos < character->spritesheets->frameCount) { + character->pos = pos; + character->frame = &character->spritesheet->frames[character->pos]; + } +} + SYMBOL_EXPORT void EnqueueSpritesheet(struct Game* game, struct Character* character, char* name) { if (character->successor) { free(character->successor); diff --git a/src/character.h b/src/character.h index 916b85c..8f7978a 100644 --- a/src/character.h +++ b/src/character.h @@ -105,6 +105,7 @@ struct Character { // TODO: document functions void SelectSpritesheet(struct Game* game, struct Character* character, char* name); +void SwitchSpritesheet(struct Game* game, struct Character* character, char* name); void EnqueueSpritesheet(struct Game* game, struct Character* character, char* name); void RegisterSpritesheet(struct Game* game, struct Character* character, char* name); struct Spritesheet* GetSpritesheet(struct Game* game, struct Character* character, char* name);