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 { |
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, |