changeset 20281:16fcc6f376f3 draft

(svn r25226) -Fix/Change [FS#5538]: [NewGRF] Revise when vehicle running sound effects 04, 07 and 08 are played. In depot or tunnel, or when crashed or stopped: No sound. Braking: Effect 08 instead of 07.
author frosch <frosch@openttd.org>
date Mon, 06 May 2013 15:09:21 +0000
parents a28f23108c15
children 97631b9c5cd4
files src/vehicle.cpp
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -890,7 +890,16 @@
 					}
 				}
 
-				/* Check vehicle sounds */
+				/* Do not play any sound when crashed */
+				if (front->vehstatus & VS_CRASHED) continue;
+
+				/* Do not play any sound when in depot or tunnel */
+				if (v->vehstatus & VS_HIDDEN) continue;
+
+				/* Do not play any sound when stopped */
+				if ((front->vehstatus & VS_STOPPED) && (front->type != VEH_TRAIN || front->cur_speed == 0)) continue;
+
+				/* Check vehicle type specifics */
 				switch (v->type) {
 					case VEH_TRAIN:
 						if (Train::From(v)->IsWagon()) continue;
@@ -913,7 +922,11 @@
 				if (GB(v->motion_counter, 0, 8) < front->cur_speed) PlayVehicleSound(v, VSE_RUNNING);
 
 				/* Play an alternating running sound every 16 ticks */
-				if (GB(v->tick_counter, 0, 4) == 0) PlayVehicleSound(v, front->cur_speed > 0 ? VSE_RUNNING_16 : VSE_STOPPED_16);
+				if (GB(v->tick_counter, 0, 4) == 0) {
+					/* Play running sound when speed > 0 and not braking */
+					bool running = (front->cur_speed > 0) && !(front->vehstatus & (VS_STOPPED | VS_TRAIN_SLOWING));
+					PlayVehicleSound(v, running ? VSE_RUNNING_16 : VSE_STOPPED_16);
+				}
 
 				break;
 			}