train_gui.c
changeset 4634 897461a3e9ca
parent 4633 fae5d85ef53d
child 4635 b9fb2f19eb64
equal deleted inserted replaced
4633:fae5d85ef53d 4634:897461a3e9ca
   257 			}
   257 			}
   258 		}
   258 		}
   259 	break;
   259 	break;
   260 
   260 
   261 	case WE_CLICK: {
   261 	case WE_CLICK: {
   262 		switch (e->click.widget) {
   262 		switch (e->we.click.widget) {
   263 		case 2: {
   263 		case 2: {
   264 			uint i = (e->click.pt.y - 14) / 14;
   264 			uint i = (e->we.click.pt.y - 14) / 14;
   265 			if (i < w->vscroll.cap) {
   265 			if (i < w->vscroll.cap) {
   266 				WP(w,buildtrain_d).sel_index = i + w->vscroll.pos;
   266 				WP(w,buildtrain_d).sel_index = i + w->vscroll.pos;
   267 				SetWindowDirty(w);
   267 				SetWindowDirty(w);
   268 			}
   268 			}
   269 		} break;
   269 		} break;
   282 		} break;
   282 		} break;
   283 		}
   283 		}
   284 	} break;
   284 	} break;
   285 
   285 
   286 	case WE_ON_EDIT_TEXT: {
   286 	case WE_ON_EDIT_TEXT: {
   287 		if (e->edittext.str[0] != '\0') {
   287 		if (e->we.edittext.str[0] != '\0') {
   288 			_cmd_text = e->edittext.str;
   288 			_cmd_text = e->we.edittext.str;
   289 			DoCommandP(0, WP(w,buildtrain_d).rename_engine, 0, NULL,
   289 			DoCommandP(0, WP(w,buildtrain_d).rename_engine, 0, NULL,
   290 				CMD_RENAME_ENGINE | CMD_MSG(STR_886B_CAN_T_RENAME_TRAIN_VEHICLE));
   290 				CMD_RENAME_ENGINE | CMD_MSG(STR_886B_CAN_T_RENAME_TRAIN_VEHICLE));
   291 		}
   291 		}
   292 	} break;
   292 	} break;
   293 
   293 
   294 	case WE_RESIZE: {
   294 	case WE_RESIZE: {
   295 		if (e->sizing.diff.y == 0)
   295 		if (e->we.sizing.diff.y == 0)
   296 			break;
   296 			break;
   297 
   297 
   298 		w->vscroll.cap += e->sizing.diff.y / 14;
   298 		w->vscroll.cap += e->we.sizing.diff.y / 14;
   299 		w->widget[2].data = (w->vscroll.cap << 8) + 1;
   299 		w->widget[2].data = (w->vscroll.cap << 8) + 1;
   300 	} break;
   300 	} break;
   301 	}
   301 	}
   302 }
   302 }
   303 
   303 
   651 	case WE_PAINT:
   651 	case WE_PAINT:
   652 		DrawTrainDepotWindow(w);
   652 		DrawTrainDepotWindow(w);
   653 		break;
   653 		break;
   654 
   654 
   655 	case WE_CLICK: {
   655 	case WE_CLICK: {
   656 		switch (e->click.widget) {
   656 		switch (e->we.click.widget) {
   657 		case 8:
   657 		case 8:
   658 			ResetObjectToPlace();
   658 			ResetObjectToPlace();
   659 			ShowBuildTrainWindow(w->window_number);
   659 			ShowBuildTrainWindow(w->window_number);
   660 			break;
   660 			break;
   661 
   661 
   662 			case 10: ScrollMainWindowToTile(w->window_number); break;
   662 			case 10: ScrollMainWindowToTile(w->window_number); break;
   663 
   663 
   664 		case 6:
   664 		case 6:
   665 			TrainDepotClickTrain(w, e->click.pt.x, e->click.pt.y);
   665 			TrainDepotClickTrain(w, e->we.click.pt.x, e->we.click.pt.y);
   666 			break;
   666 			break;
   667 		case 9: /* clone button */
   667 		case 9: /* clone button */
   668 			InvalidateWidget(w, 9);
   668 			InvalidateWidget(w, 9);
   669 			TOGGLEBIT(w->click_state, 9);
   669 			TOGGLEBIT(w->click_state, 9);
   670 
   670 
   703 	case WE_DESTROY:
   703 	case WE_DESTROY:
   704 		DeleteWindowById(WC_BUILD_VEHICLE, w->window_number);
   704 		DeleteWindowById(WC_BUILD_VEHICLE, w->window_number);
   705 		break;
   705 		break;
   706 
   706 
   707 	case WE_DRAGDROP: {
   707 	case WE_DRAGDROP: {
   708 		switch (e->click.widget) {
   708 		switch (e->we.click.widget) {
   709 		case 4: case 5: {
   709 		case 4: case 5: {
   710 			Vehicle *v;
   710 			Vehicle *v;
   711 			int sell_cmd;
   711 			int sell_cmd;
   712 
   712 
   713 			/* sell vehicle */
   713 			/* sell vehicle */
   714 			if (w->disabled_state & (1 << e->click.widget))
   714 			if (w->disabled_state & (1 << e->we.click.widget))
   715 				return;
   715 				return;
   716 
   716 
   717 			if (WP(w,traindepot_d).sel == INVALID_VEHICLE)
   717 			if (WP(w,traindepot_d).sel == INVALID_VEHICLE)
   718 				return;
   718 				return;
   719 
   719 
   720 			v = GetVehicle(WP(w,traindepot_d).sel);
   720 			v = GetVehicle(WP(w,traindepot_d).sel);
   721 
   721 
   722 			WP(w,traindepot_d).sel = INVALID_VEHICLE;
   722 			WP(w,traindepot_d).sel = INVALID_VEHICLE;
   723 			SetWindowDirty(w);
   723 			SetWindowDirty(w);
   724 
   724 
   725 			HandleButtonClick(w, e->click.widget);
   725 			HandleButtonClick(w, e->we.click.widget);
   726 
   726 
   727 			sell_cmd = (e->click.widget == 5 || _ctrl_pressed) ? 1 : 0;
   727 			sell_cmd = (e->we.click.widget == 5 || _ctrl_pressed) ? 1 : 0;
   728 
   728 
   729 			if (!IsFrontEngine(v)) {
   729 			if (!IsFrontEngine(v)) {
   730 				DoCommandP(v->tile, v->index, sell_cmd, NULL, CMD_SELL_RAIL_WAGON | CMD_MSG(STR_8839_CAN_T_SELL_RAILROAD_VEHICLE));
   730 				DoCommandP(v->tile, v->index, sell_cmd, NULL, CMD_SELL_RAIL_WAGON | CMD_MSG(STR_8839_CAN_T_SELL_RAILROAD_VEHICLE));
   731 			} else {
   731 			} else {
   732 				_backup_orders_tile = v->tile;
   732 				_backup_orders_tile = v->tile;
   741 				VehicleID sel = WP(w,traindepot_d).sel;
   741 				VehicleID sel = WP(w,traindepot_d).sel;
   742 
   742 
   743 				WP(w,traindepot_d).sel = INVALID_VEHICLE;
   743 				WP(w,traindepot_d).sel = INVALID_VEHICLE;
   744 				SetWindowDirty(w);
   744 				SetWindowDirty(w);
   745 
   745 
   746 				if (GetVehicleFromTrainDepotWndPt(w, e->dragdrop.pt.x, e->dragdrop.pt.y, &gdvp) == 0 &&
   746 				if (GetVehicleFromTrainDepotWndPt(w, e->we.dragdrop.pt.x, e->we.dragdrop.pt.y, &gdvp) == 0 &&
   747 						sel != INVALID_VEHICLE) {
   747 						sel != INVALID_VEHICLE) {
   748 					if (gdvp.wagon != NULL && gdvp.wagon->index == sel && _ctrl_pressed) {
   748 					if (gdvp.wagon != NULL && gdvp.wagon->index == sel && _ctrl_pressed) {
   749 						DoCommandP(GetVehicle(sel)->tile, GetVehicle(sel)->index, true, NULL, CMD_REVERSE_TRAIN_DIRECTION | CMD_MSG(STR_9033_CAN_T_MAKE_VEHICLE_TURN));
   749 						DoCommandP(GetVehicle(sel)->tile, GetVehicle(sel)->index, true, NULL, CMD_REVERSE_TRAIN_DIRECTION | CMD_MSG(STR_9033_CAN_T_MAKE_VEHICLE_TURN));
   750 					} else if (gdvp.wagon == NULL || gdvp.wagon->index != sel) {
   750 					} else if (gdvp.wagon == NULL || gdvp.wagon->index != sel) {
   751 						TrainDepotMoveVehicle(gdvp.wagon, sel, gdvp.head);
   751 						TrainDepotMoveVehicle(gdvp.wagon, sel, gdvp.head);
   761 			break;
   761 			break;
   762 		}
   762 		}
   763 		} break;
   763 		} break;
   764 	case WE_RESIZE: {
   764 	case WE_RESIZE: {
   765 		/* Update the scroll + matrix */
   765 		/* Update the scroll + matrix */
   766 		w->vscroll.cap += e->sizing.diff.y / 14;
   766 		w->vscroll.cap += e->we.sizing.diff.y / 14;
   767 		w->hscroll.cap += e->sizing.diff.x;
   767 		w->hscroll.cap += e->we.sizing.diff.x;
   768 		w->widget[6].data = (w->vscroll.cap << 8) + 1;
   768 		w->widget[6].data = (w->vscroll.cap << 8) + 1;
   769 	} break;
   769 	} break;
   770 	}
   770 	}
   771 }
   771 }
   772 
   772 
   842 			}
   842 			}
   843 		}
   843 		}
   844 	}	break;
   844 	}	break;
   845 
   845 
   846 	case WE_CLICK:
   846 	case WE_CLICK:
   847 		switch (e->click.widget) {
   847 		switch (e->we.click.widget) {
   848 		case 2: { /* listbox */
   848 		case 2: { /* listbox */
   849 			int y = e->click.pt.y - 25;
   849 			int y = e->we.click.pt.y - 25;
   850 			if (y >= 0) {
   850 			if (y >= 0) {
   851 				WP(w,refit_d).sel = y / 10;
   851 				WP(w,refit_d).sel = y / 10;
   852 				SetWindowDirty(w);
   852 				SetWindowDirty(w);
   853 			}
   853 			}
   854 		} break;
   854 		} break;
  1010 		DrawStringCenteredTruncated(w->widget[5].left + 8, w->widget[5].right, w->widget[5].top + 1, str, 0);
  1010 		DrawStringCenteredTruncated(w->widget[5].left + 8, w->widget[5].right, w->widget[5].top + 1, str, 0);
  1011 		DrawWindowViewport(w);
  1011 		DrawWindowViewport(w);
  1012 	}	break;
  1012 	}	break;
  1013 
  1013 
  1014 	case WE_CLICK: {
  1014 	case WE_CLICK: {
  1015 		int wid = e->click.widget;
  1015 		int wid = e->we.click.widget;
  1016 		Vehicle *v = GetVehicle(w->window_number);
  1016 		Vehicle *v = GetVehicle(w->window_number);
  1017 
  1017 
  1018 		switch (wid) {
  1018 		switch (wid) {
  1019 		case 5: /* start/stop train */
  1019 		case 5: /* start/stop train */
  1020 			DoCommandP(v->tile, v->index, 0, NULL, CMD_START_STOP_TRAIN | CMD_MSG(STR_883B_CAN_T_STOP_START_TRAIN));
  1020 			DoCommandP(v->tile, v->index, 0, NULL, CMD_START_STOP_TRAIN | CMD_MSG(STR_883B_CAN_T_STOP_START_TRAIN));
  1046 			break;
  1046 			break;
  1047 		}
  1047 		}
  1048 	} break;
  1048 	} break;
  1049 
  1049 
  1050 	case WE_RESIZE:
  1050 	case WE_RESIZE:
  1051 		w->viewport->width  += e->sizing.diff.x;
  1051 		w->viewport->width          += e->we.sizing.diff.x;
  1052 		w->viewport->height += e->sizing.diff.y;
  1052 		w->viewport->height         += e->we.sizing.diff.y;
  1053 		w->viewport->virtual_width  += e->sizing.diff.x;
  1053 		w->viewport->virtual_width  += e->we.sizing.diff.x;
  1054 		w->viewport->virtual_height += e->sizing.diff.y;
  1054 		w->viewport->virtual_height += e->we.sizing.diff.y;
  1055 		break;
  1055 		break;
  1056 
  1056 
  1057 	case WE_DESTROY:
  1057 	case WE_DESTROY:
  1058 		DeleteWindowById(WC_VEHICLE_REFIT, w->window_number);
  1058 		DeleteWindowById(WC_VEHICLE_REFIT, w->window_number);
  1059 		DeleteWindowById(WC_VEHICLE_ORDERS, w->window_number);
  1059 		DeleteWindowById(WC_VEHICLE_ORDERS, w->window_number);
  1267 		DrawTrainDetailsWindow(w);
  1267 		DrawTrainDetailsWindow(w);
  1268 		break;
  1268 		break;
  1269 	case WE_CLICK: {
  1269 	case WE_CLICK: {
  1270 		int mod;
  1270 		int mod;
  1271 		const Vehicle *v;
  1271 		const Vehicle *v;
  1272 		switch (e->click.widget) {
  1272 		switch (e->we.click.widget) {
  1273 		case 2: /* name train */
  1273 		case 2: /* name train */
  1274 			v = GetVehicle(w->window_number);
  1274 			v = GetVehicle(w->window_number);
  1275 			SetDParam(0, v->unitnumber);
  1275 			SetDParam(0, v->unitnumber);
  1276 			ShowQueryString(v->string_id, STR_8865_NAME_TRAIN, 31, 150, w->window_class, w->window_number, CS_ALPHANUMERAL);
  1276 			ShowQueryString(v->string_id, STR_8865_NAME_TRAIN, 31, 150, w->window_class, w->window_number, CS_ALPHANUMERAL);
  1277 			break;
  1277 			break;
  1296 		case 12: // Total cargo
  1296 		case 12: // Total cargo
  1297 			CLRBIT(w->disabled_state, 9);
  1297 			CLRBIT(w->disabled_state, 9);
  1298 			CLRBIT(w->disabled_state, 10);
  1298 			CLRBIT(w->disabled_state, 10);
  1299 			CLRBIT(w->disabled_state, 11);
  1299 			CLRBIT(w->disabled_state, 11);
  1300 			CLRBIT(w->disabled_state, 12);
  1300 			CLRBIT(w->disabled_state, 12);
  1301 			SETBIT(w->disabled_state, e->click.widget);
  1301 			SETBIT(w->disabled_state, e->we.click.widget);
  1302 			WP(w,traindetails_d).tab = e->click.widget - 9;
  1302 			WP(w,traindetails_d).tab = e->we.click.widget - 9;
  1303 			SetWindowDirty(w);
  1303 			SetWindowDirty(w);
  1304 			break;
  1304 			break;
  1305 		}
  1305 		}
  1306 	} break;
  1306 	} break;
  1307 
  1307 
  1308 	case WE_ON_EDIT_TEXT:
  1308 	case WE_ON_EDIT_TEXT:
  1309 		if (e->edittext.str[0] != '\0') {
  1309 		if (e->we.edittext.str[0] != '\0') {
  1310 			_cmd_text = e->edittext.str;
  1310 			_cmd_text = e->we.edittext.str;
  1311 			DoCommandP(0, w->window_number, 0, NULL,
  1311 			DoCommandP(0, w->window_number, 0, NULL,
  1312 				CMD_NAME_VEHICLE | CMD_MSG(STR_8866_CAN_T_NAME_TRAIN));
  1312 				CMD_NAME_VEHICLE | CMD_MSG(STR_8866_CAN_T_NAME_TRAIN));
  1313 		}
  1313 		}
  1314 		break;
  1314 		break;
  1315 
  1315 
  1316 	case WE_RESIZE:
  1316 	case WE_RESIZE:
  1317 		if (e->sizing.diff.y == 0) break;
  1317 		if (e->we.sizing.diff.y == 0) break;
  1318 
  1318 
  1319 		w->vscroll.cap += e->sizing.diff.y / 14;
  1319 		w->vscroll.cap += e->we.sizing.diff.y / 14;
  1320 		w->widget[4].data = (w->vscroll.cap << 8) + 1;
  1320 		w->widget[4].data = (w->vscroll.cap << 8) + 1;
  1321 		break;
  1321 		break;
  1322 	}
  1322 	}
  1323 }
  1323 }
  1324 
  1324