Changeset - r7919:4510ccbc57f0
[Not reviewed]
master
0 1 0
belugas - 17 years ago 2007-11-19 00:57:56
belugas@openttd.org
(svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
1 file changed with 43 insertions and 23 deletions:
0 comments (0 inline, 0 general)
src/smallmap_gui.cpp
Show inline comments
 
@@ -499,6 +499,26 @@ static void DrawHorizMapIndicator(int x,
 
	GfxFillRect(x2 - 3, y, x2,    y2, 69);
 
}
 

	
 
enum SmallMapWindowWidgets {
 
	SM_WIDGET_MAP = 4,
 
	SM_WIDGET_CONTOUR,
 
	SM_WIDGET_VEHICLES,
 
	SM_WIDGET_INDUSTRIES,
 
	SM_WIDGET_ROUTES,
 
	SM_WIDGET_VEGETATION,
 
	SM_WIDGET_OWNERS,
 
	SM_WIDGET_CENTERMAP,
 
	SM_WIDGET_TOGGLETOWNNAME,
 
	SM_WIDGET_LEGEND,
 
};
 

	
 
enum SmallMapType {
 
	SMT_CONTOUR,
 
	SMT_VEHICLES,
 
	SMT_INDUSTRY,
 
	SMT_OWNER = 5,
 
};
 

	
 
/**
 
 * Draws the small map.
 
 *
 
@@ -530,7 +550,7 @@ static void DrawSmallMap(DrawPixelInfo *
 
	GfxFillRect(dpi->left, dpi->top, dpi->left + dpi->width - 1, dpi->top + dpi->height - 1, 0);
 

	
 
	/* setup owner table */
 
	if (type == 5) {
 
	if (type == SMT_OWNER) {
 
		const Player *p;
 

	
 
		/* fill with some special colors */
 
@@ -615,7 +635,7 @@ skip_column:
 
	}
 

	
 
	/* draw vehicles? */
 
	if (type == 0 || type == 1) {
 
	if (type == SMT_CONTOUR || type == SMT_VEHICLES) {
 
		Vehicle *v;
 
		bool skip;
 
		byte color;
 
@@ -653,7 +673,7 @@ skip_column:
 
				}
 

	
 
				/* Calculate pointer to pixel and the color */
 
				color = (type == 1) ? _vehicle_type_colors[v->type] : 0xF;
 
				color = (type == SMT_VEHICLES) ? _vehicle_type_colors[v->type] : 0xF;
 

	
 
				/* And draw either one or two pixels depending on clipping */
 
				blitter->SetPixel(dpi->dst_ptr, x, y, color);
 
@@ -720,8 +740,8 @@ void SmallMapCenterOnCurrentPos(Window *
 
	ViewPort *vp;
 
	vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport;
 

	
 
	x  = ((vp->virtual_width  - (w->widget[4].right  - w->widget[4].left) * TILE_SIZE) / 2 + vp->virtual_left) / 4;
 
	y  = ((vp->virtual_height - (w->widget[4].bottom - w->widget[4].top ) * TILE_SIZE) / 2 + vp->virtual_top ) / 2 - TILE_SIZE * 2;
 
	x  = ((vp->virtual_width  - (w->widget[SM_WIDGET_MAP].right  - w->widget[SM_WIDGET_MAP].left) * TILE_SIZE) / 2 + vp->virtual_left) / 4;
 
	y  = ((vp->virtual_height - (w->widget[SM_WIDGET_MAP].bottom - w->widget[SM_WIDGET_MAP].top ) * TILE_SIZE) / 2 + vp->virtual_top ) / 2 - TILE_SIZE * 2;
 
	WP(w, smallmap_d).scroll_x = (y - x) & ~0xF;
 
	WP(w, smallmap_d).scroll_y = (x + y) & ~0xF;
 
	SetWindowDirty(w);
 
@@ -748,7 +768,7 @@ static void SmallMapWindowProc(Window *w
 
				GfxFillRect(x,     y + 1, x + 8, y + 5, 0);
 
				GfxFillRect(x + 1, y + 2, x + 7, y + 4, tbl->colour);
 

	
 
				if (_smallmap_type == 2) {
 
				if (_smallmap_type == SMT_INDUSTRY) {
 
					/* Industry name must be formated, since it's not in tiny font in the specs.
 
					* So, draw with a parameter and use the STR_7065 string, which is tiny, black */
 
					SetDParam(0, tbl->legend);
 
@@ -777,7 +797,7 @@ static void SmallMapWindowProc(Window *w
 

	
 
		case WE_CLICK:
 
			switch (e->we.click.widget) {
 
				case 4: { // Map window
 
				case SM_WIDGET_MAP: { // Map window
 
					Window *w2 = FindWindowById(WC_MAIN_WINDOW, 0);
 
					Point pt;
 

	
 
@@ -798,30 +818,30 @@ static void SmallMapWindowProc(Window *w
 
					SetWindowDirty(w);
 
				} break;
 

	
 
				case 5:  // Show land contours
 
				case 6:  // Show vehicles
 
				case 7:  // Show industries
 
				case 8:  // Show transport routes
 
				case 9:  // Show vegetation
 
				case 10: // Show land owners
 
					RaiseWindowWidget(w, _smallmap_type + 5);
 
					_smallmap_type = e->we.click.widget - 5;
 
					LowerWindowWidget(w, _smallmap_type + 5);
 
				case SM_WIDGET_CONTOUR:    // Show land contours
 
				case SM_WIDGET_VEHICLES:   // Show vehicles
 
				case SM_WIDGET_INDUSTRIES: // Show industries
 
				case SM_WIDGET_ROUTES:     // Show transport routes
 
				case SM_WIDGET_VEGETATION: // Show vegetation
 
				case SM_WIDGET_OWNERS:     // Show land owners
 
					RaiseWindowWidget(w, _smallmap_type + SM_WIDGET_CONTOUR);
 
					_smallmap_type = e->we.click.widget - SM_WIDGET_CONTOUR;
 
					LowerWindowWidget(w, _smallmap_type + SM_WIDGET_CONTOUR);
 

	
 
					SetWindowDirty(w);
 
					SndPlayFx(SND_15_BEEP);
 
					break;
 

	
 
				case 11: // Center the smallmap again
 
				case SM_WIDGET_CENTERMAP: // Center the smallmap again
 
					SmallMapCenterOnCurrentPos(w);
 

	
 
					SetWindowDirty(w);
 
					SndPlayFx(SND_15_BEEP);
 
					break;
 

	
 
				case 12: // Toggle town names
 
					ToggleWidgetLoweredState(w, 12);
 
					_smallmap_show_towns = IsWindowWidgetLowered(w, 12);
 
				case SM_WIDGET_TOGGLETOWNNAME: // Toggle town names
 
					ToggleWidgetLoweredState(w, SM_WIDGET_TOGGLETOWNNAME);
 
					_smallmap_show_towns = IsWindowWidgetLowered(w, SM_WIDGET_TOGGLETOWNNAME);
 

	
 
					SetWindowDirty(w);
 
					SndPlayFx(SND_15_BEEP);
 
@@ -830,7 +850,7 @@ static void SmallMapWindowProc(Window *w
 
			break;
 

	
 
		case WE_RCLICK:
 
			if (e->we.click.widget == 4) {
 
			if (e->we.click.widget == SM_WIDGET_MAP) {
 
				if (_scrolling_viewport) return;
 
				_scrolling_viewport = true;
 
				_cursor.delta.x = 0;
 
@@ -876,8 +896,8 @@ static void SmallMapWindowProc(Window *w
 
				}
 
			}
 

	
 
			hx = (w->widget[4].right  - w->widget[4].left) / 2;
 
			hy = (w->widget[4].bottom - w->widget[4].top ) / 2;
 
			hx = (w->widget[SM_WIDGET_MAP].right  - w->widget[SM_WIDGET_MAP].left) / 2;
 
			hy = (w->widget[SM_WIDGET_MAP].bottom - w->widget[SM_WIDGET_MAP].top ) / 2;
 
			hvx = hx * -4 + hy * 8;
 
			hvy = hx *  4 + hy * 8;
 
			if (x < -hvx) {
0 comments (0 inline, 0 general)