src/terraform_gui.cpp
branchgamebalance
changeset 9911 0b8b245a2391
parent 9910 0b2aebc8283e
child 9912 1ac8aac92385
equal deleted inserted replaced
9910:0b2aebc8283e 9911:0b8b245a2391
   102 bool GUIPlaceProcDragXY(const WindowEvent *e)
   102 bool GUIPlaceProcDragXY(const WindowEvent *e)
   103 {
   103 {
   104 	TileIndex start_tile = e->we.place.starttile;
   104 	TileIndex start_tile = e->we.place.starttile;
   105 	TileIndex end_tile = e->we.place.tile;
   105 	TileIndex end_tile = e->we.place.tile;
   106 
   106 
   107 	switch (e->we.place.userdata >> 4) {
   107 	switch (e->we.place.select_proc) {
   108 	case GUI_PlaceProc_DemolishArea >> 4:
   108 		case GUI_PlaceProc_DemolishArea:
   109 		DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
   109 			DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
   110 		break;
   110 			break;
   111 	case GUI_PlaceProc_LevelArea >> 4:
   111 		case GUI_PlaceProc_LevelArea:
   112 		DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_LEVEL_LAND | CMD_AUTO);
   112 			DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_LEVEL_LAND | CMD_AUTO);
   113 		break;
   113 			break;
   114 	case GUI_PlaceProc_RockyArea >> 4:
   114 		case GUI_PlaceProc_RockyArea:
   115 		GenerateRockyArea(end_tile, start_tile);
   115 			GenerateRockyArea(end_tile, start_tile);
   116 		break;
   116 			break;
   117 	case GUI_PlaceProc_DesertArea >> 4:
   117 		case GUI_PlaceProc_DesertArea:
   118 		GenerateDesertArea(end_tile, start_tile);
   118 			GenerateDesertArea(end_tile, start_tile);
   119 		break;
   119 			break;
   120 	case GUI_PlaceProc_WaterArea >> 4:
   120 		case GUI_PlaceProc_WaterArea:
   121 		DoCommandP(end_tile, start_tile, _ctrl_pressed, CcBuildCanal, CMD_BUILD_CANAL | CMD_AUTO | CMD_MSG(STR_CANT_BUILD_CANALS));
   121 			DoCommandP(end_tile, start_tile, _ctrl_pressed, CcBuildCanal, CMD_BUILD_CANAL | CMD_AUTO | CMD_MSG(STR_CANT_BUILD_CANALS));
   122 		break;
   122 			break;
   123 	default: return false;
   123 		default:
       
   124 			return false;
   124 	}
   125 	}
   125 
   126 
   126 	return true;
   127 	return true;
   127 }
   128 }
   128 
   129 
   138 	'O',
   139 	'O',
   139 };
   140 };
   140 
   141 
   141 void PlaceProc_DemolishArea(TileIndex tile)
   142 void PlaceProc_DemolishArea(TileIndex tile)
   142 {
   143 {
   143 	VpStartPlaceSizing(tile, VPM_X_AND_Y | GUI_PlaceProc_DemolishArea);
   144 	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_DemolishArea);
   144 }
   145 }
   145 
   146 
   146 static void PlaceProc_RaiseLand(TileIndex tile)
   147 static void PlaceProc_RaiseLand(TileIndex tile)
   147 {
   148 {
   148 	DoCommandP(
   149 	DoCommandP(
   159 	);
   160 	);
   160 }
   161 }
   161 
   162 
   162 void PlaceProc_LevelLand(TileIndex tile)
   163 void PlaceProc_LevelLand(TileIndex tile)
   163 {
   164 {
   164 	VpStartPlaceSizing(tile, VPM_X_AND_Y | GUI_PlaceProc_LevelArea);
   165 	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_LevelArea);
   165 }
   166 }
   166 
   167 
   167 static void TerraformClick_Lower(Window *w)
   168 static void TerraformClick_Lower(Window *w)
   168 {
   169 {
   169 	HandlePlacePushButton(w, 4, ANIMCURSOR_LOWERLAND, 2, PlaceProc_LowerLand);
   170 	HandlePlacePushButton(w, 4, ANIMCURSOR_LOWERLAND, 2, PlaceProc_LowerLand);
   237 	case WE_PLACE_OBJ:
   238 	case WE_PLACE_OBJ:
   238 		_place_proc(e->we.place.tile);
   239 		_place_proc(e->we.place.tile);
   239 		return;
   240 		return;
   240 
   241 
   241 	case WE_PLACE_DRAG:
   242 	case WE_PLACE_DRAG:
   242 		VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.userdata & 0xF);
   243 		VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method);
   243 		break;
   244 		break;
   244 
   245 
   245 	case WE_PLACE_MOUSEUP:
   246 	case WE_PLACE_MOUSEUP:
   246 		if (e->we.place.pt.x != -1 &&
   247 		if (e->we.place.pt.x != -1 && e->we.place.select_method == VPM_X_AND_Y) {
   247 				(e->we.place.userdata & 0xF) == VPM_X_AND_Y) { // dragged actions
       
   248 			GUIPlaceProcDragXY(e);
   248 			GUIPlaceProcDragXY(e);
   249 		}
   249 		}
   250 		break;
   250 		break;
   251 
   251 
   252 	case WE_ABORT_PLACE_OBJ:
   252 	case WE_ABORT_PLACE_OBJ:
   265 {   WWT_IMGBTN,   RESIZE_NONE,     7,  22,  43,  14,  35, SPR_IMG_TERRAFORM_UP,    STR_018F_RAISE_A_CORNER_OF_LAND},
   265 {   WWT_IMGBTN,   RESIZE_NONE,     7,  22,  43,  14,  35, SPR_IMG_TERRAFORM_UP,    STR_018F_RAISE_A_CORNER_OF_LAND},
   266 {   WWT_IMGBTN,   RESIZE_NONE,     7,  44,  65,  14,  35, SPR_IMG_LEVEL_LAND,      STR_LEVEL_LAND_TOOLTIP},
   266 {   WWT_IMGBTN,   RESIZE_NONE,     7,  44,  65,  14,  35, SPR_IMG_LEVEL_LAND,      STR_LEVEL_LAND_TOOLTIP},
   267 {   WWT_IMGBTN,   RESIZE_NONE,     7,  70,  91,  14,  35, SPR_IMG_DYNAMITE,        STR_018D_DEMOLISH_BUILDINGS_ETC},
   267 {   WWT_IMGBTN,   RESIZE_NONE,     7,  70,  91,  14,  35, SPR_IMG_DYNAMITE,        STR_018D_DEMOLISH_BUILDINGS_ETC},
   268 {   WWT_IMGBTN,   RESIZE_NONE,     7,  92, 113,  14,  35, SPR_IMG_BUY_LAND,        STR_0329_PURCHASE_LAND_FOR_FUTURE},
   268 {   WWT_IMGBTN,   RESIZE_NONE,     7,  92, 113,  14,  35, SPR_IMG_BUY_LAND,        STR_0329_PURCHASE_LAND_FOR_FUTURE},
   269 {   WWT_IMGBTN,   RESIZE_NONE,     7, 114, 135,  14,  35, SPR_IMG_PLANTTREES,      STR_0185_PLANT_TREES_PLACE_SIGNS},
   269 {   WWT_IMGBTN,   RESIZE_NONE,     7, 114, 135,  14,  35, SPR_IMG_PLANTTREES,      STR_0185_PLANT_TREES_PLACE_SIGNS},
   270 {   WWT_IMGBTN,   RESIZE_NONE,     7, 136, 157,  14,  35, SPR_IMG_PLACE_SIGN,      STR_0289_PLACE_SIGN},
   270 {   WWT_IMGBTN,   RESIZE_NONE,     7, 136, 157,  14,  35, SPR_IMG_SIGN,            STR_0289_PLACE_SIGN},
   271 
   271 
   272 {   WIDGETS_END},
   272 {   WIDGETS_END},
   273 };
   273 };
   274 
   274 
   275 static const WindowDesc _terraform_desc = {
   275 static const WindowDesc _terraform_desc = {