Add configurable manifest-driven race audio system
This commit is contained in:
@@ -29,6 +29,7 @@ function createHarness() {
|
||||
};
|
||||
let saveCount = 0;
|
||||
const overlayEvents = [];
|
||||
const audioEvents = [];
|
||||
const deps = {
|
||||
state,
|
||||
t: (key) => key,
|
||||
@@ -42,6 +43,7 @@ function createHarness() {
|
||||
buildLeaderboard: () => [],
|
||||
formatLap: (ms) => `${ms}ms`,
|
||||
announcePassing: () => {},
|
||||
triggerRaceAudio: (key) => audioEvents.push(key),
|
||||
saveState: () => { saveCount += 1; },
|
||||
lastOverlayLeaderKeyBySession: {},
|
||||
lastOverlayTop3BySession: {},
|
||||
@@ -52,7 +54,7 @@ function createHarness() {
|
||||
transponder,
|
||||
rtc_time: new Date(timestamp).toISOString(),
|
||||
}, deps, role);
|
||||
return { state, session, passing, overlayEvents, getSaveCount: () => saveCount };
|
||||
return { state, session, passing, overlayEvents, audioEvents, getSaveCount: () => saveCount };
|
||||
}
|
||||
|
||||
test("split decoder records intermediate time without changing main lap state", () => {
|
||||
@@ -93,6 +95,7 @@ test("pit entry and exit create one timed stop without adding laps", () => {
|
||||
assert.equal(result.pitStops[0].transponder, "123");
|
||||
assert.equal(result.pitStops[0].exitTransponder, "456");
|
||||
assert.equal(result.passings.length, 1);
|
||||
assert.deepEqual(harness.audioEvents, ["entering_pits", "leaving_pits"]);
|
||||
});
|
||||
|
||||
test("connect decoder opens one websocket per enabled role", () => {
|
||||
|
||||
Reference in New Issue
Block a user