Files
srhtnin.github.io/Scripts/Garden/Upgrades.js
T

192 lines
3.1 KiB
JavaScript

const GardenExpansionBaseCost = 1000;
const PlantInformationUpgradeCost = 500;
const GardenOverviewUpgradeCost = 1000;
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;
}
function HasGardenOverviewUpgrade(
SaveData
) {
return (
SaveData
?.Upgrades
?.GardenOverview ===
true
);
}
function GetGardenOverviewUpgradeCost() {
return GardenOverviewUpgradeCost;
}
function UnlockGardenOverview(
SaveData
) {
SaveData.Upgrades ??= {};
SaveData.Preferences ??= {};
SaveData.Upgrades.GardenOverview =
true;
SaveData.Preferences.ShowNextHarvest =
true;
SaveData.Preferences.ShowGardenSize =
true;
SaveData.Preferences.ShowEmptyPlots =
true;
SaveData.Preferences.ShowPlantedPlots =
true;
SaveData.Preferences.ShowGrowingPlots =
true;
SaveData.Preferences.ShowReadyPlots =
true;
}