Skip to content

Commit 38c0187

Browse files
committed
Add support for new farmhand structure in save files
Updated useLoadSaveFile hook and saveFileType to handle both legacy and new farmhand data structures based on game version. This ensures compatibility with different versions of the save file format.
1 parent d8eeffc commit 38c0187

2 files changed

Lines changed: 21 additions & 5 deletions

File tree

src/hooks/useLoadSaveFile.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import { GetDetailedInfo, GetFarmHands } from '@utility/Utility';
44
import type {
55
gameLocationType,
66
itemsType,
7-
itemType,
87
playerType,
9-
saveFileType,
108
saveGameType,
119
specialOrderType
1210
} from 'types/savefile.js';
@@ -62,11 +60,23 @@ const useLoadSaveFile = (): UseLoadSaveFileResult => {
6260
};
6361

6462
const getPlayerData = useCallback(() => {
65-
//getting players
66-
console.log("Getting player data...")
63+
//getting players
6764
if(!fileData) return;
6865
let player = fileData.SaveGame.player;
69-
let farmHands = GetFarmHands(fileData.SaveGame.locations.GameLocation);
66+
let farmHands: playerType[] = [];
67+
const gameVersion = fileData.SaveGame.gameVersion;
68+
const [major, minor] = gameVersion.split('.').map(Number);
69+
if (major && minor && (major < 1 || (major >= 1 && minor < 5))) {
70+
farmHands = GetFarmHands(fileData.SaveGame.locations.GameLocation);
71+
} else {
72+
if(Array.isArray(fileData.SaveGame.farmhands)){
73+
farmHands = [...fileData.SaveGame.farmhands.Farmers];
74+
} else {
75+
console.log("Legacy single farmhand detected")
76+
console.log(fileData.SaveGame.farmhands)
77+
farmHands = [fileData.SaveGame.farmhands.Farmer];
78+
}
79+
}
7080
let museumLocation: gameLocationType | undefined = fileData.SaveGame.locations.GameLocation.find((loc: gameLocationType) => {
7181
return loc.name === "ArchaeologyHouse";
7282
});

src/types/savefile.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ export type saveFileType = {
5959
gameVersionLabel: string,
6060
completedSpecialOrders: specialOrderType,
6161
availableSpecialOrders: specialOrderType,
62+
farmhands: legacyFarmerType,
63+
}
64+
65+
type legacyFarmerType = {
66+
Farmer: playerType,
67+
Farmers: playerType[],
6268
}
6369

6470
export type specialOrderType = {

0 commit comments

Comments
 (0)