예제 #1
0
파일: ai.c 프로젝트: Alex-Sjoberg/Pioneers
static void ai_start_game(void)
{
	if (algorithms[active_algorithm].request_player ==
	    my_player_viewer()
	    && algorithms[active_algorithm].quit_if_not_request) {
		ai_panic(N_("The game is already full. I'm leaving."));
	}
}
예제 #2
0
파일: identity.c 프로젝트: jquick/pioneers
static gint expose_identity_area_cb(GtkWidget * area,
				    G_GNUC_UNUSED GdkEventExpose * event,
				    G_GNUC_UNUSED gpointer user_data)
{
	GdkPoint points[MAX_POINTS];
	Polygon poly;
	gint offset;
	GdkColor *colour;
	const GameParams *game_params;
	gint i;

	if (area->window == NULL || my_player_num() < 0)
		return FALSE;

	if (identity_gc == NULL)
		identity_gc = gdk_gc_new(area->window);

	colour = player_or_viewer_color(my_player_num());
	gdk_gc_set_foreground(identity_gc, colour);
	gdk_draw_rectangle(area->window, identity_gc, TRUE, 0, 0,
			   area->allocation.width,
			   area->allocation.height);

	if (my_player_viewer())
		colour = &white;
	else
		colour = &black;
	gdk_gc_set_foreground(identity_gc, colour);

	game_params = get_game_params();
	if (game_params == NULL)
		return TRUE;
	offset = 5;

	poly.points = points;
	if (game_params->num_build_type[BUILD_ROAD] > 0) {
		poly.num_points = MAX_POINTS;
		guimap_road_polygon(&bogus_map, NULL, &poly);
		offset = draw_building_and_count(identity_gc, area, offset,
						 &poly, stock_num_roads());
	}
	if (game_params->num_build_type[BUILD_SHIP] > 0) {
		poly.num_points = MAX_POINTS;
		guimap_ship_polygon(&bogus_map, NULL, &poly);
		offset = draw_building_and_count(identity_gc, area, offset,
						 &poly, stock_num_ships());
	}
	if (game_params->num_build_type[BUILD_BRIDGE] > 0) {
		poly.num_points = MAX_POINTS;
		guimap_bridge_polygon(&bogus_map, NULL, &poly);
		offset = draw_building_and_count(identity_gc, area, offset,
						 &poly,
						 stock_num_bridges());
	}
	if (game_params->num_build_type[BUILD_SETTLEMENT] > 0) {
		poly.num_points = MAX_POINTS;
		guimap_settlement_polygon(&bogus_map, NULL, &poly);
		offset = draw_building_and_count(identity_gc, area, offset,
						 &poly,
						 stock_num_settlements());
	}
	if (game_params->num_build_type[BUILD_CITY] > 0) {
		poly.num_points = MAX_POINTS;
		guimap_city_polygon(&bogus_map, NULL, &poly);
		offset = draw_building_and_count(identity_gc, area, offset,
						 &poly,
						 stock_num_cities());
	}
	if (game_params->num_build_type[BUILD_CITY_WALL] > 0) {
		poly.num_points = MAX_POINTS;
		guimap_city_wall_polygon(&bogus_map, NULL, &poly);
		offset = draw_building_and_count(identity_gc, area, offset,
						 &poly,
						 stock_num_city_walls());
	}

	if (die_num[0] > 0 && die_num[1] > 0) {
		GdkColor *die_border_color[2];
		GdkColor *die_color[2];
		GdkColor *die_dots_color[2];
		if (game_params->use_cities_and_knights_rules) {
			die_border_color[0] = &ck_die_yellow;
			die_color[0] = &ck_die_red;
			die_dots_color[0] = &ck_die_yellow;
			die_border_color[1] = &ck_die_red;
			die_color[1] = &ck_die_yellow;
			die_dots_color[1] = &ck_die_red;
		} else {
			die_border_color[0] = &black;
			die_color[0] = &white;
			die_dots_color[0] = &black;
			die_border_color[1] = &black;
			die_color[1] = &white;
			die_dots_color[1] = &black;
		}
		for (i = 0; i < 2; i++) {
			show_die(identity_gc, area,
				 area->allocation.width - 70 + 35 * i,
				 die_num[i], die_border_color[i],
				 die_color[i], die_dots_color[i]);
		}
	}

	return TRUE;
}