src/vehicle.cpp
changeset 5668 36b39f4a9032
parent 5651 79496e6d8a56
child 5683 b027e5d5b4cd
equal deleted inserted replaced
5667:47454cf088f9 5668:36b39f4a9032
   794 	return (EngInfo(engine_type)->refit_cost * base_cost) >> 10;
   794 	return (EngInfo(engine_type)->refit_cost * base_cost) >> 10;
   795 }
   795 }
   796 
   796 
   797 static void DoDrawVehicle(const Vehicle *v)
   797 static void DoDrawVehicle(const Vehicle *v)
   798 {
   798 {
   799 	uint32 image = v->cur_image;
   799 	SpriteID image = v->cur_image;
       
   800 	SpriteID pal;
   800 
   801 
   801 	if (v->vehstatus & VS_SHADOW) {
   802 	if (v->vehstatus & VS_SHADOW) {
   802 		MAKE_TRANSPARENT(image);
   803 		SETBIT(image, PALETTE_MODIFIER_TRANSPARENT);
       
   804 		pal = PALETTE_TO_TRANSPARENT;
   803 	} else if (v->vehstatus & VS_DEFPAL) {
   805 	} else if (v->vehstatus & VS_DEFPAL) {
   804 		image |= (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
   806 		pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
   805 	}
   807 	} else {
   806 
   808 		pal = PAL_NONE;
   807 	AddSortableSpriteToDraw(image, v->x_pos + v->x_offs, v->y_pos + v->y_offs,
   809 	}
       
   810 
       
   811 	AddSortableSpriteToDraw(image, pal, v->x_pos + v->x_offs, v->y_pos + v->y_offs,
   808 		v->sprite_width, v->sprite_height, v->z_height, v->z_pos);
   812 		v->sprite_width, v->sprite_height, v->z_height, v->z_pos);
   809 }
   813 }
   810 
   814 
   811 void ViewportAddVehicles(DrawPixelInfo *dpi)
   815 void ViewportAddVehicles(DrawPixelInfo *dpi)
   812 {
   816 {
  2799 	}
  2803 	}
  2800 
  2804 
  2801 	return unit;
  2805 	return unit;
  2802 }
  2806 }
  2803 
  2807 
  2804 static PalSpriteID GetEngineColourMap(EngineID engine_type, PlayerID player, EngineID parent_engine_type, CargoID cargo_type)
  2808 static SpriteID GetEngineColourMap(EngineID engine_type, PlayerID player, EngineID parent_engine_type, CargoID cargo_type)
  2805 {
  2809 {
  2806 	SpriteID map;
  2810 	SpriteID map;
  2807 	const Player *p = GetPlayer(player);
  2811 	const Player *p = GetPlayer(player);
  2808 	LiveryScheme scheme = LS_DEFAULT;
  2812 	LiveryScheme scheme = LS_DEFAULT;
  2809 
  2813 
  2884 
  2888 
  2885 	map = HASBIT(EngInfo(engine_type)->misc_flags, EF_USES_2CC) ?
  2889 	map = HASBIT(EngInfo(engine_type)->misc_flags, EF_USES_2CC) ?
  2886 		(SPR_2CCMAP_BASE + p->livery[scheme].colour1 + p->livery[scheme].colour2 * 16) :
  2890 		(SPR_2CCMAP_BASE + p->livery[scheme].colour1 + p->livery[scheme].colour2 * 16) :
  2887 		(PALETTE_RECOLOR_START + p->livery[scheme].colour1);
  2891 		(PALETTE_RECOLOR_START + p->livery[scheme].colour1);
  2888 
  2892 
  2889 	return SPRITE_PALETTE(map << PALETTE_SPRITE_START);
  2893 	return map;
  2890 }
  2894 }
  2891 
  2895 
  2892 PalSpriteID GetEnginePalette(EngineID engine_type, PlayerID player)
  2896 SpriteID GetEnginePalette(EngineID engine_type, PlayerID player)
  2893 {
  2897 {
  2894 	return GetEngineColourMap(engine_type, player, INVALID_ENGINE, CT_INVALID);
  2898 	return GetEngineColourMap(engine_type, player, INVALID_ENGINE, CT_INVALID);
  2895 }
  2899 }
  2896 
  2900 
  2897 PalSpriteID GetVehiclePalette(const Vehicle *v)
  2901 SpriteID GetVehiclePalette(const Vehicle *v)
  2898 {
  2902 {
  2899 	if (v->type == VEH_Train) {
  2903 	if (v->type == VEH_Train) {
  2900 		return GetEngineColourMap(
  2904 		return GetEngineColourMap(
  2901 			(v->u.rail.first_engine != INVALID_ENGINE && (IsArticulatedPart(v) || UsesWagonOverride(v))) ?
  2905 			(v->u.rail.first_engine != INVALID_ENGINE && (IsArticulatedPart(v) || UsesWagonOverride(v))) ?
  2902 				v->u.rail.first_engine : v->engine_type,
  2906 				v->u.rail.first_engine : v->engine_type,