Files
srhtnin.github.io/Scripts/Garden/Upgrades.js
T
2026-09-02 22:40:58 +02:00

145 lines
2.3 KiB
JavaScript

const GardenExpansionBaseCost = 1000;
const PlantInformationUpgradeCost = 500;
function GetGardenColumnUpgradeCost(
SaveData
) {
const GardenWidth =
SaveData.Garden.Width;
const GardenHeight =
SaveData.Garden.Height;
return Math.round(
GardenExpansionBaseCost *
GardenHeight *
(
1 +
GardenHeight / 10 +
(GardenWidth - 3) / 10
)
);
}
function GetGardenRowUpgradeCost(
SaveData
) {
const GardenWidth =
SaveData.Garden.Width;
const GardenHeight =
SaveData.Garden.Height;
return Math.round(
GardenExpansionBaseCost *
GardenWidth *
(
1 +
GardenWidth / 10 +
(GardenHeight - 3) / 10
)
);
}
function AddGardenColumn(
SaveData
) {
const Garden = SaveData.Garden;
const OldWidth = Garden.Width;
const Height = Garden.Height;
const NewWidth = OldWidth + 1;
const NewPlots = Array(
NewWidth * Height
).fill(null);
for (
let Y = 0;
Y < Height;
Y++
) {
for (
let X = 0;
X < OldWidth;
X++
) {
NewPlots[
Y * NewWidth + X
] = Garden.Plots[
Y * OldWidth + X
] ?? null;
}
}
Garden.Width = NewWidth;
Garden.Plots = NewPlots;
ResetGardenMutationCooldowns(
SaveData
);
}
function AddGardenRow(
SaveData
) {
const Garden = SaveData.Garden;
const Width = Garden.Width;
Garden.Height++;
Garden.Plots.push(
...Array(Width).fill(null)
);
ResetGardenMutationCooldowns(
SaveData
);
}
function ResetGardenMutationCooldowns(
SaveData
) {
SaveData.MutationCooldowns = {};
}
function HasPlantInformationUpgrade(
SaveData
) {
return (
SaveData
?.Upgrades
?.PlantInformation ===
true
);
}
function GetPlantInformationUpgradeCost() {
return PlantInformationUpgradeCost;
}
function UnlockPlantInformation(
SaveData
) {
SaveData.Upgrades ??= {};
SaveData.Preferences ??= {};
SaveData.Upgrades.PlantInformation =
true;
SaveData.Preferences.ShowPlantNames =
true;
SaveData.Preferences.ShowGrowthTimers =
true;
}