mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-02-02 16:23:48 +03:00
feat: add new achievement provider
This commit is contained in:
parent
144444ad10
commit
73eb7ac637
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Catalogue](./screenshot.png)
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Katalog](./screenshot.png)
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Catalogue](./screenshot.png)
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Katalog](./screenshot.png)
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Catalogue](./screenshot.png)
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Catalogue Hydra](./screenshot.png)
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Catalogue](./screenshot.png)
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Catalogue](./screenshot.png)
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Catalogue](./screenshot.png)
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Catalogue](./screenshot.png)
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Catalogue](./screenshot.png)
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
|
||||
[![ee](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
[![et](https://img.shields.io/badge/lang-et-blue.svg)](README.et.md)
|
||||
|
||||
![Hydra Catalogue](./screenshot.png)
|
||||
|
||||
|
@ -51,5 +51,5 @@ export default {
|
||||
kk,
|
||||
cs,
|
||||
nb,
|
||||
et
|
||||
et,
|
||||
};
|
||||
|
@ -367,6 +367,7 @@
|
||||
"animated_profile_picture": "Fotos de perfil animadas",
|
||||
"premium_support": "Suporte Premium",
|
||||
"show_and_compare_achievements": "Exiba e compare suas conquistas com outros usuários",
|
||||
"animated_profile_banner": "Banner animado no perfil"
|
||||
"animated_profile_banner": "Banner animado no perfil",
|
||||
"cloud_saving": "Saves na Cloud (até {{gameCount}} jogos)"
|
||||
}
|
||||
}
|
||||
|
@ -71,6 +71,7 @@ const crackers = [
|
||||
Cracker.smartSteamEmu,
|
||||
Cracker.empress,
|
||||
Cracker.flt,
|
||||
Cracker.razor1911,
|
||||
];
|
||||
|
||||
const getPathFromCracker = (cracker: Cracker) => {
|
||||
@ -221,6 +222,15 @@ const getPathFromCracker = (cracker: Cracker) => {
|
||||
];
|
||||
}
|
||||
|
||||
if (cracker == Cracker.razor1911) {
|
||||
return [
|
||||
{
|
||||
folderPath: path.join(appData, ".1911"),
|
||||
fileLocation: ["achievement"],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
achievementsLogger.error(`Cracker ${cracker} not implemented`);
|
||||
throw new Error(`Cracker ${cracker} not implemented`);
|
||||
};
|
||||
|
@ -65,6 +65,10 @@ export const parseAchievementFile = (
|
||||
return processCreamAPI(parsed);
|
||||
}
|
||||
|
||||
if (type === Cracker.razor1911) {
|
||||
return processRazor1911(filePath);
|
||||
}
|
||||
|
||||
achievementsLogger.log(
|
||||
`Unprocessed ${type} achievements found on ${filePath}`
|
||||
);
|
||||
@ -111,6 +115,35 @@ const jsonParse = (filePath: string) => {
|
||||
}
|
||||
};
|
||||
|
||||
const processRazor1911 = (filePath: string): UnlockedAchievement[] => {
|
||||
try {
|
||||
const fileContent = readFileSync(filePath, "utf-8");
|
||||
achievementsLogger.log("processing file", filePath, fileContent);
|
||||
const lines =
|
||||
fileContent.charCodeAt(0) === 0xfeff
|
||||
? fileContent.slice(1).split(/[\r\n]+/)
|
||||
: fileContent.split(/[\r\n]+/);
|
||||
|
||||
const achievements: UnlockedAchievement[] = [];
|
||||
for (const line of lines) {
|
||||
if (!line.length) continue;
|
||||
|
||||
const [name, unlocked, unlockTime] = line.split(" ");
|
||||
if (unlocked === "1") {
|
||||
achievements.push({
|
||||
name,
|
||||
unlockTime: Number(unlockTime) * 1000,
|
||||
});
|
||||
}
|
||||
}
|
||||
achievementsLogger.log("processing file", achievements);
|
||||
return achievements;
|
||||
} catch (err) {
|
||||
achievementsLogger.error(`Error processing ${filePath}`, err);
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
const processOnlineFix = (unlockedAchievements: any): UnlockedAchievement[] => {
|
||||
const parsedUnlockedAchievements: UnlockedAchievement[] = [];
|
||||
|
||||
|
@ -39,4 +39,5 @@ export enum Cracker {
|
||||
_3dm = "3dm",
|
||||
flt = "FLT",
|
||||
rle = "RLE",
|
||||
razor1911 = "RAZOR1911",
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user