# HG changeset patch # User rubidium # Date 2010-11-18 14:17:55 # Node ID 5d6ae9da514c9449e97b11f90e20e82274fef5f2 # Parent 1e4c47fd957750fd7c6b1b353f6d8a4a709cac3c (svn r21238) -Feature: [NewGRF] Support callback 0x10 for RVs and ships (Hirundo) diff --git a/src/newgrf_callbacks.h b/src/newgrf_callbacks.h --- a/src/newgrf_callbacks.h +++ b/src/newgrf_callbacks.h @@ -279,7 +279,7 @@ enum CallbackID { * Some callbacks are always used and don't have a mask. */ enum VehicleCallbackMask { - CBM_VEHICLE_VISUAL_EFFECT = 0, ///< Visual effects and wagon power (trains only) + CBM_VEHICLE_VISUAL_EFFECT = 0, ///< Visual effects and wagon power (trains, road vehicles and ships) CBM_VEHICLE_LENGTH = 1, ///< Vehicle length (trains and road vehicles) CBM_VEHICLE_LOAD_AMOUNT = 2, ///< Load amount CBM_VEHICLE_REFIT_CAPACITY = 3, ///< Cargo capacity after refit diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -188,6 +188,9 @@ void RoadVehUpdateCache(RoadVehicle *v) u->rcache.cached_veh_length = GetRoadVehLength(u); v->rcache.cached_total_length += u->rcache.cached_veh_length; + /* Update visual effect */ + v->UpdateVisualEffect(); + /* Invalidate the vehicle colour map */ u->colourmap = PAL_NONE; } @@ -1477,6 +1480,8 @@ static bool RoadVehController(RoadVehicl if (v->IsInDepot() && RoadVehLeaveDepot(v, true)) return true; + v->ShowVisualEffect(); + /* Check how far the vehicle needs to proceed */ int j = RoadVehAccelerate(v); diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -156,6 +156,8 @@ static void CheckIfShipNeedsService(Vehi void Ship::UpdateCache() { this->vcache.cached_max_speed = GetVehicleProperty(this, PROP_SHIP_SPEED, ShipVehInfo(this->engine_type)->max_speed); + + this->UpdateVisualEffect(); } Money Ship::GetRunningCost() const @@ -446,6 +448,8 @@ static void ShipController(Ship *v) CheckShipLeaveDepot(v); + v->ShowVisualEffect(); + if (!ShipAccelerate(v)) return; GetNewVehiclePosResult gp = GetNewVehiclePos(v);