src/main_gui.cpp
branchgamebalance
changeset 9911 0b8b245a2391
parent 9910 0b2aebc8283e
child 9912 1ac8aac92385
--- a/src/main_gui.cpp	Wed Jun 13 11:17:30 2007 +0000
+++ b/src/main_gui.cpp	Wed Jun 13 11:45:14 2007 +0000
@@ -51,6 +51,7 @@
 
 static byte _terraform_size = 1;
 RailType _last_built_railtype;
+RoadType _last_built_roadtype;
 static int _scengen_town_size = 1; // depress medium-sized towns per default
 
 extern void GenerateIndustries();
@@ -171,12 +172,12 @@
 		case 2: ShowPatchesSelection(); return;
 		case 3: ShowNewGRFSettings(!_networking, true, true, &_grfconfig);   return;
 
-		case  5: _display_opt ^= DO_SHOW_TOWN_NAMES;    break;
-		case  6: _display_opt ^= DO_SHOW_STATION_NAMES; break;
-		case  7: _display_opt ^= DO_SHOW_SIGNS;         break;
-		case  8: _display_opt ^= DO_WAYPOINTS;          break;
-		case  9: _display_opt ^= DO_FULL_ANIMATION;     break;
-		case 10: _display_opt ^= DO_FULL_DETAIL;        break;
+		case  5: TOGGLEBIT(_display_opt, DO_SHOW_TOWN_NAMES);    break;
+		case  6: TOGGLEBIT(_display_opt, DO_SHOW_STATION_NAMES); break;
+		case  7: TOGGLEBIT(_display_opt, DO_SHOW_SIGNS);         break;
+		case  8: TOGGLEBIT(_display_opt, DO_WAYPOINTS);          break;
+		case  9: TOGGLEBIT(_display_opt, DO_FULL_ANIMATION);     break;
+		case 10: TOGGLEBIT(_display_opt, DO_FULL_DETAIL);        break;
 		case 11: ToggleTransparency(); break;
 		case 12: TOGGLEBIT(_transparent_opt, TO_SIGNS); break;
 	}
@@ -310,7 +311,8 @@
 
 static void MenuClickBuildRoad(int index)
 {
-	ShowBuildRoadToolbar();
+	_last_built_roadtype = (RoadType)index;
+	ShowBuildRoadToolbar(_last_built_roadtype);
 }
 
 static void MenuClickBuildWater(int index)
@@ -880,8 +882,8 @@
 
 	switch (how) {
 		case ZOOM_IN:
-			if (vp->zoom == 0) return false;
-			vp->zoom--;
+			if (vp->zoom == ZOOM_LVL_MIN) return false;
+			vp->zoom = (ZoomLevel)((byte)vp->zoom - 1);
 			vp->virtual_width >>= 1;
 			vp->virtual_height >>= 1;
 
@@ -889,8 +891,8 @@
 			WP(w,vp_d).scrollpos_y += vp->virtual_height >> 1;
 			break;
 		case ZOOM_OUT:
-			if (vp->zoom == 2) return false;
-			vp->zoom++;
+			if (vp->zoom == ZOOM_LVL_MAX) return false;
+			vp->zoom = (ZoomLevel)((byte)vp->zoom + 1);
 
 			WP(w,vp_d).scrollpos_x -= vp->virtual_width >> 1;
 			WP(w,vp_d).scrollpos_y -= vp->virtual_height >> 1;
@@ -930,12 +932,13 @@
 	const Player *p = GetPlayer(_local_player);
 	Window *w2;
 	w2 = PopupMainToolbMenu(w, 19, STR_1015_RAILROAD_CONSTRUCTION, RAILTYPE_END, ~p->avail_railtypes);
-	WP(w2,menu_d).sel_index = _last_built_railtype;
+	WP(w2, menu_d).sel_index = _last_built_railtype;
 }
 
 static void ToolbarBuildRoadClick(Window *w)
 {
-	PopupMainToolbMenu(w, 20, STR_180A_ROAD_CONSTRUCTION, 1, 0);
+	Window *w2 = PopupMainToolbMenu(w, 20, STR_180A_ROAD_CONSTRUCTION, 1, 0);
+	WP(w2, menu_d).sel_index = _last_built_roadtype;
 }
 
 static void ToolbarBuildWaterClick(Window *w)
@@ -974,12 +977,12 @@
 
 	w = PopupMainToolbMenu(w, 2, STR_02C3_GAME_OPTIONS, 13, 0);
 
