mirror of
https://gitlab.com/dosowisko.net/libsuperderpy.git
synced 2025-02-01 02:56:43 +01:00
add CopyCharacter util function
This commit is contained in:
parent
97495fa2aa
commit
91180024a1
3 changed files with 24 additions and 4 deletions
|
@ -568,6 +568,25 @@ SYMBOL_EXPORT void DrawCharacter(struct Game* game, struct Character* character)
|
|||
al_use_transform(¤t);
|
||||
}
|
||||
|
||||
SYMBOL_EXPORT void CopyCharacter(struct Game* game, struct Character* from, struct Character* to) {
|
||||
to->shared = true;
|
||||
if (to->name) {
|
||||
free(to->name);
|
||||
}
|
||||
to->name = from->name ? strdup(from->name) : NULL;
|
||||
to->spritesheets = from->spritesheets;
|
||||
to->spritesheet = from->spritesheet;
|
||||
to->frame = from->frame;
|
||||
to->delta = from->delta;
|
||||
to->pos = from->pos;
|
||||
to->predecessor = from->predecessor ? strdup(from->predecessor) : NULL;
|
||||
to->repeats = from->repeats;
|
||||
to->reversed = from->reversed;
|
||||
to->reversing = from->reversing;
|
||||
to->successor = from->successor ? strdup(from->successor) : NULL;
|
||||
to->frame = &to->spritesheet->frames[to->pos];
|
||||
}
|
||||
|
||||
SYMBOL_EXPORT void SetParentCharacter(struct Game* game, struct Character* character, struct Character* parent) {
|
||||
character->parent = parent;
|
||||
}
|
||||
|
@ -630,9 +649,11 @@ SYMBOL_EXPORT bool IsOnCharacter(struct Game* game, struct Character* character,
|
|||
SYMBOL_EXPORT void ShowCharacter(struct Game* game, struct Character* character) {
|
||||
character->hidden = false;
|
||||
}
|
||||
|
||||
SYMBOL_EXPORT void HideCharacter(struct Game* game, struct Character* character) {
|
||||
character->hidden = true;
|
||||
}
|
||||
|
||||
SYMBOL_EXPORT bool IsCharacterHidden(struct Game* game, struct Character* character) {
|
||||
if (character->hidden) {
|
||||
return true;
|
||||
|
|
|
@ -139,6 +139,8 @@ void SetCharacterConfines(struct Game* game, struct Character* character, int x,
|
|||
|
||||
void SetParentCharacter(struct Game* game, struct Character* character, struct Character* parent);
|
||||
|
||||
void CopyCharacter(struct Game* game, struct Character* from, struct Character* to);
|
||||
|
||||
float GetCharacterX(struct Game* game, struct Character* character);
|
||||
float GetCharacterY(struct Game* game, struct Character* character);
|
||||
int GetCharacterConfineX(struct Game* game, struct Character* character);
|
||||
|
|
|
@ -197,10 +197,7 @@ SYMBOL_EXPORT void EmitParticle(struct Game* game, struct ParticleBucket* bucket
|
|||
bucket->particles[bucket->last].state = state;
|
||||
bucket->particles[bucket->last].data = data;
|
||||
|
||||
bucket->particles[bucket->last].character->spritesheets = archetype->spritesheets;
|
||||
bucket->particles[bucket->last].character->spritesheet = archetype->spritesheet;
|
||||
// TODO: move more state and avoid SelectSpritesheet; maybe add a function like CopyCharacter?
|
||||
SelectSpritesheet(game, bucket->particles[bucket->last].character, bucket->particles[bucket->last].character->spritesheet->name);
|
||||
CopyCharacter(game, archetype, bucket->particles[bucket->last].character);
|
||||
|
||||
bucket->active++;
|
||||
bucket->last++;
|
||||
|
|
Loading…
Reference in a new issue