src/train_cmd.cpp
branch0.6
changeset 10330 700e4a785535
parent 10327 2274772a4424
child 10351 4f1563682453
equal deleted inserted replaced
10328:721fe18a2176 10330:700e4a785535
   244 		if (!IsArticulatedPart(u)) {
   244 		if (!IsArticulatedPart(u)) {
   245 			/* Check powered wagon / visual effect callback */
   245 			/* Check powered wagon / visual effect callback */
   246 			if (HasBit(EngInfo(u->engine_type)->callbackmask, CBM_TRAIN_WAGON_POWER)) {
   246 			if (HasBit(EngInfo(u->engine_type)->callbackmask, CBM_TRAIN_WAGON_POWER)) {
   247 				uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u);
   247 				uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u);
   248 
   248 
   249 				if (callback != CALLBACK_FAILED) u->u.rail.cached_vis_effect = callback;
   249 				if (callback != CALLBACK_FAILED) u->u.rail.cached_vis_effect = GB(callback, 0, 8);
   250 			}
   250 			}
   251 
   251 
   252 			if (rvi_v->pow_wag_power != 0 && rvi_u->railveh_type == RAILVEH_WAGON &&
   252 			if (rvi_v->pow_wag_power != 0 && rvi_u->railveh_type == RAILVEH_WAGON &&
   253 				UsesWagonOverride(u) && !HasBit(u->u.rail.cached_vis_effect, 7)) {
   253 				UsesWagonOverride(u) && !HasBit(u->u.rail.cached_vis_effect, 7)) {
   254 				/* wagon is powered */
   254 				/* wagon is powered */
  1300 	if (v->type != VEH_TRAIN || !CheckOwnership(v->owner)) return CMD_ERROR;
  1300 	if (v->type != VEH_TRAIN || !CheckOwnership(v->owner)) return CMD_ERROR;
  1301 
  1301 
  1302 	/* Check if this train can be started/stopped. The callback will fail or
  1302 	/* Check if this train can be started/stopped. The callback will fail or
  1303 	 * return 0xFF if it can. */
  1303 	 * return 0xFF if it can. */
  1304 	uint16 callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v);
  1304 	uint16 callback = GetVehicleCallback(CBID_VEHICLE_START_STOP_CHECK, 0, 0, v->engine_type, v);
  1305 	if (callback != CALLBACK_FAILED && callback != 0xFF) {
  1305 	if (callback != CALLBACK_FAILED && GB(callback, 0, 8) != 0xFF) {
  1306 		StringID error = GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + callback);
  1306 		StringID error = GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + callback);
  1307 		return_cmd_error(error);
  1307 		return_cmd_error(error);
  1308 	}
  1308 	}
  1309 
  1309 
  1310 	if (v->vehstatus & VS_STOPPED && v->u.rail.cached_power == 0) return_cmd_error(STR_TRAIN_START_NO_CATENARY);
  1310 	if (v->vehstatus & VS_STOPPED && v->u.rail.cached_power == 0) return_cmd_error(STR_TRAIN_START_NO_CATENARY);