-	if (_display_opt & DO_SHOW_TOWN_NAMES)    SETBIT(x,  5);
-	if (_display_opt & DO_SHOW_STATION_NAMES) SETBIT(x,  6);
-	if (_display_opt & DO_SHOW_SIGNS)         SETBIT(x,  7);
-	if (_display_opt & DO_WAYPOINTS)          SETBIT(x,  8);
-	if (_display_opt & DO_FULL_ANIMATION)     SETBIT(x,  9);
-	if (_display_opt & DO_FULL_DETAIL)        SETBIT(x, 10);
+	if (HASBIT(_display_opt, DO_SHOW_TOWN_NAMES))    SETBIT(x,  5);
+	if (HASBIT(_display_opt, DO_SHOW_STATION_NAMES)) SETBIT(x,  6);
+	if (HASBIT(_display_opt, DO_SHOW_SIGNS))         SETBIT(x,  7);
+	if (HASBIT(_display_opt, DO_WAYPOINTS))          SETBIT(x,  8);
+	if (HASBIT(_display_opt, DO_FULL_ANIMATION))     SETBIT(x,  9);
+	if (HASBIT(_display_opt, DO_FULL_DETAIL))        SETBIT(x, 10);
 	if (GB(_transparent_opt, 1, 7) != 0)      SETBIT(x, 11);
 	if (HASBIT(_transparent_opt, TO_SIGNS))   SETBIT(x, 12);
 	WP(w,menu_d).checked_items = x;
@@ -1049,7 +1052,7 @@
 	vp = w->viewport;
 
 	if (_game_mode != GM_MENU) {
-		if ((in && vp->zoom == 0) || (!in && vp->zoom == 2))
+		if ((in && vp->zoom == ZOOM_LVL_MIN) || (!in && vp->zoom == ZOOM_LVL_MAX))
 			return;
 
 		pt = GetTileZoomCenterWindow(in,w);
@@ -1128,7 +1131,7 @@
 
 static void PlaceProc_RockyArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y | GUI_PlaceProc_RockyArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_RockyArea);
 }
 
 static void PlaceProc_LightHouse(TileIndex tile)
@@ -1155,12 +1158,12 @@
 
 static void PlaceProc_DesertArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y | GUI_PlaceProc_DesertArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_DesertArea);
 }
 
 static void PlaceProc_WaterArea(TileIndex tile)
 {
-	VpStartPlaceSizing(tile, VPM_X_AND_Y | GUI_PlaceProc_WaterArea);
+	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_WaterArea);
 }
 
 static const Widget _scen_edit_land_gen_widgets[] = {
@@ -1374,12 +1377,12 @@
 		_place_proc(e->we.place.tile);
 		break;
 	case WE_PLACE_DRAG:
-		VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.userdata & 0xF);
+		VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method);
 		break;
 
 	case WE_PLACE_MOUSEUP:
 		if (e->we.place.pt.x != -1) {
-			if ((e->we.place.userdata & 0xF) == VPM_X_AND_Y) // dragged actions
+			if (e->we.place.select_method == VPM_X_AND_Y) // dragged actions
 				GUIPlaceProcDragXY(e);
 		}
 		break;
@@ -1873,7 +1876,7 @@
 		case WKC_SHIFT | WKC_F5: ToolbarZoomInClick(w); break;
 		case WKC_SHIFT | WKC_F6: ToolbarZoomOutClick(w); break;
 		case WKC_SHIFT | WKC_F7: ShowBuildRailToolbar(_last_built_railtype, -1); break;
-		case WKC_SHIFT | WKC_F8: ShowBuildRoadToolbar(); break;
+		case WKC_SHIFT | WKC_F8: ShowBuildRoadToolbar(_last_built_roadtype); break;
 		case WKC_SHIFT | WKC_F9: ShowBuildDocksToolbar(); break;
 		case WKC_SHIFT | WKC_F10:ShowBuildAirToolbar(); break;
 		case WKC_SHIFT | WKC_F11: ShowBuildTreesToolbar(); break;
@@ -2425,8 +2428,8 @@
 				_scrolling_viewport = false;
 			}
 
-			WP(w, vp_d).scrollpos_x += e->we.scroll.delta.x << vp->zoom;
-			WP(w, vp_d).scrollpos_y += e->we.scroll.delta.y << vp->zoom;
+			WP(w, vp_d).scrollpos_x += ScaleByZoom(e->we.scroll.delta.x, vp->zoom);
+			WP(w, vp_d).scrollpos_y += ScaleByZoom(e->we.scroll.delta.y, vp->zoom);
 		} break;
 
 		case WE_MOUSEWHEEL:
@@ -2460,7 +2463,7 @@
 	height = _screen.height;
 
 	w = AllocateWindow(0, 0, width, height, MainWindowWndProc, WC_MAIN_WINDOW, NULL);
-	AssignWindowViewport(w, 0, 0, width, height, TileXY(32, 32), 0);
+	AssignWindowViewport(w, 0, 0, width, height, TileXY(32, 32), ZOOM_LVL_VIEWPORT);
 
 	/* XXX: these are not done */
 	switch (_game_mode) {
@@ -2514,6 +2517,7 @@
 {
 	/* Clean old GUI values */
 	_last_built_railtype = RAILTYPE_RAIL;
+	_last_built_roadtype = ROADTYPE_ROAD;
 }