Skip to content

Commit 796b5a5

Browse files
authored
Merge pull request #26 from TheCodeRaccoons/Backwards-compatibility
Backwards compatibility
2 parents 28e8ed5 + fa2a73e commit 796b5a5

15 files changed

Lines changed: 244 additions & 147 deletions

File tree

src/App.css

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -439,30 +439,12 @@ section.sv-container{
439439
cursor: help;
440440
}
441441

442-
.progress-container-flex .npc-data{
443-
width: 6.25rem;
444-
height: 9.375rem;
445-
margin: auto;
446-
cursor: pointer;
447-
display: flex;
448-
align-items: center;
449-
justify-content: center;
450-
flex-wrap: wrap;
451-
text-align: center;
452-
padding-top: 1.25rem;
453-
}
454442

455443
.progress-container a{
456444
text-decoration: none;
457445
cursor: help;
458446
}
459447

460-
.npc-data .friendship {
461-
margin: auto;
462-
width: 5.625rem;
463-
cursor: pointer;
464-
}
465-
466448
.coright{
467449
position: absolute;
468450
bottom: 0.625rem;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
.npc-data{
2+
width: 6.25rem;
3+
height: 9.375rem;
4+
margin: auto;
5+
cursor: pointer;
6+
display: flex;
7+
align-items: center;
8+
justify-content: center;
9+
flex-wrap: wrap;
10+
text-align: center;
11+
padding-top: 1.25rem;
12+
}
13+
.section-achievements {
14+
padding-top: 2rem;
15+
padding-bottom: 2rem;
16+
}
17+
18+
.npc-grid {
19+
display: flex;
20+
align-items: start;
21+
gap: 1rem;
22+
flex-wrap: wrap;
23+
padding-top: 1.25rem;
24+
}
25+
26+
.npc-data .friendship {
27+
margin: auto;
28+
width: 5.625rem;
29+
cursor: pointer;
30+
}
31+
.npc-data .heart-display {
32+
display: flex;
33+
flex-wrap: wrap;
34+
justify-content: flex-start;
35+
}
36+
37+
.heart-ico {
38+
width: 1.25rem;
39+
}
40+

src/Components/AchieveTabs/Friendship/index.tsx

Lines changed: 27 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,49 @@
1-
import React, { useState, useEffect } from 'react'
1+
import { AchievementItem } from '@components/common';
22
import ActiveH from '@media/Heart_active.png'
33
import InactiveH from '@media/Heart_disabled.png'
4+
import type { friendshipType } from 'types/displayDataTypes';
5+
import './Friendship.css'
46

5-
interface FriendshipData {
6-
level: number;
7-
name: string;
8-
lvlup: number;
9-
dateable: boolean;
10-
}
11-
12-
interface FriendshipProps {
13-
friendship: FriendshipData[];
14-
}
15-
16-
const Friendship: React.FC<FriendshipProps> = ({ friendship }) => {
17-
const [five, setFive] = useState(0);
18-
const [ten, setTen] = useState(0);
19-
7+
const Friendship = ({ friendship, achievements }: friendshipType) => {
208
const displayHearts = (numHearts: number) => {
219
let hearts = []
2210
for(let i = 0; i < 10; i++){
23-
hearts.push(<img key={i} src={(i < numHearts) ? ActiveH : InactiveH } alt={(i <= numHearts) ? "owned":"missing"} width="18"></img>)
11+
hearts.push(
12+
<img
13+
key={i}
14+
className="heart-ico"
15+
src={(i < numHearts) ? ActiveH : InactiveH }
16+
alt={(i <= numHearts) ? "owned":"missing"}
17+
/>)
2418
}
2519
return hearts;
2620
};
2721

28-
const getFriendAchievements = () => {
29-
let totalFive = 0
30-
let totalTen = 0
31-
friendship.forEach(el => {
32-
if(el.level >= 5){
33-
totalFive += 1;
34-
}
35-
if(el.level >= 10){
36-
totalTen += 1;
37-
}
38-
});
39-
40-
setFive(totalFive);
41-
setTen(totalTen);
42-
};
43-
44-
useEffect(() => {
45-
getFriendAchievements();
46-
}, [friendship]);
47-
4822
return (
4923
<div className="progress-container-flex">
50-
5124
<h2>Friendship Achievements</h2>
52-
<ul className="a-List">
53-
<li>A New Friend: {(five >= 1) ? <span className="completed">You have this achievement</span> : <span className="pending">You need to increase your friendship with {1 - five} Villagers</span> } </li>
54-
<li>Cliques: {(five >= 4) ? <span className="completed">You have this achievement</span> : <span className="pending">You need to increase your friendship with {4 - five} Villagers </span>}</li>
55-
<li>Networking : {(five >= 10) ? <span className="completed">You have this achievement</span> : <span className="pending">You need to increase your friendship with {10 - five} Villagers </span>}</li>
56-
<li>Popular: {(five >= 20) ? <span className="completed">You have this achievement</span> : <span className="pending">You need to increase your friendship with {20 - five} Villagers </span>}</li>
57-
<li>Best Friends: {(ten >= 1) ? <span className="completed">You have this achievement</span> : <span className="pending">You need to increase your friendship with {1 - ten} Villagers </span>} </li>
58-
<li>The Beloved Farmer: {(ten >= 8) ? <span className="completed">You have this achievement</span> : <span className="pending"> You need to increase your friendship with {8 - ten} Villagers </span> }</li>
59-
<li>Introductions quest: TBD </li>
60-
</ul>
61-
25+
<div className="section-achievements">
26+
{achievements && achievements.map((ach, i) => (
27+
<AchievementItem
28+
key={i}
29+
done={ach.done}
30+
image={ach.image}
31+
achievementName={ach.name}
32+
achievementDesc={ach.description}
33+
achievementHoverDesc={ach.hoverDesc}
34+
/>))}
35+
</div>
36+
<h2>Friendship Levels</h2>
37+
<div className="npc-grid">
6238
{friendship.map((d, i) =>
6339
<div className="npc-data" key={i}>
6440
<h2>{d.name}</h2>
65-
<img className="friendship" src={`https://stardew-tracker.s3.amazonaws.com/Friendship/${d.name}.png`} alt={d.name} title={(d.lvlup > 10) ? `You have ${d.level} hearts with this npc` : (d.dateable && d.level === 8) ? `You need to start a relationship with ${d.name} to increase your friendship level` :`you need ${d.lvlup} points to level up`} ></img>
66-
{displayHearts(d.level)}
41+
<img className="friendship" src={`https://stardew-tracker.s3.amazonaws.com/Friendship/${d.name}.png`} alt={d.name} title={(d.lvlup > 10) ? `You have ${d.level} hearts with ${d.name}` : (d.dateable && d.level === 8) ? `You need to start a relationship with ${d.name} to increase your friendship level` :`you need ${d.lvlup} points to level up`} ></img>
42+
<div className="heart-display">{displayHearts(d.level)}</div>
6743
</div>
6844

6945
)}
46+
</div>
7047
</div>
7148
);
7249
};

src/Components/Achievements/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ const Achievements = ({
8282
</TabPanel>
8383
<TabPanel>
8484
<section className="achievement-container">
85-
<Friendship friendship={friendship}/>
85+
<Friendship {...friendship}/>
8686
</section>
8787
</TabPanel>
8888
<TabPanel>

src/Components/stats/stats.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ const Stats = ({playerData, farmName, farmhandData}: formattedSaveFileType) => {
5858
</section>
5959
</TabPanel>
6060
));
61-
console.log("Rendering Stats component with playerData:", playerData, "experience:", playerData.experience);
6261
return (
6362
<div className="file-container">
6463
<div className="farmName"><h2>Farm: {globalFarmName}</h2></div>

src/Hooks/useLoadSaveFile.tsx

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,23 +66,18 @@ const useLoadSaveFile = (): UseLoadSaveFileResult => {
6666
let farmHands: playerType[] = [];
6767
const gameVersion = fileData.SaveGame.gameVersion;
6868
console.debug("Current game version:", gameVersion);
69-
const [major, minor, patch] = gameVersion.split('.').map(Number);
70-
if (major && minor && (major >= 1 && minor >= 5 )) {
71-
console.debug("Using New farmhand data structure");
72-
farmHands = GetFarmHands(fileData.SaveGame.locations.GameLocation);
69+
// const [major, minor, patch] = gameVersion.split('.').map(Number);
70+
71+
if(Array.isArray(fileData.SaveGame.farmhands)){
72+
console.debug("Single farmhand detected")
73+
farmHands = [...fileData.SaveGame.farmhands.Farmers];
74+
} else if (fileData.SaveGame.farmhands && fileData.SaveGame.farmhands.Farmer) {
75+
console.debug("Legacy single farmhand detected")
76+
farmHands = [fileData.SaveGame.farmhands.Farmer];
7377
} else {
74-
console.debug("Farmhands data:", fileData.SaveGame.farmhands);
75-
if(Array.isArray(fileData.SaveGame.farmhands)){
76-
farmHands = [...fileData.SaveGame.farmhands.Farmers];
77-
} else if (fileData.SaveGame.farmhands && fileData.SaveGame.farmhands.Farmer) {
78-
console.debug("Legacy single farmhand detected")
79-
console.debug(fileData.SaveGame.farmhands)
80-
farmHands = [fileData.SaveGame.farmhands.Farmer];
81-
} else {
82-
console.debug("Using legacy farmhands data structure ???");
83-
farmHands = GetFarmHands(fileData.SaveGame.locations.GameLocation);
84-
}
85-
}
78+
console.debug("Using farmhands data from locations");
79+
farmHands = GetFarmHands(fileData.SaveGame.locations.GameLocation);
80+
}
8681
let museumLocation: gameLocationType | undefined =
8782
fileData.SaveGame.locations.GameLocation.find((loc: gameLocationType) => {
8883
return loc.name === "ArchaeologyHouse";

src/Utility/JSON/Dishes.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,5 +78,6 @@
7878
{"Name":"Mango Sticky Rice", "id":905, "link":"Mango_Sticky_Rice"},
7979
{"Name":"Poi", "id":906, "link":"Poi"},
8080
{"Name":"Tropical Curry", "id":907, "link":"Tropical_Curry"},
81-
{"Name":"Squid Ink Ravioli", "id":733, "link":"Squid_Ink_Ravioli"}
81+
{"Name":"Squid Ink Ravioli", "id":733, "link":"Squid_Ink_Ravioli"},
82+
{"Name":"Moss Soup", "id":"MossSoup", "link":""}
8283
]}

src/Utility/Parsers/parseCookingItems.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,20 @@ const GetAchievementData = (alreadyCooked: number) : achievementType[] => {
6969
return achievements;
7070
}
7171

72-
const GetCooked = (cookedItems:itemsType[], id: number): number => {
72+
const GetCooked = (cookedItems:itemsType[], id: number | string): number => {
7373
let timesCooked = 0;
7474
if(Array.isArray(cookedItems)){
7575
let i = cookedItems.find(item => {
7676
if (item.key?.int === undefined){
7777
if (item.key?.string !== undefined){
78-
return +item.key.string === id;
78+
return item.key.string === id;
7979
} else{
8080
return false;
8181
}
8282
} else {
8383
return item.key.int === id
8484
}
85-
})
85+
})
8686
timesCooked = (i !== undefined) ? i.value.int : 0
8787
}
8888
return timesCooked;

src/Utility/Parsers/parseCropItems.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export const GetCropsAchievements = (allShipped: itemsType[]) : cropsShippedType
2727
const mono_extras: generalFormatedItemType[] = []
2828
let polycultureCount = 0;
2929
let maxMono: maxMonoType = { name: "undefined", shipped: 0 };
30-
3130
ShipCrops.forEach(cropItem => {
3231
const shippedCount = getShippedCount(allShipped, cropItem.id);
3332
const cropData = createCropData(cropItem, shippedCount);
@@ -70,7 +69,7 @@ export const GetCropsAchievements = (allShipped: itemsType[]) : cropsShippedType
7069

7170
const getShippedCount = (allShipped: itemsType[], cropId: number): number => {
7271
if (!allShipped?.length) return 0;
73-
const shippedItem = allShipped.find(item => item.key.int === cropId);
72+
const shippedItem = allShipped.find(item => item.key.int === cropId || item.key.string === cropId);
7473
return shippedItem?.value?.int || 0;
7574
};
7675

src/Utility/Parsers/parseFishItems.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,12 @@ export const GetFishes = (allFished: itemsType[]) => {
3232
const totalFishes = Fishes.length;
3333
let data: generalFormatedItemType[] = []
3434
let fishCaught = 0;
35-
3635
Fishes.forEach(item => {
37-
let caught = (Array.isArray(allFished)) ? (allFished.find(i => i.key.int === item.id ) !== undefined) : false
36+
let caught = (Array.isArray(allFished)) ?
37+
(allFished.find(i => i.key.int === item.id ||
38+
i.key.string === item.id ||
39+
(i.key.string && typeof i.key.string === "string" &&
40+
parseInt(i.key.string.replace('(O)','')) === item.id)) !== undefined) : false
3841
if(caught) fishCaught++;
3942
let d = {
4043
name: item.name,

0 commit comments

Comments
 (0)