void Level6_Load(struct Game *game) { Moonwalk_Load(game); TM_AddAction(&DoMoonwalk, NULL, "moonwalk"); TM_AddBackgroundAction(&DoMoonwalk, NULL, 5000, "moonwalkDerp"); TM_AddBackgroundAction(&PassLevel, NULL, 10000, "passlevel"); FadeGameState(game, true); }
void Level4_Load(struct Game *game) { Moonwalk_Load(game); TM_AddAction(&DoMoonwalk, NULL, "moonwalk"); TM_AddAction(&PassLevel, NULL, "passlevel"); TM_AddBackgroundAction(&ShowMeter, NULL, 0, "showmeter"); FadeGameState(game, true); }
void Level1_Load(struct Game *game) { Dodger_Load(game); TM_AddBackgroundAction(&FadeIn, NULL, 0, "fadein"); TM_AddDelay(1000); TM_AddQueuedBackgroundAction(&Welcome, NULL, 0, "welcome"); TM_AddDelay(1000); TM_AddAction(&Walk, NULL, "walk"); TM_AddAction(&Move, NULL, "move"); TM_AddAction(&Stop, NULL, "stop"); TM_AddDelay(1000); TM_AddAction(&Letter, NULL, "letter"); TM_AddDelay(200); TM_AddQueuedBackgroundAction(&Accelerate, NULL, 0, "accelerate"); TM_AddAction(&Fly, NULL, "fly"); TM_AddDelay(500); /* first part gameplay goes here */ /* actions for generating obstacles should go here * probably as regular actions. When one ends, harder one * begins. After last one part with muffins starts. */ TM_AddAction(&GenerateObstacles, NULL, "obstacles"); TM_AddDelay(3*1000); /* wings disappear, deccelerate */ TM_AddAction(&Run, NULL, "run"); TM_AddDelay(3*1000); /* show Fluttershy's house // second part gameplay goes here // cutscene goes here */ TM_AddAction(&PassLevel, NULL, "passlevel"); // init level specific obstacle for Dodger module struct Obstacle *obst = malloc(sizeof(struct Obstacle)); obst->prev = NULL; obst->next = NULL; obst->x = 83.5; obst->y = 55; obst->speed = 1; obst->points = 0; obst->hit = false; obst->rows = 1; obst->cols = 1; obst->pos = 0; obst->blanks = 0; obst->anim_speed = 0; obst->tmp_pos = 0; obst->angle = 0; obst->callback = NULL; obst->data = NULL; obst->bitmap = &(game->level.level1.owl); game->level.dodger.obstacles = obst; }
bool Fly(struct Game *game, struct TM_Action *action, enum TM_ActionState state) { if (state == TM_ACTIONSTATE_START) { SelectDerpySpritesheet(game, "fly"); game->level.derpy_angle = -0.15; TM_AddBackgroundAction(&ShowMeter, NULL, 0, "showmeter"); } else if (state == TM_ACTIONSTATE_DESTROY) { game->level.handle_input = true; } else if (state != TM_ACTIONSTATE_RUNNING) return false; game->level.derpy_y-=0.004; if (game->level.derpy_y<=0.2) return true; return false; }
bool Type(struct Game *game, struct TM_Action *action, enum TM_ActionState state) { struct GamestateResources *data = TM_GetArg(action->arguments, 0); if (state == TM_ACTIONSTATE_RUNNING) { strncpy(data->text, text, data->pos++); data->text[data->pos] = 0; if (strcmp(data->text, text) != 0) { TM_AddBackgroundAction(data->timeline, Type, TM_AddToArgs(NULL, 1, data), 60 + rand() % 60, "type"); } else{ al_stop_sample_instance(data->kbd); } return true; } return false; }