src/train_cmd.cpp
changeset 5919 2b58160d667d
parent 5902 906fea1535ab
child 5984 fbef81292ff9
equal deleted inserted replaced
5918:602e158900a2 5919:2b58160d667d
   477 
   477 
   478 	if (v->cargo_count >= v->cargo_cap / 2) base += _wagon_full_adder[img];
   478 	if (v->cargo_count >= v->cargo_cap / 2) base += _wagon_full_adder[img];
   479 	return base;
   479 	return base;
   480 }
   480 }
   481 
   481 
   482 void DrawTrainEngine(int x, int y, EngineID engine, uint32 image_ormod)
   482 void DrawTrainEngine(int x, int y, EngineID engine, SpriteID pal)
   483 {
   483 {
   484 	const RailVehicleInfo *rvi = RailVehInfo(engine);
   484 	const RailVehicleInfo *rvi = RailVehInfo(engine);
   485 
   485 
   486 	int img = rvi->image_index;
   486 	int img = rvi->image_index;
   487 	uint32 image = 0;
   487 	SpriteID image = 0;
   488 
   488 
   489 	if (is_custom_sprite(img)) {
   489 	if (is_custom_sprite(img)) {
   490 		image = GetCustomVehicleIcon(engine, DIR_W);
   490 		image = GetCustomVehicleIcon(engine, DIR_W);
   491 		if (image == 0) {
   491 		if (image == 0) {
   492 			img = orig_rail_vehicle_info[engine].image_index;
   492 			img = orig_rail_vehicle_info[engine].image_index;
   497 	if (image == 0) {
   497 	if (image == 0) {
   498 		image = (6 & _engine_sprite_and[img]) + _engine_sprite_base[img];
   498 		image = (6 & _engine_sprite_and[img]) + _engine_sprite_base[img];
   499 	}
   499 	}
   500 
   500 
   501 	if (rvi->flags & RVI_MULTIHEAD) {
   501 	if (rvi->flags & RVI_MULTIHEAD) {
   502 		DrawSprite(image | image_ormod, x - 14, y);
   502 		DrawSprite(image, pal, x - 14, y);
   503 		x += 15;
   503 		x += 15;
   504 		image = 0;
   504 		image = 0;
   505 		if (is_custom_sprite(img)) {
   505 		if (is_custom_sprite(img)) {
   506 			image = GetCustomVehicleIcon(engine, DIR_E);
   506 			image = GetCustomVehicleIcon(engine, DIR_E);
   507 			if (image == 0) img = orig_rail_vehicle_info[engine].image_index;
   507 			if (image == 0) img = orig_rail_vehicle_info[engine].image_index;
   510 			image =
   510 			image =
   511 				((6 + _engine_sprite_add[img + 1]) & _engine_sprite_and[img + 1]) +
   511 				((6 + _engine_sprite_add[img + 1]) & _engine_sprite_and[img + 1]) +
   512 				_engine_sprite_base[img + 1];
   512 				_engine_sprite_base[img + 1];
   513 		}
   513 		}
   514 	}
   514 	}
   515 	DrawSprite(image | image_ormod, x, y);
   515 	DrawSprite(image, pal, x, y);
   516 }
   516 }
   517 
   517 
   518 uint CountArticulatedParts(EngineID engine_type)
   518 uint CountArticulatedParts(EngineID engine_type)
   519 {
   519 {
   520 	uint16 callback;
   520 	uint16 callback;
  3043 					gp.x = v->x_pos;
  3043 					gp.x = v->x_pos;
  3044 					gp.y = v->y_pos;
  3044 					gp.y = v->y_pos;
  3045 				} else {
  3045 				} else {
  3046 					/* is not inside depot */
  3046 					/* is not inside depot */
  3047 
  3047 
  3048 					if (!TrainCheckIfLineEnds(v)) return;
  3048 					if (IsFrontEngine(v) && !TrainCheckIfLineEnds(v)) return;
  3049 
  3049 
  3050 					r = VehicleEnterTile(v, gp.new_tile, gp.x, gp.y);
  3050 					r = VehicleEnterTile(v, gp.new_tile, gp.x, gp.y);
  3051 					if (r & 0x8) {
  3051 					if (r & 0x8) {
  3052 						//debug("%x & 0x8", r);
  3052 						//debug("%x & 0x8", r);
  3053 						goto invalid_rail;
  3053 						goto invalid_rail;