mirror of
https://github.com/halpz/re3.git
synced 2025-06-30 04:36:18 +00:00
ProcessTrainAnnouncements
This commit is contained in:
@ -13,6 +13,7 @@
|
||||
#include "DMAudio.h"
|
||||
#include "HandlingMgr.h"
|
||||
#include "Train.h"
|
||||
#include "AudioScriptObject.h"
|
||||
|
||||
static CTrainNode* pTrackNodes;
|
||||
static int16 NumTrackNodes;
|
||||
@ -35,6 +36,8 @@ static float EngineTrackSpeed_S[4];
|
||||
CVector CTrain::aStationCoors[3];
|
||||
CVector CTrain::aStationCoors_S[4];
|
||||
|
||||
static bool bTrainArrivalAnnounced[3] = {false, false, false};
|
||||
|
||||
CTrain::CTrain(int32 id, uint8 CreatedBy)
|
||||
: CVehicle(CreatedBy)
|
||||
{
|
||||
@ -618,10 +621,48 @@ CTrain::ReadAndInterpretTrackFile(Const char *filename, CTrainNode **nodes, int1
|
||||
interpLines[j].time = *totalDuration;
|
||||
}
|
||||
|
||||
void
|
||||
PlayAnnouncement(uint8 sound, uint8 station)
|
||||
{
|
||||
// this was gone in a PC version but inlined on PS2
|
||||
cAudioScriptObject *obj = new cAudioScriptObject;
|
||||
obj->AudioId = sound;
|
||||
obj->Posn = CTrain::aStationCoors[station];
|
||||
obj->AudioEntity = AEHANDLE_NONE;
|
||||
DMAudio.CreateOneShotScriptObject(obj);
|
||||
}
|
||||
|
||||
void
|
||||
ProcessTrainAnnouncements(void)
|
||||
{
|
||||
// TODO but unused
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 3; j++) {
|
||||
if (!bTrainArrivalAnnounced[i]) {
|
||||
float preDist = StationDist[i] - 100.0f;
|
||||
if (preDist < 0.0f)
|
||||
preDist += TotalLengthOfTrack;
|
||||
if (EngineTrackPosition[j] > preDist && EngineTrackPosition[j] < StationDist[i]) {
|
||||
bTrainArrivalAnnounced[i] = true;
|
||||
PlayAnnouncement(SCRIPT_SOUND_TRAIN_ANNOUNCEMENT_1, i);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
float postDist = StationDist[i] + 10.0f;
|
||||
#ifdef FIX_BUGS
|
||||
if (postDist > TotalLengthOfTrack)
|
||||
postDist -= TotalLengthOfTrack;
|
||||
#else
|
||||
if (postDist < 0.0f) // does this even make sense here?
|
||||
postDist += TotalLengthOfTrack;
|
||||
#endif
|
||||
if (EngineTrackPosition[j] > StationDist[i] && EngineTrackPosition[j] < postDist) {
|
||||
bTrainArrivalAnnounced[i] = false;
|
||||
PlayAnnouncement(SCRIPT_SOUND_TRAIN_ANNOUNCEMENT_2, i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
Reference in New Issue
Block a user