Mirai's Miscellaneous Misadventures

M31 / include / mimimi / appearances.h

// copyright 2022 zamfofex
// license: AGPLv3 or later

#ifndef MIMIMI_APPEARANCES_H
#define MIMIMI_APPEARANCES_H

struct mimimi_model;
struct mimimi_allocator;
struct mimimi_animation;
struct mimimi_video;
struct mimimi_engine;

struct mimimi_animation_set
{
	int standing_animation_count;
	struct mimimi_animation *standing;
	struct mimimi_animation *knocked;
	struct mimimi_animation *falling;
	struct mimimi_animation *jumping;
};

struct mimimi_appearance
{
	struct mimimi_animation_set left, right;
};

struct mimimi_video_set
{
	int standing_video_count;
	struct mimimi_video *standing;
	struct mimimi_video *knocked;
	struct mimimi_video *falling;
	struct mimimi_video *jumping;
};

struct mimimi_video_appearance
{
	struct mimimi_video_set left, right;
};

void mimimi_appearance(struct mimimi_appearance *appearance, struct mimimi_model *model, int x, int y, struct mimimi_allocator *allocator);

void mimimi_video_appearance(struct mimimi_video_appearance *video_appearance, struct mimimi_appearance *appearance, struct mimimi_engine *engine, struct mimimi_allocator *allocator);
void mimimi_invalidate_video_appearance(struct mimimi_video_appearance *appearance, struct mimimi_engine *engine);
void mimimi_deallocate_video_appearance(struct mimimi_video_appearance *appearance, struct mimimi_allocator *allocator);
void mimimi_finish_video_appearance(struct mimimi_video_appearance *appearance, struct mimimi_engine *engine, struct mimimi_allocator *allocator);

#endif