mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-02-03 00:33:49 +03:00
feat: adjustments on achievements
This commit is contained in:
parent
22fc95ff53
commit
bb65d77fc6
@ -12,8 +12,8 @@ export class GameAchievement {
|
|||||||
shop: string;
|
shop: string;
|
||||||
|
|
||||||
@Column("text", { nullable: true })
|
@Column("text", { nullable: true })
|
||||||
unlockedAchievements: string;
|
unlockedAchievements: string | null;
|
||||||
|
|
||||||
@Column("text", { nullable: true })
|
@Column("text", { nullable: true })
|
||||||
achievements: string;
|
achievements: string | null;
|
||||||
}
|
}
|
||||||
|
@ -25,21 +25,24 @@ const watchAchievementsWindows = async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (games.length === 0) return;
|
if (games.length === 0) return;
|
||||||
|
|
||||||
const achievementFiles = findAllAchievementFiles();
|
const achievementFiles = findAllAchievementFiles();
|
||||||
|
|
||||||
for (const game of games) {
|
for (const game of games) {
|
||||||
|
const gameAchievementFiles: AchievementFile[] = [];
|
||||||
|
|
||||||
for (const objectId of getAlternativeObjectIds(game.objectID)) {
|
for (const objectId of getAlternativeObjectIds(game.objectID)) {
|
||||||
const gameAchievementFiles = achievementFiles.get(objectId) || [];
|
gameAchievementFiles.push(...(achievementFiles.get(objectId) || []));
|
||||||
const achievementFileInsideDirectory =
|
|
||||||
findAchievementFileInExecutableDirectory(game);
|
|
||||||
|
|
||||||
gameAchievementFiles.push(...achievementFileInsideDirectory);
|
gameAchievementFiles.push(
|
||||||
|
...findAchievementFileInExecutableDirectory(game)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (!gameAchievementFiles.length) continue;
|
if (!gameAchievementFiles.length) continue;
|
||||||
|
|
||||||
for (const file of gameAchievementFiles) {
|
for (const file of gameAchievementFiles) {
|
||||||
compareFile(game, file);
|
await compareFile(game, file);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -64,7 +67,7 @@ const watchAchievementsWithWine = async () => {
|
|||||||
if (!gameAchievementFiles.length) continue;
|
if (!gameAchievementFiles.length) continue;
|
||||||
|
|
||||||
for (const file of gameAchievementFiles) {
|
for (const file of gameAchievementFiles) {
|
||||||
compareFile(game, file);
|
await compareFile(game, file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -13,12 +13,12 @@ const getAppDataPath = () => {
|
|||||||
|
|
||||||
const user = app.getPath("home").split("/").pop();
|
const user = app.getPath("home").split("/").pop();
|
||||||
|
|
||||||
return path.join("drive_c", "users", user || "", "AppData", "Roaming");
|
return path.join("drive_c", "Users", user || "", "AppData", "Roaming");
|
||||||
};
|
};
|
||||||
|
|
||||||
const getDocumentsPath = () => {
|
const getDocumentsPath = () => {
|
||||||
if (process.platform === "win32") {
|
if (process.platform === "win32") {
|
||||||
return app.getPath("appData");
|
return app.getPath("documents");
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = app.getPath("home").split("/").pop();
|
const user = app.getPath("home").split("/").pop();
|
||||||
@ -28,11 +28,10 @@ const getDocumentsPath = () => {
|
|||||||
|
|
||||||
const getPublicDocumentsPath = () => {
|
const getPublicDocumentsPath = () => {
|
||||||
if (process.platform === "win32") {
|
if (process.platform === "win32") {
|
||||||
return app.getPath("appData");
|
return path.join("C:", "Users", "Public", "Documents");
|
||||||
}
|
}
|
||||||
// /media/jackenx/JED2/.newprefix/dosdevices/c:/users/Public/Documents/Steam/CODEX/489830
|
|
||||||
|
|
||||||
return path.join("drive_c", "users", "Public", "Documents");
|
return path.join("drive_c", "Users", "Public", "Documents");
|
||||||
};
|
};
|
||||||
|
|
||||||
const getLocalAppDataPath = () => {
|
const getLocalAppDataPath = () => {
|
||||||
|
@ -7,59 +7,69 @@ import {
|
|||||||
} from "./find-achivement-files";
|
} from "./find-achivement-files";
|
||||||
import { parseAchievementFile } from "./parse-achievement-file";
|
import { parseAchievementFile } from "./parse-achievement-file";
|
||||||
import { mergeAchievements } from "./merge-achievements";
|
import { mergeAchievements } from "./merge-achievements";
|
||||||
import type { UnlockedAchievement } from "@types";
|
import type { AchievementFile, UnlockedAchievement } from "@types";
|
||||||
import { getGameAchievementData } from "./get-game-achievement-data";
|
import { getGameAchievementData } from "./get-game-achievement-data";
|
||||||
import { achievementsLogger } from "../logger";
|
import { achievementsLogger } from "../logger";
|
||||||
import { Game } from "@main/entity";
|
import { Game } from "@main/entity";
|
||||||
|
|
||||||
export const updateAllLocalUnlockedAchievements = async () => {
|
export const updateAllLocalUnlockedAchievements = async () => {
|
||||||
const gameAchievementFilesMap = findAllAchievementFiles();
|
|
||||||
|
|
||||||
const games = await gameRepository.find({
|
const games = await gameRepository.find({
|
||||||
where: {
|
where: {
|
||||||
isDeleted: false,
|
isDeleted: false,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (games.length === 0) return;
|
||||||
|
|
||||||
|
const gameAchievementFilesMap = findAllAchievementFiles();
|
||||||
|
|
||||||
for (const game of games) {
|
for (const game of games) {
|
||||||
for (const objectId of getAlternativeObjectIds(game.objectID)) {
|
gameAchievementRepository
|
||||||
const gameAchievementFiles = gameAchievementFilesMap.get(objectId) || [];
|
.findOne({
|
||||||
const achievementFileInsideDirectory =
|
where: { objectId: game.objectID, shop: "steam" },
|
||||||
findAchievementFileInExecutableDirectory(game);
|
})
|
||||||
|
.then((localAchievements) => {
|
||||||
gameAchievementFiles.push(...achievementFileInsideDirectory);
|
if (!localAchievements || !localAchievements.achievements) {
|
||||||
|
getGameAchievementData(game.objectID, "steam");
|
||||||
gameAchievementRepository
|
|
||||||
.findOne({
|
|
||||||
where: { objectId: game.objectID, shop: "steam" },
|
|
||||||
})
|
|
||||||
.then((localAchievements) => {
|
|
||||||
if (!localAchievements || !localAchievements.achievements) {
|
|
||||||
getGameAchievementData(game.objectID, "steam");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const unlockedAchievements: UnlockedAchievement[] = [];
|
|
||||||
|
|
||||||
for (const achievementFile of gameAchievementFiles) {
|
|
||||||
const parsedAchievements = parseAchievementFile(
|
|
||||||
achievementFile.filePath,
|
|
||||||
achievementFile.type
|
|
||||||
);
|
|
||||||
|
|
||||||
if (parsedAchievements.length) {
|
|
||||||
unlockedAchievements.push(...parsedAchievements);
|
|
||||||
|
|
||||||
achievementsLogger.log(
|
|
||||||
"Achievement file for",
|
|
||||||
game.title,
|
|
||||||
achievementFile.filePath,
|
|
||||||
parsedAchievements
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const gameAchievementFiles: AchievementFile[] = [];
|
||||||
|
const unlockedAchievements: UnlockedAchievement[] = [];
|
||||||
|
|
||||||
|
for (const objectId of getAlternativeObjectIds(game.objectID)) {
|
||||||
|
gameAchievementFiles.push(
|
||||||
|
...(gameAchievementFilesMap.get(objectId) || [])
|
||||||
|
);
|
||||||
|
|
||||||
|
gameAchievementFiles.push(
|
||||||
|
...findAchievementFileInExecutableDirectory(game)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const achievementFile of gameAchievementFiles) {
|
||||||
|
const parsedAchievements = parseAchievementFile(
|
||||||
|
achievementFile.filePath,
|
||||||
|
achievementFile.type
|
||||||
|
);
|
||||||
|
|
||||||
|
if (parsedAchievements.length) {
|
||||||
|
unlockedAchievements.push(...parsedAchievements);
|
||||||
|
|
||||||
|
achievementsLogger.log(
|
||||||
|
"Achievement file for",
|
||||||
|
game.title,
|
||||||
|
achievementFile.filePath,
|
||||||
|
parsedAchievements
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
mergeAchievements(game.objectID, "steam", unlockedAchievements, false);
|
await mergeAchievements(
|
||||||
|
game.objectID,
|
||||||
|
"steam",
|
||||||
|
unlockedAchievements,
|
||||||
|
false
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -72,8 +82,6 @@ export const updateLocalUnlockedAchivements = async (game: Game) => {
|
|||||||
|
|
||||||
gameAchievementFiles.push(...achievementFileInsideDirectory);
|
gameAchievementFiles.push(...achievementFileInsideDirectory);
|
||||||
|
|
||||||
// console.log("Achievements files for", game.title, gameAchievementFiles);
|
|
||||||
|
|
||||||
const unlockedAchievements: UnlockedAchievement[] = [];
|
const unlockedAchievements: UnlockedAchievement[] = [];
|
||||||
|
|
||||||
for (const achievementFile of gameAchievementFiles) {
|
for (const achievementFile of gameAchievementFiles) {
|
||||||
|
Loading…
Reference in New Issue
Block a user