Exemplo n.º 1
0
int collusion_chk()
{
	if (pebcolusion() == true)
	{
		
		if (red->has_been_eaten == true) red->has_been_eaten = false;
		if (pink->has_been_eaten == true) pink->has_been_eaten = false;
		if (blue->has_been_eaten == true) blue->has_been_eaten = false;
		if (orange->has_been_eaten == true) orange->has_been_eaten = false;

		red->turn();
		pink->turn();
		blue->turn();
		orange->turn();

		blue->is_eatable = true;
		orange->is_eatable = true;
	
		
		pacman->super=true;

	}

	red->chgetmer();
	pink->chgetmer();
	blue->chgetmer();
	orange->chgetmer();

	if (pacman->died == true) 
	{
		die_pause = 3000.f;
		change_game_state(DIE_PAUSE);
	} 

	if (red->chkifeaten() == true)
	{
		die_pause = 1000.f;
		change_game_state(DIE_PAUSE);
	} 
	if (pink->chkifeaten() == true)
	{
		die_pause = 1000.f;
		change_game_state(DIE_PAUSE);
	}
	if (blue->chkifeaten() == true)
	{
		die_pause = 1000.f;
		change_game_state(DIE_PAUSE);
	}
	if (orange->chkifeaten() == true)
	{
		die_pause = 1000.f;
		change_game_state(DIE_PAUSE);
	}
		 
	return 0;
}
Exemplo n.º 2
0
void main_game::load_level(std::uint32_t index) {
    ship_sys.events.register_handler("ship_destroyed", this, [&](event_hash, any&) {
        screen_shake.set_amplitude(5.f);
    });

	change_game_state(game_state::loading);
}
Exemplo n.º 3
0
int intro_music_pause()
{
	if (music_pause.is_started()== false)
	{
		music_pause.start();
	}
	if (music_pause.get_ticks() > 3000.f)
	{
		change_game_state(PLAY);
	}
	return 0;
}
Exemplo n.º 4
0
int game_ini()
{
	if (plyrtmer.is_started() == true)
	{
		print("PLAYER",100,95);
	}
	if (plyrtmer.get_ticks() > 2500.f)
	{
		plyrtmer.stop();
		pacman->setxy(115,190);
		red->setxy(114,95);
		pink->setxy(114,119);
		blue->setxy(98,119);
		orange->setxy(130,119);
		
		blue->speed = 75;
		red->speed = 60;
		pink->speed = 75;
		orange->speed = 75;
		d_frame=5;

		blue->doanime = true;
		red->doanime = true;
		pink->doanime = true;
		orange->doanime = true;

		blue->boxmovement = 1;
		red->boxmovement = 1;
		pink->boxmovement = 1;
		orange->boxmovement = 1;
	
		
		red->is_out_of_box = true;
		pink->is_out_of_box = false;
		blue->is_out_of_box = false;
		orange->is_out_of_box = false;
		
		GhostSwitchMode.start();
	}
	if (plyrtmer.is_started() == false)
	{
		pacman->show_frame(image,0,0);
		red->show_frame(image,0,0);
		blue->show_frame(image,0,0);
		orange->show_frame(image,0,0);

		pink->change_sprite(LOOK_UP);
		pink->show_frame(image,pink->sprt2use,pink->frame);

		blue->change_sprite(LOOK_DWN);
		blue->show_frame(image,blue->sprt2use,blue->frame);

		orange->change_sprite(LOOK_UP);
		orange->show_frame(image,orange->sprt2use,orange->frame);
	}
	if (redytmer.get_ticks() > 2*2300.f)
	{
		clroclst(*red);
		clroclst(*pink);
		clroclst(*blue);
		clroclst(*orange);
		redytmer.stop();		
		pacman->died = false;
		curtimg = image;
		sprnum=0;
		pacman->frame=0;
		change_game_state(PLAY);
	}
	if (redytmer.is_started() == true)
	{
		print("READY!",100,142);
	}
	return 0;
}
Exemplo n.º 5
0
void main_game::run(float dt) {
    game_base::run(dt);
	// world position for interactions
	world_mouse_pos = camera.viewport_to_world(mouse->position, screen_rect);

	nebular_background->run(camera);
	current_level->run(dt);

	if (state == game_state::game_base) {
		bullet_particle_system.upload(dt, screen_rect);
		sparks_particle_system.upload(dt, screen_rect);
		ship_sys.run(dt, screen_rect);
		ship_sys.calc_screen_pos(camera, screen_rect);
		background_dust->run(camera, screen_rect);
		waypoint_visualizer->run();
		trails_renderer->run(camera);

		if (ship_sys.size() > 0) {
			auto button_container = (ui::ui_container*)ui.named_elements["ship_button_container"];

			uint32_t current_button_count = 0;

			for (auto button_it = button_container->begin(); button_it != button_container->end(); ++button_it) {
				current_button_count++;
			}

			if (current_button_count < ship_sys.size()) {
				for (uint32_t i = 0; i < ship_sys.size() - current_button_count; ++i) {
					auto new_selection_button = new ship_selection_button(button_container);
				}
			}

			auto current_button = (ship_selection_button*)*button_container->begin();

			for (auto ship_it = ship_sys.begin(); ship_it != ship_sys.end(); ++ship_it) {
				auto screen_pos = (*ship_it)->screen_position;

				current_button->set_margin_left(floor(screen_pos.x - 8.f));
				current_button->set_margin_top(floor(screen_pos.y - 8.f));

				if ((*ship_it)->team == 0) {
					if (exists_in(teams[0].selected_ships, *ship_it)) {
						current_button->set_selection_state(ship_selection_button_state::selected);
					} else {
						current_button->set_selection_state(ship_selection_button_state::player);
					}

				} else {
					current_button->set_selection_state(ship_selection_button_state::enemy);
				}

				current_button->assc_ship = *ship_it;
				current_button->mouse_button_released(ui::get_ui_handler(&main_game::ship_selection_button_mouse_released, this));

				current_button = (ship_selection_button*)current_button->get_next_leaf();
			}

			while (current_button) {
				current_button->set_visibility(false);
				current_button = (ship_selection_button*)current_button->get_next_leaf();
			}

			button_container->arrange_layout(viewport);
		}

		// camera movements
		if (mouse->wheel_y > 0) {
			camera.zoom_in(dt);
		}

		if (mouse->wheel_y < 0) {
			camera.zoom_out(dt);
		}

		if (mouse->is_down(mouse_buttons::middle)) {
			camera.move(mouse->delta.reflect_y());
		}


		if (mouse->was_pressed(mouse_buttons::left)) {
			// enabled selection rect
			if (!ui.render_context.is_drawn_pixel(world_mouse_pos)) {
				selection_anchor = world_mouse_pos;
				is_selection_active = true;
				selection_renderer->show();
			}
		}

		if (is_selection_active) {
			if (!ui.render_context.is_drawn_pixel(world_mouse_pos)) {
				teams[0].previous_selected_ships.clear();
				teams[0].selected_ships.swap(teams[0].previous_selected_ships);

				// create selection rect
				selection_rect.position.x = min(selection_anchor.x, world_mouse_pos.x);
				selection_rect.position.y = min(selection_anchor.y, world_mouse_pos.y);
				selection_rect.size.width = abs(selection_anchor.x - world_mouse_pos.x);
				selection_rect.size.height = abs(selection_anchor.y - world_mouse_pos.y);
				selection_renderer->set_rect(selection_rect);

				// find ships inside selection rect
				rect ship_rect;
				for (auto& current_ship : teams[0].ships) {

					ship_rect.position.x = current_ship->transform.position.x - current_ship->dimension.size.width * 0.5f;
					ship_rect.position.y = current_ship->transform.position.y - current_ship->dimension.size.height * 0.5f;
					ship_rect.size.width = current_ship->dimension.size.width;
					ship_rect.size.height = current_ship->dimension.size.height;

					if (selection_rect.intersects(ship_rect)) {
						teams[0].selected_ships.push_back(current_ship);
					}
				}

				// check if some ship was selected
				for (auto selected_ship : teams[0].selected_ships) {
					if (!exists_in(teams[0].previous_selected_ships, selected_ship)) {
						selected_ship->select();
					}
				}

				// check if some ship was unselected
				for (auto prev_selected_ship : teams[0].previous_selected_ships) {
					if (!exists_in(teams[0].selected_ships, prev_selected_ship)) {
						prev_selected_ship->unselect();
					}
				}
			}
		}

		if (mouse->was_released(mouse_buttons::left)) {
			// disabled selection rect
			is_selection_active = false;
			selection_renderer->hide();
		}

		if (mouse->was_pressed(mouse_buttons::right)) {
			if (ui.is_drawn_pixel(mouse->position)) {

			} else {
				// order selected ships to fly to mouse position 
				waypoint new_waypoint;
				new_waypoint.type = waypoint_type::fly_to_position;
				new_waypoint.position_target = world_mouse_pos;

				add_waypoint_to_selection(new_waypoint);
			}
		}

		// damp screen shake amplitude
		screen_shake.set_amplitude(screen_shake.get_amplitude() * exp(-4.0f * dt));
	}

	if (state == game_state::loading) {
		if (!loader.is_finished()) {
			((ui_label*)ui.named_elements["loading_label"])->set_text(std::to_string((int)(loader.get_progress() * 100.f)));
			loader.load(hub, 10.f);
			loading_squares->run(loader.get_progress());
		} else {
			change_game_state(game_state::game_base);
		}
	}
}