Mirai's Miscellaneous Misadventures
M17 / include / mimimi / chapters.h
#ifndef MIMIMI_CHAPTERS_H
#define MIMIMI_CHAPTERS_H
struct mimimi_game;
struct mimimi_sprite;
struct mimimi_sprite_appearance;
struct mimimi_image;
enum mimimi_occurrence
{
mimimi_sprite_spawned,
};
struct mimimi_chapter
{
void *data;
void (*start)(struct mimimi_chapter *chapter, struct mimimi_game *game);
void (*step)(struct mimimi_chapter *chapter);
void (*occurrence)(struct mimimi_chapter *chapter, enum mimimi_occurrence type, void *occurrence);
};
struct mimimi_physical_attributes
{
int x, y;
int width, height;
int dx, dy;
char airborne;
char direction;
};
struct mimimi_living_attributes
{
int knocked_time;
int immunity_time;
int pristinity;
};
struct mimimi_behavior
{
void (*behave)(struct mimimi_sprite *sprite, void *data);
void *data;
};
struct mimimi_physics_data
{
int gravity;
};
struct mimimi_fall_data
{
int max_speed;
int knocked_time;
};
struct mimimi_live_data
{
int recovery_immunity_time;
int max_pristinity;
};
struct mimimi_walk_data
{
int ground_speed;
int airborne_speed;
};
struct mimimi_camera_data
{
struct mimimi_sprite *target;
};
struct mimimi_behave_data
{
struct mimimi_behavior *behavior;
struct mimimi_physics_data *physics_data;
struct mimimi_fall_data *fall_data;
struct mimimi_live_data *live_data;
struct mimimi_walk_data *walk_data;
};
extern struct mimimi_physics_data *mimimi_physics_data_default;
extern struct mimimi_fall_data *mimimi_fall_data_default;
extern struct mimimi_live_data *mimimi_live_data_default;
extern struct mimimi_walk_data *mimimi_walk_data_default;
extern struct mimimi_behave_data *mimimi_behave_data_default;
extern int mimimi_sprite_size;
extern int mimimi_width;
extern int mimimi_height;
void mimimi_jump(struct mimimi_sprite *sprite);
void mimimi_damage(struct mimimi_sprite *sprite, int damage, int attack_y, int attack_width, int attack_height);
void mimimi_spawn(struct mimimi_game *game, struct mimimi_sprite *sprite, int x, int y, int width, int height, struct mimimi_sprite_appearance *appearance, struct mimimi_behavior *behavior);
void mimimi_physics(struct mimimi_sprite *sprite, void *data);
void mimimi_controls(struct mimimi_sprite *sprite, void *data);
void mimimi_enemy_ai(struct mimimi_sprite *sprite, void *data);
void mimimi_stationary_ai(struct mimimi_sprite *sprite, void *data);
void mimimi_fall(struct mimimi_sprite *sprite, void *data);
void mimimi_live(struct mimimi_sprite *sprite, void *data);
void mimimi_walk(struct mimimi_sprite *sprite, void *data);
void mimimi_camera(struct mimimi_sprite *sprite, void *data);
void mimimi_behave(struct mimimi_sprite *sprite, void *data);
void mimimi_physical_attributes(struct mimimi_sprite *sprite, struct mimimi_physical_attributes *attributes);
void mimimi_living_attributes(struct mimimi_sprite *sprite, struct mimimi_living_attributes *attributes);
void mimimi_camera_sprite(struct mimimi_sprite *sprite);
void mimimi_ground(struct mimimi_game *game, unsigned char *ground, int width, int height);
void mimimi_background(struct mimimi_game *game, struct mimimi_image *background);
void mimimi_overlay(struct mimimi_game *game, struct mimimi_image *overlay);
int mimimi_text(struct mimimi_image *image, struct mimimi_image *glyphs, int x, int y, char *text);
#endif