train_gui.c
changeset 4709 eff35edfb653
parent 4702 5179f9adc5b3
child 4712 273ec3b182bf
equal deleted inserted replaced
4708:5129e3add448 4709:eff35edfb653
   204 static void NewRailVehicleWndProc(Window *w, WindowEvent *e)
   204 static void NewRailVehicleWndProc(Window *w, WindowEvent *e)
   205 {
   205 {
   206 	switch (e->event) {
   206 	switch (e->event) {
   207 	case WE_PAINT:
   207 	case WE_PAINT:
   208 
   208 
   209 		if (w->window_number == 0) SETBIT(w->disabled_state, 5);
   209 		SetWindowWidgetDisabledState(w, 5, w->window_number == 0);
   210 
   210 
   211 		{
   211 		{
   212 			int count = 0;
   212 			int count = 0;
   213 			RailType railtype = WP(w,buildtrain_d).railtype;
   213 			RailType railtype = WP(w,buildtrain_d).railtype;
   214 			EngineID i;
   214 			EngineID i;
   422 {
   422 {
   423 	switch (e->event) {
   423 	switch (e->event) {
   424 	case WE_PAINT: {
   424 	case WE_PAINT: {
   425 		const Vehicle *v, *u;
   425 		const Vehicle *v, *u;
   426 		StringID str;
   426 		StringID str;
       
   427 		bool is_localplayer;
   427 
   428 
   428 		v = GetVehicle(w->window_number);
   429 		v = GetVehicle(w->window_number);
   429 
   430 
   430 		if (v->owner != _local_player) {
   431 		is_localplayer = v->owner == _local_player;
   431 			w->disabled_state = 0x3380;
   432 		SetWindowWidgetDisabledState(w,  7, !is_localplayer);
   432 		} else {
   433 		SetWindowWidgetDisabledState(w,  8, !is_localplayer);
   433 			w->disabled_state = 0;
   434 		SetWindowWidgetDisabledState(w,  9, !is_localplayer);
   434 
   435 		SetWindowWidgetDisabledState(w, 12, !is_localplayer);
   435 			SETBIT(w->disabled_state, 12);
   436 		SetWindowWidgetDisabledState(w, 13, !is_localplayer);
   436 
   437 
       
   438 		if (is_localplayer) {
   437 			/* See if any vehicle can be refitted */
   439 			/* See if any vehicle can be refitted */
   438 			for (u = v; u != NULL; u = u->next) {
   440 			for (u = v; u != NULL; u = u->next) {
   439 				if (EngInfo(u->engine_type)->refit_mask != 0 ||
   441 				if (EngInfo(u->engine_type)->refit_mask != 0 ||
   440 						(!(RailVehInfo(v->engine_type)->flags & RVI_WAGON) && v->cargo_cap != 0)) {
   442 						(!(RailVehInfo(v->engine_type)->flags & RVI_WAGON) && v->cargo_cap != 0)) {
   441 					CLRBIT(w->disabled_state, 12);
   443 					EnableWindowWidget(w, 12);
   442 					/* We have a refittable carriage, bail out */
   444 					/* We have a refittable carriage, bail out */
   443 					break;
   445 					break;
   444 				}
   446 				}
   445 			}
   447 			}
   446 		}
   448 		}
   680 		} while ((u = GetNextVehicle(u)) != NULL);
   682 		} while ((u = GetNextVehicle(u)) != NULL);
   681 	}
   683 	}
   682 
   684 
   683 	SetVScrollCount(w, num);
   685 	SetVScrollCount(w, num);
   684 
   686 
   685 	w->disabled_state = 1 << (det_tab + 9);
   687 	DisableWindowWidget(w, det_tab + 9);
   686 	if (v->owner != _local_player) w->disabled_state |= (1 << 2);
   688 	SetWindowWidgetDisabledState(w, 2, v->owner != _local_player);
   687 
   689 
   688 	// disable service-scroller when interval is set to disabled
   690 	/* disable service-scroller when interval is set to disabled */
   689 	if (!_patches.servint_trains) w->disabled_state |= (1 << 6) | (1 << 7);
   691 	SetWindowWidgetDisabledState(w, 6, !_patches.servint_trains);
       
   692 	SetWindowWidgetDisabledState(w, 7, !_patches.servint_trains);
   690 
   693 
   691 	SetDParam(0, v->string_id);
   694 	SetDParam(0, v->string_id);
   692 	SetDParam(1, v->unitnumber);
   695 	SetDParam(1, v->unitnumber);
   693 	DrawWindowWidgets(w);
   696 	DrawWindowWidgets(w);
   694 
   697 
   799 		/* details buttons*/
   802 		/* details buttons*/
   800 		case 9:  // Cargo
   803 		case 9:  // Cargo
   801 		case 10: // Information
   804 		case 10: // Information
   802 		case 11: // Capacities
   805 		case 11: // Capacities
   803 		case 12: // Total cargo
   806 		case 12: // Total cargo
   804 			CLRBIT(w->disabled_state, 9);
   807 			EnableWindowWidget(w,  9);
   805 			CLRBIT(w->disabled_state, 10);
   808 			EnableWindowWidget(w, 10);
   806 			CLRBIT(w->disabled_state, 11);
   809 			EnableWindowWidget(w, 11);
   807 			CLRBIT(w->disabled_state, 12);
   810 			EnableWindowWidget(w, 12);
   808 			SETBIT(w->disabled_state, e->we.click.widget);
   811 			EnableWindowWidget(w, e->we.click.widget);
   809 			WP(w,traindetails_d).tab = e->we.click.widget - 9;
   812 			WP(w,traindetails_d).tab = e->we.click.widget - 9;
   810 			SetWindowDirty(w);
   813 			SetWindowDirty(w);
   811 			break;
   814 			break;
   812 		}
   815 		}
   813 	} break;
   816 	} break;