From 5544d3af3493763f3d9e4dbbb94d893130248886 Mon Sep 17 00:00:00 2001 From: Roger Andersen Date: Sun, 21 Jun 2020 19:47:16 +0200 Subject: [PATCH] feat(Replay): add .apples to show collected apples (#185) --- __tests__/rec.int.test.ts | 11 +++++++++++ src/rec/Replay.ts | 13 +++++++++++++ 2 files changed, 24 insertions(+) diff --git a/__tests__/rec.int.test.ts b/__tests__/rec.int.test.ts index 1eee08f..95cc58c 100644 --- a/__tests__/rec.int.test.ts +++ b/__tests__/rec.int.test.ts @@ -210,4 +210,15 @@ describe('Replay', () => { expect(replay.toBuffer()).toEqual(file); }, ); + + test.each([ + ['rec_valid_1.rec', 2], + ['rec_valid_2.rec', 4], + ['rec_valid_3.rec', 4], + ])('.apples counts correct number of apples: %s', async (fileName, apples) => { + const filePath = `__tests__/assets/replays/${fileName}`; + const file = await readFile(filePath); + const replay = Replay.from(file); + expect(replay.apples).toEqual(apples); + }); }); diff --git a/src/rec/Replay.ts b/src/rec/Replay.ts index c0d0c0c..da533a0 100644 --- a/src/rec/Replay.ts +++ b/src/rec/Replay.ts @@ -275,4 +275,17 @@ export default class Replay { time: Math.round(maxEventTime), }; } + + /** + * Returns the number of apples collected in the replay. + * + * @returns Number of apples + */ + get apples(): number { + const apples = this.rides.reduce((apples, ride) => { + apples += ride.events.filter((event) => event.type === 4).length; + return apples; + }, 0); + return apples; + } }