Updated CreateObjectGraphicsSprite with new system.
This commit is contained in:
parent
96c829ca99
commit
2ec895fbee
1 changed files with 18 additions and 19 deletions
|
@ -1614,6 +1614,18 @@ static void MakeSpriteTemplateFromObjectEventTemplate(struct ObjectEventTemplate
|
||||||
CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEventTemplate->graphicsId, objectEventTemplate->movementType, spriteTemplate, subspriteTables);
|
CopyObjectGraphicsInfoToSpriteTemplate_WithMovementType(objectEventTemplate->graphicsId, objectEventTemplate->movementType, spriteTemplate, subspriteTables);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Loads information from graphicsId, with shininess separate
|
||||||
|
// also can write palette tag to the template
|
||||||
|
static u8 LoadDynamicFollowerPaletteFromGraphicsId(u16 graphicsId, bool8 shiny, struct SpriteTemplate *template) {
|
||||||
|
u16 species = ((graphicsId & OBJ_EVENT_GFX_SPECIES_MASK) - OBJ_EVENT_GFX_MON_BASE);
|
||||||
|
u8 form = (graphicsId >> OBJ_EVENT_GFX_SPECIES_BITS);
|
||||||
|
const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species];
|
||||||
|
u8 paletteNum = LoadDynamicFollowerPalette(species, form, shiny);
|
||||||
|
if (template)
|
||||||
|
template->paletteTag = spritePalette->tag;
|
||||||
|
return paletteNum;
|
||||||
|
}
|
||||||
|
|
||||||
// Used to create a sprite using a graphicsId associated with object events.
|
// Used to create a sprite using a graphicsId associated with object events.
|
||||||
u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
|
u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
|
||||||
{
|
{
|
||||||
|
@ -1621,29 +1633,16 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *),
|
||||||
const struct SubspriteTable *subspriteTables;
|
const struct SubspriteTable *subspriteTables;
|
||||||
struct Sprite *sprite;
|
struct Sprite *sprite;
|
||||||
u8 spriteId;
|
u8 spriteId;
|
||||||
u16 species;
|
u32 paletteNum;
|
||||||
u8 form;
|
|
||||||
bool8 shiny;
|
|
||||||
u8 paletteNum;
|
|
||||||
|
|
||||||
spriteTemplate = Alloc(sizeof(struct SpriteTemplate));
|
spriteTemplate = Alloc(sizeof(struct SpriteTemplate));
|
||||||
if (graphicsId >= OBJ_EVENT_GFX_MON_BASE && GetFollowerInfo(&species, &form, &shiny)) {
|
CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables);
|
||||||
const struct ObjectEventGraphicsInfo *graphicsInfo = SpeciesToGraphicsInfo(species, form);
|
|
||||||
spriteTemplate->tileTag = graphicsInfo->tileTag;
|
|
||||||
spriteTemplate->paletteTag = graphicsInfo->paletteTag;
|
|
||||||
spriteTemplate->oam = graphicsInfo->oam;
|
|
||||||
spriteTemplate->anims = graphicsInfo->anims;
|
|
||||||
spriteTemplate->images = graphicsInfo->images;
|
|
||||||
spriteTemplate->affineAnims = graphicsInfo->affineAnims;
|
|
||||||
spriteTemplate->callback = callback;
|
|
||||||
subspriteTables = graphicsInfo->subspriteTables;
|
|
||||||
} else
|
|
||||||
CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables);
|
|
||||||
|
|
||||||
if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) {
|
if (spriteTemplate->paletteTag == OBJ_EVENT_PAL_TAG_DYNAMIC) {
|
||||||
const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species];
|
struct ObjectEvent *obj = GetFollowerObject();
|
||||||
paletteNum = LoadDynamicFollowerPalette(species, form, shiny);
|
// Use shininess info from follower object
|
||||||
spriteTemplate->paletteTag = spritePalette->tag;
|
// in future this should be passed in
|
||||||
|
paletteNum = LoadDynamicFollowerPaletteFromGraphicsId(graphicsId, obj ? obj->shiny : FALSE, spriteTemplate);
|
||||||
} else if (spriteTemplate->paletteTag != TAG_NONE)
|
} else if (spriteTemplate->paletteTag != TAG_NONE)
|
||||||
LoadObjectEventPalette(spriteTemplate->paletteTag);
|
LoadObjectEventPalette(spriteTemplate->paletteTag);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue