示例#1
0
// TODO: make it configurable and move to generic actions
bool Walk(struct Game *game, struct TM_Action *action, enum TM_ActionState state) {
	if (state == TM_ACTIONSTATE_START) SelectDerpySpritesheet(game, "walk");
	else if (state != TM_ACTIONSTATE_RUNNING) return false;
	game->level.derpy_x+=(0.00125*1280)/(float)game->viewportWidth;
	if (game->level.derpy_x>=(0.05*1280)/(float)game->viewportWidth) return true;
	return false;
}
示例#2
0
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;
}
示例#3
0
bool Run(struct Game *game, struct TM_Action *action, enum TM_ActionState state) {
	if (state == TM_ACTIONSTATE_START) {
		game->level.handle_input=false;
		game->level.speed_modifier=1;
	}
	else if (state == TM_ACTIONSTATE_DESTROY) {
		game->level.derpy_angle = 0;
		SelectDerpySpritesheet(game, "run");
	}
	else if (state != TM_ACTIONSTATE_RUNNING) return false;
	game->level.derpy_y+=0.0042;
	if (game->level.derpy_angle > 0) { game->level.derpy_angle -= 0.02; if (game->level.derpy_angle < 0) game->level.derpy_angle = 0; }
	if (game->level.derpy_angle < 0) { game->level.derpy_angle += 0.02; if (game->level.derpy_angle > 0) game->level.derpy_angle = 0; }
	if (game->level.derpy_y>=0.65) return true;
	return false;
}
示例#4
0
bool Stop(struct Game *game, struct TM_Action *action, enum TM_ActionState state) {
	if (state != TM_ACTIONSTATE_RUNNING) return false;
	game->level.speed=0;
	SelectDerpySpritesheet(game, "stand");
	return true;
}