mirror of
https://git.srhtnin.garden/sarah/srhtnin.github.io.git
synced 2026-10-14 18:58:11 +02:00
Added plant encyclopedia. PLEASE WORK
This commit is contained in:
1 parent
624b933347
commit
f417ca67f8
7 files changed
+900
-2
No files matched your search
Binary file not shown.
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
@@ -5,6 +5,7 @@ $NavbarPages = [
|
|||||||
"Sarahtonin" => "/Pages/Sarahtonin.html",
|
"Sarahtonin" => "/Pages/Sarahtonin.html",
|
||||||
"Garden" => "/Pages/Garden.html",
|
"Garden" => "/Pages/Garden.html",
|
||||||
"Shop" => "/Pages/Shop.html",
|
"Shop" => "/Pages/Shop.html",
|
||||||
|
"Plants" => "/Pages/Plants.html",
|
||||||
"Guide" => "/Pages/Guide.html",
|
"Guide" => "/Pages/Guide.html",
|
||||||
"Profile" => "/Pages/Profile.html"
|
"Profile" => "/Pages/Profile.html"
|
||||||
];
|
];
|
||||||
|
|||||||
+2
-2
@@ -71,7 +71,7 @@ $PageSection = "Guide";
|
|||||||
id="Harvesting"
|
id="Harvesting"
|
||||||
class="GuideSection"
|
class="GuideSection"
|
||||||
>
|
>
|
||||||
<h2>Harvesting</h2>
|
<h3>Harvesting</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Click a mature plant to harvest it. Harvesting gives
|
Click a mature plant to harvest it. Harvesting gives
|
||||||
@@ -178,7 +178,7 @@ $PageSection = "Guide";
|
|||||||
id="Discoveries"
|
id="Discoveries"
|
||||||
class="GuideSection"
|
class="GuideSection"
|
||||||
>
|
>
|
||||||
<h2>Discoveries</h2>
|
<h3>Discoveries</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Discovering a new plant or mutation is saved with
|
Discovering a new plant or mutation is saved with
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$PageTitle = "Plants";
|
||||||
|
$PageSection = "Plants";
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html lang="en" data-palette="CatppuccinMocha">
|
||||||
|
<?php require __DIR__ . "/Bits/Head.php"; ?>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<?php require __DIR__ . "/Bits/Navbar.php"; ?>
|
||||||
|
|
||||||
|
<main class="MainContainer">
|
||||||
|
<h1>Plant encyclopedia</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Every plant you discover is recorded here.
|
||||||
|
Undiscovered plants stay hidden until you find
|
||||||
|
them in your Garden.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div
|
||||||
|
id="PlantEncyclopediaList"
|
||||||
|
class="PlantEncyclopediaList"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<p
|
||||||
|
id="PlantEncyclopediaMessage"
|
||||||
|
class="PageMessage"
|
||||||
|
aria-live="polite"
|
||||||
|
>
|
||||||
|
Loading discovered plants...
|
||||||
|
</p>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<script src="/Scripts/Garden/PlantImages.js"></script>
|
||||||
|
<script src="/Scripts/Garden/Plants.js"></script>
|
||||||
|
<script src="/Scripts/Garden/Mutations.js"></script>
|
||||||
|
<script src="/Scripts/Garden/Save.js"></script>
|
||||||
|
<script src="/Scripts/Garden/Content.js"></script>
|
||||||
|
<script src="/Scripts/Garden/Economy.js"></script>
|
||||||
|
<script src="/Scripts/Garden/PlantEncyclopedia.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,673 @@
|
|||||||
|
let PlantEncyclopediaSave;
|
||||||
|
|
||||||
|
|
||||||
|
async function StartPlantEncyclopedia() {
|
||||||
|
try {
|
||||||
|
await LoadGameContent();
|
||||||
|
PlantEncyclopediaSave =
|
||||||
|
await LoadGame();
|
||||||
|
|
||||||
|
RenderPlantEncyclopedia();
|
||||||
|
} catch (Error) {
|
||||||
|
console.error(
|
||||||
|
"Couldn't load Plant encyclopedia:",
|
||||||
|
Error
|
||||||
|
);
|
||||||
|
|
||||||
|
SetPlantEncyclopediaMessage(
|
||||||
|
"Couldn't load your discovered plants."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function RenderPlantEncyclopedia() {
|
||||||
|
const List =
|
||||||
|
document.getElementById(
|
||||||
|
"PlantEncyclopediaList"
|
||||||
|
);
|
||||||
|
|
||||||
|
List.replaceChildren();
|
||||||
|
|
||||||
|
|
||||||
|
const DiscoveredPlants =
|
||||||
|
Object.values(Plants)
|
||||||
|
.filter(
|
||||||
|
Plant =>
|
||||||
|
HasDiscoveredPlant(
|
||||||
|
PlantEncyclopediaSave,
|
||||||
|
Plant.Id
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.sort(
|
||||||
|
(A, B) =>
|
||||||
|
A.Id - B.Id
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
if (
|
||||||
|
DiscoveredPlants.length === 0
|
||||||
|
) {
|
||||||
|
SetPlantEncyclopediaMessage(
|
||||||
|
"No plants discovered yet."
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (
|
||||||
|
const Plant
|
||||||
|
of DiscoveredPlants
|
||||||
|
) {
|
||||||
|
List.appendChild(
|
||||||
|
CreatePlantEncyclopediaCard(
|
||||||
|
Plant
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SetPlantEncyclopediaMessage(
|
||||||
|
DiscoveredPlants.length === 1
|
||||||
|
? "1 plant discovered."
|
||||||
|
: DiscoveredPlants.length
|
||||||
|
.toLocaleString() +
|
||||||
|
" plants discovered."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function CreatePlantEncyclopediaCard(
|
||||||
|
Plant
|
||||||
|
) {
|
||||||
|
const Card =
|
||||||
|
document.createElement(
|
||||||
|
"article"
|
||||||
|
);
|
||||||
|
|
||||||
|
Card.className =
|
||||||
|
"Panel PlantEncyclopediaCard";
|
||||||
|
|
||||||
|
Card.id =
|
||||||
|
"Plant-" + Plant.Id;
|
||||||
|
|
||||||
|
|
||||||
|
const Header =
|
||||||
|
document.createElement(
|
||||||
|
"header"
|
||||||
|
);
|
||||||
|
|
||||||
|
Header.className =
|
||||||
|
"PlantEncyclopediaHeader";
|
||||||
|
|
||||||
|
|
||||||
|
const Number =
|
||||||
|
document.createElement(
|
||||||
|
"span"
|
||||||
|
);
|
||||||
|
|
||||||
|
Number.className =
|
||||||
|
"PlantEncyclopediaNumber";
|
||||||
|
|
||||||
|
Number.textContent =
|
||||||
|
String(
|
||||||
|
Plant.Id
|
||||||
|
).padStart(
|
||||||
|
3,
|
||||||
|
"0"
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
const Name =
|
||||||
|
document.createElement(
|
||||||
|
"h2"
|
||||||
|
);
|
||||||
|
|
||||||
|
Name.textContent =
|
||||||
|
Plant.Name;
|
||||||
|
|
||||||
|
|
||||||
|
Header.append(
|
||||||
|
Number,
|
||||||
|
Name
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
const Body =
|
||||||
|
document.createElement(
|
||||||
|
"div"
|
||||||
|
);
|
||||||
|
|
||||||
|
Body.className =
|
||||||
|
"PlantEncyclopediaBody";
|
||||||
|
|
||||||
|
|
||||||
|
Body.append(
|
||||||
|
CreatePlantEncyclopediaVisual(
|
||||||
|
Plant
|
||||||
|
),
|
||||||
|
CreatePlantEncyclopediaDetails(
|
||||||
|
Plant
|
||||||
|
),
|
||||||
|
CreatePlantEncyclopediaRelations(
|
||||||
|
Plant
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
Card.append(
|
||||||
|
Header,
|
||||||
|
Body
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return Card;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function CreatePlantEncyclopediaVisual(
|
||||||
|
Plant
|
||||||
|
) {
|
||||||
|
const Visual =
|
||||||
|
document.createElement(
|
||||||
|
"div"
|
||||||
|
);
|
||||||
|
|
||||||
|
Visual.className =
|
||||||
|
"PlantTile PlantEncyclopediaVisual";
|
||||||
|
|
||||||
|
|
||||||
|
const PlantKey =
|
||||||
|
GetPlantKeyById(
|
||||||
|
Plant.Id
|
||||||
|
);
|
||||||
|
|
||||||
|
const Images =
|
||||||
|
PlantKey === null
|
||||||
|
? []
|
||||||
|
: PlantImages[
|
||||||
|
PlantKey
|
||||||
|
] ?? [];
|
||||||
|
|
||||||
|
|
||||||
|
if (Images.length === 0) {
|
||||||
|
const Missing =
|
||||||
|
document.createElement(
|
||||||
|
"span"
|
||||||
|
);
|
||||||
|
|
||||||
|
Missing.className =
|
||||||
|
"PlantEncyclopediaMissing";
|
||||||
|
|
||||||
|
Missing.textContent =
|
||||||
|
"No image";
|
||||||
|
|
||||||
|
Visual.appendChild(
|
||||||
|
Missing
|
||||||
|
);
|
||||||
|
|
||||||
|
return Visual;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const Image =
|
||||||
|
document.createElement(
|
||||||
|
"img"
|
||||||
|
);
|
||||||
|
|
||||||
|
Image.className =
|
||||||
|
"PlantSprite";
|
||||||
|
|
||||||
|
Image.src =
|
||||||
|
Images[
|
||||||
|
Images.length - 1
|
||||||
|
];
|
||||||
|
|
||||||
|
Image.alt =
|
||||||
|
Plant.Name;
|
||||||
|
|
||||||
|
|
||||||
|
Visual.appendChild(
|
||||||
|
Image
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return Visual;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function CreatePlantEncyclopediaDetails(
|
||||||
|
Plant
|
||||||
|
) {
|
||||||
|
const Details =
|
||||||
|
document.createElement(
|
||||||
|
"div"
|
||||||
|
);
|
||||||
|
|
||||||
|
Details.className =
|
||||||
|
"PlantEncyclopediaDetails";
|
||||||
|
|
||||||
|
|
||||||
|
const Description =
|
||||||
|
document.createElement(
|
||||||
|
"p"
|
||||||
|
);
|
||||||
|
|
||||||
|
Description.className =
|
||||||
|
"PlantEncyclopediaDescription";
|
||||||
|
|
||||||
|
Description.textContent =
|
||||||
|
Plant.Description ||
|
||||||
|
"No description.";
|
||||||
|
|
||||||
|
|
||||||
|
Details.appendChild(
|
||||||
|
Description
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
const Tags =
|
||||||
|
Array.isArray(
|
||||||
|
Plant.Tags
|
||||||
|
)
|
||||||
|
? Plant.Tags
|
||||||
|
: [];
|
||||||
|
|
||||||
|
Details.appendChild(
|
||||||
|
CreatePlantEncyclopediaStat(
|
||||||
|
"Tags",
|
||||||
|
Tags.length === 0
|
||||||
|
? "None"
|
||||||
|
: Tags.join(", ")
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
Details.appendChild(
|
||||||
|
CreatePlantEncyclopediaStat(
|
||||||
|
"Growth",
|
||||||
|
FormatPlantEncyclopediaTime(
|
||||||
|
Plant.GrowthTime
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
const Reward =
|
||||||
|
GetPlantHarvestReward(
|
||||||
|
PlantEncyclopediaSave,
|
||||||
|
Plant.Id
|
||||||
|
);
|
||||||
|
|
||||||
|
Details.appendChild(
|
||||||
|
CreatePlantEncyclopediaStat(
|
||||||
|
"Reward",
|
||||||
|
Reward === null
|
||||||
|
? "Unavailable"
|
||||||
|
: Reward.toLocaleString() +
|
||||||
|
" Dew"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
const RecipeProgress =
|
||||||
|
GetPlantRecipeProgress(
|
||||||
|
Plant.Id
|
||||||
|
);
|
||||||
|
|
||||||
|
Details.appendChild(
|
||||||
|
CreatePlantEncyclopediaStat(
|
||||||
|
"Found recipes",
|
||||||
|
RecipeProgress.Found
|
||||||
|
.toLocaleString() +
|
||||||
|
"/" +
|
||||||
|
RecipeProgress.Total
|
||||||
|
.toLocaleString()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return Details;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function CreatePlantEncyclopediaStat(
|
||||||
|
Name,
|
||||||
|
Value
|
||||||
|
) {
|
||||||
|
const Row =
|
||||||
|
document.createElement(
|
||||||
|
"div"
|
||||||
|
);
|
||||||
|
|
||||||
|
Row.className =
|
||||||
|
"PlantEncyclopediaStat";
|
||||||
|
|
||||||
|
|
||||||
|
const NameElement =
|
||||||
|
document.createElement(
|
||||||
|
"span"
|
||||||
|
);
|
||||||
|
|
||||||
|
NameElement.className =
|
||||||
|
"PlantEncyclopediaStatName";
|
||||||
|
|
||||||
|
NameElement.textContent =
|
||||||
|
Name;
|
||||||
|
|
||||||
|
|
||||||
|
const ValueElement =
|
||||||
|
document.createElement(
|
||||||
|
"span"
|
||||||
|
);
|
||||||
|
|
||||||
|
ValueElement.textContent =
|
||||||
|
Value;
|
||||||
|
|
||||||
|
|
||||||
|
Row.append(
|
||||||
|
NameElement,
|
||||||
|
ValueElement
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return Row;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function CreatePlantEncyclopediaRelations(
|
||||||
|
Plant
|
||||||
|
) {
|
||||||
|
const Relations =
|
||||||
|
document.createElement(
|
||||||
|
"div"
|
||||||
|
);
|
||||||
|
|
||||||
|
Relations.className =
|
||||||
|
"PlantEncyclopediaRelations";
|
||||||
|
|
||||||
|
|
||||||
|
Relations.append(
|
||||||
|
CreatePlantMutationRelationGroup(
|
||||||
|
"Created by",
|
||||||
|
GetPlantRelatedMutations(
|
||||||
|
Plant.Id,
|
||||||
|
"PlantsCreated"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
CreatePlantMutationRelationGroup(
|
||||||
|
"Used in",
|
||||||
|
GetPlantRelatedMutations(
|
||||||
|
Plant.Id,
|
||||||
|
"PlantsUsed"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return Relations;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function CreatePlantMutationRelationGroup(
|
||||||
|
Heading,
|
||||||
|
Mutations
|
||||||
|
) {
|
||||||
|
const Group =
|
||||||
|
document.createElement(
|
||||||
|
"section"
|
||||||
|
);
|
||||||
|
|
||||||
|
Group.className =
|
||||||
|
"PlantEncyclopediaRelationGroup";
|
||||||
|
|
||||||
|
|
||||||
|
const Title =
|
||||||
|
document.createElement(
|
||||||
|
"h3"
|
||||||
|
);
|
||||||
|
|
||||||
|
Title.textContent =
|
||||||
|
Heading;
|
||||||
|
|
||||||
|
|
||||||
|
const List =
|
||||||
|
document.createElement(
|
||||||
|
"ul"
|
||||||
|
);
|
||||||
|
|
||||||
|
List.className =
|
||||||
|
"PlantEncyclopediaRelationList";
|
||||||
|
|
||||||
|
|
||||||
|
if (Mutations.length === 0) {
|
||||||
|
const Empty =
|
||||||
|
document.createElement(
|
||||||
|
"li"
|
||||||
|
);
|
||||||
|
|
||||||
|
Empty.className =
|
||||||
|
"PlantEncyclopediaRelationEmpty";
|
||||||
|
|
||||||
|
Empty.textContent =
|
||||||
|
"None";
|
||||||
|
|
||||||
|
List.appendChild(
|
||||||
|
Empty
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
for (
|
||||||
|
const Mutation
|
||||||
|
of Mutations
|
||||||
|
) {
|
||||||
|
List.appendChild(
|
||||||
|
CreatePlantMutationRelation(
|
||||||
|
Mutation
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Group.append(
|
||||||
|
Title,
|
||||||
|
List
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return Group;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function CreatePlantMutationRelation(
|
||||||
|
Mutation
|
||||||
|
) {
|
||||||
|
const Item =
|
||||||
|
document.createElement(
|
||||||
|
"li"
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
if (
|
||||||
|
!HasDiscoveredMutation(
|
||||||
|
PlantEncyclopediaSave,
|
||||||
|
Mutation.Id
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
Item.className =
|
||||||
|
"PlantEncyclopediaRelationUnknown";
|
||||||
|
|
||||||
|
Item.textContent =
|
||||||
|
"????????";
|
||||||
|
|
||||||
|
return Item;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const Link =
|
||||||
|
document.createElement(
|
||||||
|
"a"
|
||||||
|
);
|
||||||
|
|
||||||
|
Link.href =
|
||||||
|
"/Pages/Mutations.html#Mutation-" +
|
||||||
|
Mutation.Id;
|
||||||
|
|
||||||
|
Link.textContent =
|
||||||
|
Mutation.Name;
|
||||||
|
|
||||||
|
|
||||||
|
Item.appendChild(
|
||||||
|
Link
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
return Item;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function GetPlantRelatedMutations(
|
||||||
|
PlantId,
|
||||||
|
RelationName
|
||||||
|
) {
|
||||||
|
return Object.values(
|
||||||
|
MutationSets
|
||||||
|
)
|
||||||
|
.filter(
|
||||||
|
Mutation =>
|
||||||
|
Mutation.Relations?.[
|
||||||
|
RelationName
|
||||||
|
]?.includes(
|
||||||
|
Number(PlantId)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.sort(
|
||||||
|
(A, B) =>
|
||||||
|
A.Id - B.Id
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function GetPlantRecipeProgress(
|
||||||
|
PlantId
|
||||||
|
) {
|
||||||
|
const RelatedMutationIds =
|
||||||
|
new Set();
|
||||||
|
|
||||||
|
|
||||||
|
for (
|
||||||
|
const Mutation
|
||||||
|
of Object.values(
|
||||||
|
MutationSets
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
const Relations =
|
||||||
|
Mutation.Relations ?? {};
|
||||||
|
|
||||||
|
const IsRelated =
|
||||||
|
Relations.PlantsCreated
|
||||||
|
?.includes(
|
||||||
|
Number(PlantId)
|
||||||
|
) ||
|
||||||
|
Relations.PlantsUsed
|
||||||
|
?.includes(
|
||||||
|
Number(PlantId)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (IsRelated) {
|
||||||
|
RelatedMutationIds.add(
|
||||||
|
Mutation.Id
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let Found = 0;
|
||||||
|
|
||||||
|
for (
|
||||||
|
const MutationId
|
||||||
|
of RelatedMutationIds
|
||||||
|
) {
|
||||||
|
if (
|
||||||
|
HasDiscoveredMutation(
|
||||||
|
PlantEncyclopediaSave,
|
||||||
|
MutationId
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
Found++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return {
|
||||||
|
Found: Found,
|
||||||
|
Total: RelatedMutationIds.size
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function FormatPlantEncyclopediaTime(
|
||||||
|
Milliseconds
|
||||||
|
) {
|
||||||
|
const TotalMinutes =
|
||||||
|
Math.max(
|
||||||
|
1,
|
||||||
|
Math.ceil(
|
||||||
|
Number(
|
||||||
|
Milliseconds
|
||||||
|
) /
|
||||||
|
60000
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const Hours =
|
||||||
|
Math.floor(
|
||||||
|
TotalMinutes /
|
||||||
|
60
|
||||||
|
);
|
||||||
|
|
||||||
|
const Minutes =
|
||||||
|
TotalMinutes %
|
||||||
|
60;
|
||||||
|
|
||||||
|
|
||||||
|
if (
|
||||||
|
Hours > 0 &&
|
||||||
|
Minutes > 0
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
Hours +
|
||||||
|
"h " +
|
||||||
|
Minutes +
|
||||||
|
"m"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Hours > 0) {
|
||||||
|
return Hours + "h";
|
||||||
|
}
|
||||||
|
|
||||||
|
return Minutes + "m";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function SetPlantEncyclopediaMessage(
|
||||||
|
Message
|
||||||
|
) {
|
||||||
|
const Element =
|
||||||
|
document.getElementById(
|
||||||
|
"PlantEncyclopediaMessage"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (Element !== null) {
|
||||||
|
Element.textContent =
|
||||||
|
Message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
document.addEventListener(
|
||||||
|
"DOMContentLoaded",
|
||||||
|
StartPlantEncyclopedia
|
||||||
|
);
|
||||||
@@ -1299,3 +1299,179 @@ select {
|
|||||||
height: 3rem;
|
height: 3rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Plant encyclopedia
|
||||||
|
*/
|
||||||
|
|
||||||
|
.PlantEncyclopediaList {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1rem;
|
||||||
|
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaCard {
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
box-shadow: 3px 3px 0 var(--Crust);
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaHeader {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.75rem;
|
||||||
|
|
||||||
|
align-items: baseline;
|
||||||
|
|
||||||
|
padding: 0.75rem 1rem;
|
||||||
|
|
||||||
|
background-color: var(--Surface0);
|
||||||
|
border-bottom: 3px solid var(--Surface2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaHeader h2 {
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
color: var(--Green);
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaNumber {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
|
||||||
|
color: var(--Overlay2);
|
||||||
|
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaBody {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns:
|
||||||
|
7rem
|
||||||
|
minmax(0, 1fr)
|
||||||
|
minmax(10rem, 0.8fr);
|
||||||
|
gap: 1rem;
|
||||||
|
|
||||||
|
padding: 1rem;
|
||||||
|
|
||||||
|
align-items: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaVisual {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
width: 7rem;
|
||||||
|
height: 7rem;
|
||||||
|
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
background-color: var(--Base);
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaMissing {
|
||||||
|
padding: 0.5rem;
|
||||||
|
|
||||||
|
color: var(--Overlay1);
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaDescription {
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaStat {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
gap: 0.75rem;
|
||||||
|
|
||||||
|
padding: 0.35rem 0;
|
||||||
|
|
||||||
|
border-bottom: 2px solid var(--Surface0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaStat:last-child {
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaStatName {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
|
||||||
|
color: var(--Subtext1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaStat > :last-child {
|
||||||
|
min-width: 0;
|
||||||
|
|
||||||
|
text-align: right;
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaRelations {
|
||||||
|
min-width: 0;
|
||||||
|
|
||||||
|
background-color: var(--Base);
|
||||||
|
border: 3px solid var(--Surface2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaRelationGroup {
|
||||||
|
padding: 0.65rem 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaRelationGroup +
|
||||||
|
.PlantEncyclopediaRelationGroup {
|
||||||
|
border-top: 3px solid var(--Surface2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaRelationGroup h3 {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
|
||||||
|
color: var(--Peach);
|
||||||
|
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaRelationList {
|
||||||
|
max-height: 7rem;
|
||||||
|
margin: 0;
|
||||||
|
padding-left: 1.25rem;
|
||||||
|
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaRelationList li {
|
||||||
|
margin-bottom: 0.35rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaRelationList li:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaRelationUnknown,
|
||||||
|
.PlantEncyclopediaRelationEmpty {
|
||||||
|
color: var(--Overlay1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 700px) {
|
||||||
|
.PlantEncyclopediaBody {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaVisual {
|
||||||
|
width: min(8rem, 100%);
|
||||||
|
height: auto;
|
||||||
|
aspect-ratio: 1;
|
||||||
|
|
||||||
|
justify-self: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaStat > :last-child {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PlantEncyclopediaStat {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user