summaryrefslogtreecommitdiff
path: root/train_cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'train_cmd.c')
-rw-r--r--train_cmd.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/train_cmd.c b/train_cmd.c
index d3533ac39..44becd117 100644
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -27,6 +27,7 @@
#include "train.h"
#include "newgrf_callbacks.h"
#include "newgrf_engine.h"
+#include "newgrf_sound.h"
#include "newgrf_text.h"
#include "direction.h"
#include "yapf/yapf.h"
@@ -2021,6 +2022,7 @@ static const int8 _vehicle_smoke_pos[8] = {
static void HandleLocomotiveSmokeCloud(const Vehicle* v)
{
const Vehicle* u;
+ bool sound = false;
if (v->vehstatus & VS_TRAIN_SLOWING || v->load_unload_time_rem != 0 || v->cur_speed < 2)
return;
@@ -2068,6 +2070,7 @@ static void HandleLocomotiveSmokeCloud(const Vehicle* v)
// steam smoke.
if (GB(v->tick_counter, 0, 4) == 0) {
CreateEffectVehicleRel(v, x, y, 10, EV_STEAM_SMOKE);
+ sound = true;
}
break;
@@ -2075,6 +2078,7 @@ static void HandleLocomotiveSmokeCloud(const Vehicle* v)
// diesel smoke
if (u->cur_speed <= 40 && CHANCE16(15, 128)) {
CreateEffectVehicleRel(v, 0, 0, 10, EV_DIESEL_SMOKE);
+ sound = true;
}
break;
@@ -2082,10 +2086,13 @@ static void HandleLocomotiveSmokeCloud(const Vehicle* v)
// blue spark
if (GB(v->tick_counter, 0, 2) == 0 && CHANCE16(1, 45)) {
CreateEffectVehicleRel(v, 0, 0, 10, EV_ELECTRIC_SPARK);
+ sound = true;
}
break;
}
} while ((v = v->next) != NULL);
+
+ if (sound) PlayVehicleSound(u, VSE_TRAIN_EFFECT);
}
static void TrainPlayLeaveStationSound(const Vehicle* v)
@@ -2098,6 +2105,8 @@ static void TrainPlayLeaveStationSound(const Vehicle* v)
EngineID engtype = v->engine_type;
+ if (PlayVehicleSound(v, VSE_START)) return;
+
switch (GetEngine(engtype)->railtype) {
case RAILTYPE_RAIL:
case RAILTYPE_ELECTRIC:
@@ -3262,8 +3271,10 @@ static void HandleBrokenTrain(Vehicle *v)
InvalidateWindow(WC_VEHICLE_VIEW, v->index);
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
- SndPlayVehicleFx((_opt.landscape != LT_CANDY) ?
- SND_10_TRAIN_BREAKDOWN : SND_3A_COMEDY_BREAKDOWN_2, v);
+ if (!PlayVehicleSound(v, VSE_BREAKDOWN)) {
+ SndPlayVehicleFx((_opt.landscape != LT_CANDY) ?
+ SND_10_TRAIN_BREAKDOWN : SND_3A_COMEDY_BREAKDOWN_2, v);
+ }
if (!(v->vehstatus & VS_HIDDEN)) {
Vehicle *u = CreateEffectVehicleRel(v, 4, 4, 5, EV_BREAKDOWN_SMOKE);