From 387ee86c0f3efa0019c6219c4d46719f00fe1481 Mon Sep 17 00:00:00 2001 From: Zamitto <167933696+zamitto@users.noreply.github.com> Date: Sun, 6 Oct 2024 11:18:14 -0300 Subject: [PATCH] feat: creamapi process --- .../achievements/parse-achievement-file.ts | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/services/achievements/parse-achievement-file.ts b/src/main/services/achievements/parse-achievement-file.ts index 251fd1f9..5817b032 100644 --- a/src/main/services/achievements/parse-achievement-file.ts +++ b/src/main/services/achievements/parse-achievement-file.ts @@ -66,6 +66,11 @@ export const parseAchievementFile = async ( }); } + if (type === Cracker.creamAPI) { + const parsed = await iniParse(filePath); + return processCreamAPI(parsed); + } + achievementsLogger.log(`${type} achievements found on ${filePath}`); return []; }; @@ -125,6 +130,27 @@ const processOnlineFix = (unlockedAchievements: any): UnlockedAchievement[] => { return parsedUnlockedAchievements; }; +const processCreamAPI = (unlockedAchievements: any): UnlockedAchievement[] => { + const parsedUnlockedAchievements: UnlockedAchievement[] = []; + + for (const achievement of Object.keys(unlockedAchievements)) { + const unlockedAchievement = unlockedAchievements[achievement]; + + if (unlockedAchievement?.achieved) { + const unlockTime = unlockedAchievement.unlocktime; + parsedUnlockedAchievements.push({ + name: achievement, + unlockTime: + unlockTime.length === 7 + ? unlockTime * 1000 * 1000 + : unlockTime * 1000, + }); + } + } + + return parsedUnlockedAchievements; +}; + const processSkidrow = (unlockedAchievements: any): UnlockedAchievement[] => { const parsedUnlockedAchievements: UnlockedAchievement[] = []; const achievements = unlockedAchievements["Achievements"];