示例#1
0
文件: level4.c 项目: dos1/SuperDerpy
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);
}
示例#2
0
文件: riots.c 项目: dos1/mediator
void UpdateRockets(struct Game *game, struct RocketsResources *data, struct Rocket* rockets) {
	  struct Rocket *tmp = rockets;
		while (tmp) {
			  tmp->dy+= tmp->modifier;
				if (!tmp->blown) {
					  tmp->dx+= (tmp->dx > 0) ? (-tmp->modifier / 5 + 0.001) : (tmp->modifier / 5 - 0.001);
				}
				MoveCharacter(game, tmp->character, tmp->dx, tmp->dy, tmp->blown ? 0 : ((tmp->dx > 0) ? 0.0166 : -0.0166));
				AnimateCharacter(game, tmp->character, 1);

				if (!tmp->blown) {

					  if (((((GetCharacterY(game, tmp->character) > 90) && (rand() % 4 == 0) && (tmp->dy > 0)))) && (GetCharacterX(game, tmp->character) > -20 && GetCharacterX(game, tmp->character) < 320)) {
							  tmp->blown = true;
								tmp->modifier = 0;
								tmp->character->angle = 0;
								tmp->dx = 0;
								tmp->dy = 0;
								SelectSpritesheet(game, tmp->character, "boom");
								MoveCharacter(game, tmp->character, 5, 5, 0);

								if (!((GetCharacterX(game, tmp->character) > 140) && (GetCharacterX(game, tmp->character) < 180))) {
									  if (!data->lost) {
											  AdvanceLevel(game, false);

												data->lost = true;
												data->flash = 4;
										data->counter = 0;
										TM_AddDelay(data->timeline, 3500);
										if (game->data->mediator.lives > 0) {
											  TM_AddAction(data->timeline, switchMinigame, NULL, "switchMinigame");
										} else {
											  TM_AddAction(data->timeline, theEnd, NULL, "theEnd");
										}
										data->spawnspeed = 10;

										al_play_sample_instance(data->riot_sound);

										}
										al_play_sample_instance(data->boom_sound);

								}

						} else if (GetCharacterX(game, tmp->character) < -20 || GetCharacterX(game, tmp->character) > 320) {
							  tmp->blown = true;
								tmp->modifier = 0;
								tmp->character->angle = 0;
								tmp->dx = 0;
								tmp->dy = 0;
								SelectSpritesheet(game, tmp->character, "blank");
								al_play_sample_instance(data->boom_sound);
						}
				}
				tmp=tmp->next;
		}
}
示例#3
0
文件: level6.c 项目: Lodus/SuperDerpy
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);
}
示例#4
0
文件: level1.c 项目: Lodus/SuperDerpy
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;
}
示例#5
0
void Gamestate_Start(struct Game *game, struct GamestateResources* data) {
	data->pos = 1;
	data->fade = 0;
	data->tan = 64;
	data->tick = 0;
	data->fadeout = false;
	data->underscore=true;
	strcpy(data->text, "#");
	TM_AddDelay(data->timeline, 300);
	TM_AddQueuedBackgroundAction(data->timeline, FadeIn, TM_AddToArgs(NULL, 1, data), 0, "fadein");
	TM_AddDelay(data->timeline, 1500);
	TM_AddAction(data->timeline, Play, TM_AddToArgs(NULL, 1, data->kbd), "playkbd");
	TM_AddQueuedBackgroundAction(data->timeline, Type, TM_AddToArgs(NULL, 1, data), 0, "type");
	TM_AddDelay(data->timeline, 3200);
	TM_AddAction(data->timeline, Play, TM_AddToArgs(NULL, 1, data->key), "playkey");
	TM_AddDelay(data->timeline, 50);
	TM_AddAction(data->timeline, FadeOut, TM_AddToArgs(NULL, 1, data), "fadeout");
	TM_AddDelay(data->timeline, 1000);
	TM_AddAction(data->timeline, End, NULL, "end");
	al_play_sample_instance(data->sound);
}
示例#6
0
文件: riots.c 项目: dos1/mediator
void Gamestate_Logic(struct Game *game, struct RocketsResources* data) {

	  if ((data->spawncounter == data->currentspawn) && ((data->counter < data->timelimit) || (data->lost))) {
			  if (rand() % 2 == 0) {
					  data->rockets_left = CreateRocket(game, data, data->rockets_left, false);
				} else {
					  data->rockets_right = CreateRocket(game, data, data->rockets_right, true);
				}
				data->spawncounter = 0;
		}

		if (!data->flash) {
			  UpdateRockets(game, data, data->rockets_left);
				UpdateRockets(game, data, data->rockets_right);
		} else {
			  data->flash--;
		}

		if (data->lost) {
			  data->zadyma++;
				if (data->zadyma >= 255) {
					  data->zadyma = 255;
				}
		}

		AnimateCharacter(game, data->usa_flag, 1);
		AnimateCharacter(game, data->ru_flag, 1);
		AnimateCharacter(game, data->riot, 1);
		if ((data->lost) && (data->hearts > 80)) {
			  AnimateCharacter(game, game->data->mediator.heart, 1);
				if (game->data->mediator.heart->pos == 6) {
					  al_play_sample_instance(data->boom_sound);
				}
		}

		if (data->lost) {
			  data->hearts++;
		}

		if (data->won) {
			  AnimateCharacter(game, data->euro, 1);
		}

		if ((data->counter >= data->timelimit) && (!data->lost) && (!data->won)) {
			  bool stillthere = false;
				struct Rocket *tmp = data->rockets_left;
				while (tmp) {
					  if (!tmp->blown) {
							  stillthere = true;
								break;
						}
						tmp = tmp->next;
				}
				tmp = data->rockets_right;
				while (tmp) {
					  if (!tmp->blown) {
							  stillthere = true;
								break;
						}
						tmp = tmp->next;
				}
				if (!stillthere) {
					  SelectSpritesheet(game, data->euro, "euro");
						SetCharacterPosition(game, data->euro, 0, 0, 0);
						al_play_sample_instance(data->wuwu_sound);
						data->won = true;
						AdvanceLevel(game, true);
						SelectSpritesheet(game, data->usa_flag, "poland");
						SelectSpritesheet(game, data->ru_flag, "poland");
						TM_AddDelay(data->timeline, 2500);
						TM_AddAction(data->timeline, switchMinigame, NULL, "switchMinigame");
				}
		}


		void iterate(struct Rocket *start) {
			  struct Rocket *tmp1 = start;
				while (tmp1) {
					  if (!tmp1->blown) {
							//  if (CheckCollision(game, data, data->cursor, tmp1->character)) {

							  if ( (abs(GetCharacterY(game, tmp1->character) - GetCharacterY(game, data->cursor)) <= 10) &&
								     (((GetCharacterX(game, tmp1->character) <= GetCharacterX(game, data->cursor) + al_get_bitmap_width(data->cursor->bitmap)) && (GetCharacterX(game, tmp1->character) + al_get_bitmap_width(tmp1->character->bitmap) >= GetCharacterX(game, data->cursor) + al_get_bitmap_width(data->cursor->bitmap)))  ||

								     ((GetCharacterX(game, tmp1->character) + al_get_bitmap_width(tmp1->character->bitmap) >= GetCharacterX(game, data->cursor)) && (GetCharacterX(game, tmp1->character) + al_get_bitmap_width(tmp1->character->bitmap) <= GetCharacterX(game, data->cursor) + al_get_bitmap_width(data->cursor->bitmap))) )) {

									  if (GetCharacterY(game, tmp1->character) < GetCharacterY(game, data->cursor)) {
											  tmp1->dx = 0;
												tmp1->dy = 0;
												tmp1->modifier = 0;
												tmp1->blown = true;
												SelectSpritesheet(game, tmp1->character, "blank");
										} else if (tmp1->dy < 0) {
											  tmp1->dy *= -1;
										}

										al_play_sample_instance(data->rocket_sound);

								}

						}
						tmp1 = tmp1->next;
				}

		}
		iterate(data->rockets_left);
		iterate(data->rockets_right);

		data->counter++;
		data->spawncounter++;
		data->cloud_rotation += 0.002;

		TM_Process(data->timeline);
}