mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-02-03 00:33:49 +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)
|
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
|
||||||
[![da](https://img.shields.io/badge/lang-da-red)](README.da.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)
|
[![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)
|
![Hydra Catalogue](./screenshot.png)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.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)
|
![Hydra Katalog](./screenshot.png)
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
|
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
|
||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![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)
|
![Hydra Catalogue](./screenshot.png)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.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)
|
![Hydra Katalog](./screenshot.png)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.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)
|
![Hydra Catalogue](./screenshot.png)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.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)
|
![Catalogue Hydra](./screenshot.png)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.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)
|
![Hydra Catalogue](./screenshot.png)
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
|
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
|
||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![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)
|
![Hydra Catalogue](./screenshot.png)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.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)
|
![Hydra Catalogue](./screenshot.png)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.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)
|
![Hydra Catalogue](./screenshot.png)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.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)
|
![Hydra Catalogue](./screenshot.png)
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.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)
|
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
|
||||||
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.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)
|
![Hydra Catalogue](./screenshot.png)
|
||||||
|
|
||||||
|
@ -51,5 +51,5 @@ export default {
|
|||||||
kk,
|
kk,
|
||||||
cs,
|
cs,
|
||||||
nb,
|
nb,
|
||||||
et
|
et,
|
||||||
};
|
};
|
||||||
|
@ -367,6 +367,7 @@
|
|||||||
"animated_profile_picture": "Fotos de perfil animadas",
|
"animated_profile_picture": "Fotos de perfil animadas",
|
||||||
"premium_support": "Suporte Premium",
|
"premium_support": "Suporte Premium",
|
||||||
"show_and_compare_achievements": "Exiba e compare suas conquistas com outros usuários",
|
"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.smartSteamEmu,
|
||||||
Cracker.empress,
|
Cracker.empress,
|
||||||
Cracker.flt,
|
Cracker.flt,
|
||||||
|
Cracker.razor1911,
|
||||||
];
|
];
|
||||||
|
|
||||||
const getPathFromCracker = (cracker: Cracker) => {
|
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`);
|
achievementsLogger.error(`Cracker ${cracker} not implemented`);
|
||||||
throw new Error(`Cracker ${cracker} not implemented`);
|
throw new Error(`Cracker ${cracker} not implemented`);
|
||||||
};
|
};
|
||||||
|
@ -65,6 +65,10 @@ export const parseAchievementFile = (
|
|||||||
return processCreamAPI(parsed);
|
return processCreamAPI(parsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type === Cracker.razor1911) {
|
||||||
|
return processRazor1911(filePath);
|
||||||
|
}
|
||||||
|
|
||||||
achievementsLogger.log(
|
achievementsLogger.log(
|
||||||
`Unprocessed ${type} achievements found on ${filePath}`
|
`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 processOnlineFix = (unlockedAchievements: any): UnlockedAchievement[] => {
|
||||||
const parsedUnlockedAchievements: UnlockedAchievement[] = [];
|
const parsedUnlockedAchievements: UnlockedAchievement[] = [];
|
||||||
|
|
||||||
|
@ -39,4 +39,5 @@ export enum Cracker {
|
|||||||
_3dm = "3dm",
|
_3dm = "3dm",
|
||||||
flt = "FLT",
|
flt = "FLT",
|
||||||
rle = "RLE",
|
rle = "RLE",
|
||||||
|
razor1911 = "RAZOR1911",
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user