From 74a776cd4f9dbed2f0fa64aaf24cdb152da8ed00 Mon Sep 17 00:00:00 2001 From: Idrees Hassan Date: Sat, 28 Mar 2026 11:48:02 -0700 Subject: [PATCH] Add latin names to the birds --- dist/extension.zip | Bin 158018 -> 158815 bytes dist/extension/birb.js | 73 ++++++++++++++++++++++++++++++++--- dist/obsidian/main.js | 73 ++++++++++++++++++++++++++++++++--- dist/userscript/birb.user.js | 73 ++++++++++++++++++++++++++++++++--- dist/web/birb.embed.js | 73 ++++++++++++++++++++++++++++++++--- dist/web/birb.js | 73 ++++++++++++++++++++++++++++++++--- src/animation/sprites.js | 8 +++- src/application.js | 18 +++++++-- src/species.js | 40 +++++++++++++++++++ src/stylesheet.css | 7 ++++ 10 files changed, 408 insertions(+), 30 deletions(-) diff --git a/dist/extension.zip b/dist/extension.zip index d65dd811ae426df5019e3b8298aea098555d6f97..2a1745bac455f281018e711552916e6763e6fa35 100644 GIT binary patch delta 35516 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

V7E4*GcOqI*z&Cq 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 delta 34583 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 U&}!I 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 Nq=TQxwi!qR{{skiWa0n- diff --git a/dist/extension/birb.js b/dist/extension/birb.js index e209bc1..85b45eb 100644 --- a/dist/extension/birb.js +++ b/dist/extension/birb.js @@ -237,6 +237,8 @@ "bluebird": { "name": "Eastern Bluebird", "description": "Native to North American and very social, though can be timid around people.", + "latinName": "Sialia sialis", + "url": "https://en.wikipedia.org/wiki/Eastern_bluebird", "colors": { "foot": "#af8e75", "face": "#639bff", @@ -249,6 +251,8 @@ "shimaEnaga": { "name": "Shima Enaga", "description": "Small, fluffy birds found in the snowy regions of Japan, these birds are highly sought after by ornithologists and nature photographers.", + "latinName": "Aegithalos caudatus", + "url": "https://en.wikipedia.org/wiki/Long-tailed_tit", "colors": { "foot": "#af8e75", "face": "#ffffff", @@ -262,6 +266,8 @@ "tuftedTitmouse": { "name": "Tufted Titmouse", "description": "Native to the eastern United States, full of personality, and notably my wife's favorite bird.", + "latinName": "Baeolophus bicolor", + "url": "https://en.wikipedia.org/wiki/Tufted_titmouse", "colors": { "foot": "#af8e75", "face": "#c7cad7", @@ -278,6 +284,8 @@ "europeanRobin": { "name": "European Robin", "description": "Native to western Europe, this is the quintessential robin. Quite friendly, you'll often find them searching for worms.", + "latinName": "Erithacus rubecula", + "url": "https://en.wikipedia.org/wiki/European_robin", "colors": { "foot": "#af8e75", "face": "#ffaf34", @@ -292,6 +300,8 @@ "redCardinal": { "name": "Red Cardinal", "description": "Native to the eastern United States, this strikingly red bird is hard to miss.", + "latinName": "Cardinalis cardinalis", + "url": "https://en.wikipedia.org/wiki/Red_cardinal", "colors": { "beak": "#d93619", "foot": "#af8e75", @@ -311,6 +321,8 @@ "americanGoldfinch": { "name": "American Goldfinch", "description": "Coloured a brilliant yellow, this bird feeds almost entirely on the seeds of plants such as thistle, sunflowers, and coneflowers.", + "latinName": "Spinus tristis", + "url": "https://en.wikipedia.org/wiki/American_goldfinch", "colors": { "beak": "#ffaf34", "foot": "#af8e75", @@ -327,6 +339,8 @@ "barnSwallow": { "name": "Barn Swallow", "description": "Agile birds that often roost in man-made structures, these birds are known to build nests near Ospreys for protection.", + "latinName": "Hirundo rustica", + "url": "https://en.wikipedia.org/wiki/Barn_swallow", "colors": { "foot": "#af8e75", "face": "#db7c4d", @@ -340,6 +354,8 @@ "mistletoebird": { "name": "Mistletoebird", "description": "Native to Australia, these birds eat mainly mistletoe and in turn spread the seeds far and wide.", + "latinName": "Dicaeum hirundinaceum", + "url": "https://en.wikipedia.org/wiki/Mistletoebird", "colors": { "foot": "#6c6a7c", "face": "#352e6d", @@ -352,6 +368,8 @@ "scarletRobin": { "name": "Scarlet Robin", "description": "Native to Australia, this striking robin can be found in Eucalyptus forests.", + "latinName": "Petroica boodang", + "url": "https://en.wikipedia.org/wiki/Scarlet_robin", "colors": { "foot": "#494949", "face": "#3d3d3d", @@ -366,6 +384,8 @@ "americanRobin": { "name": "American Robin", "description": "While not a true robin, this social North American bird is so named due to its orange coloring. It seems unbothered by nearby humans.", + "latinName": "Turdus migratorius", + "url": "https://en.wikipedia.org/wiki/American_robin", "colors": { "beak": "#e89f30", "foot": "#9f8075", @@ -380,6 +400,8 @@ "carolinaWren": { "name": "Carolina Wren", "description": "Native to the eastern United States, these little birds are known for their curious and energetic nature.", + "latinName": "Thryothorus ludovicianus", + "url": "https://en.wikipedia.org/wiki/Carolina_wren", "colors": { "foot": "#af8e75", "face": "#edc7a9", @@ -394,6 +416,8 @@ "blackCappedChickadee": { "name": "Black-capped Chickadee", "description": "Native to North America, these small and curious birds are known for their distinctive call from which they get their name.", + "latinName": "Poecile atricapillus", + "url": "https://en.wikipedia.org/wiki/Black-capped_chickadee", "colors": { "hood": "#363636", "cheek": "#363636", @@ -413,6 +437,8 @@ "blueJay": { "name": "Blue Jay", "description": "This loud and rambunctious bird is native to North America and is known for challenging anything in its path.", + "latinName": "Cyanocitta cristata", + "url": "https://en.wikipedia.org/wiki/Blue_jay", "colors": { "foot": "#5a626b", "face": "#ebf2ff", @@ -432,6 +458,8 @@ "darkEyedJunco": { "name": "Dark-eyed Junco", "description": "Native across North America, these social birds will often be seen hopping along the ground in winter.", + "latinName": "Junco hyemalis", + "url": "https://en.wikipedia.org/wiki/Dark-eyed_junco", "colors": { "face": "#55565e", "wing": "#5c5f69", @@ -445,6 +473,8 @@ "houseFinch": { "name": "House Finch", "description": "Native to North America, these highly social birds sing cheerful songs and are often seen at bird feeders.", + "latinName": "Haemorhous mexicanus", + "url": "https://en.wikipedia.org/wiki/House_finch", "colors": { "face": "#cc3a3f", "wing": "#ae8e78", @@ -461,6 +491,8 @@ "pigeon": { "name": "Pigeon", "description": "Descended from the Rock Dove, these once domesticated birds are often found in cities worldwide. Quite friendly and intelligent, they were favored companions of Nikola Tesla.", + "latinName": "Columba livia", + "url": "https://en.wikipedia.org/wiki/Rock_dove", "colors": { "foot": "#ef6e5b", "face": "#5a6c91", @@ -474,6 +506,8 @@ "redAvadavat": { "name": "Red Avadavat", "description": "Native to India and southeast Asia, these birds are also known as Strawberry Finches due to their speckled plumage.", + "latinName": "Amandava amandava", + "url": "https://en.wikipedia.org/wiki/Red_avadavat", "colors": { "beak": "#f71919", "foot": "#af7575", @@ -489,6 +523,8 @@ "pinkRobin": { "name": "Pink Robin", "description": "Native to Australia, these bubblegum-pink puffballs are quieter than most, instead relying on their vibrant colours to attract partners.", + "latinName": "Petroica rodinogaster", + "url": "https://en.wikipedia.org/wiki/Pink_robin", "colors": { "face": "#403a46", "wing": "#38333d", @@ -503,6 +539,8 @@ "redWarbler": { "name": "Red Warbler", "description": "Endemic to the highlands of Mexico, this bird has the rare distinction of being one of the very few toxic birds in the world.", + "latinName": "Cardellina rubra", + "url": "https://en.wikipedia.org/wiki/Red_warbler", "colors": { "face": "#e80a28", "belly": "#d90921", @@ -522,6 +560,8 @@ "elegantEuphonia": { "name": "Elegant Euphonia", "description": "This vividly coloured finch is found throughout Central America and is known for the distinctive blue hood that crowns its head.", + "latinName": "Chlorophonia elegantissima", + "url": "https://en.wikipedia.org/wiki/Elegant_euphonia", "colors": { "wing": "#101480", "wing-edge": "#070956", @@ -649,13 +689,17 @@ /** * @param {string} name * @param {string} description + * @param {string} latinName + * @param {string} url * @param {Record} colors * @param {string[]} [tags] * @param {Rarity} [rarity] */ - constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { + constructor(name, description, latinName, url, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; + this.latinName = latinName; + this.url = url; const defaultColors = { [PALETTE.TRANSPARENT]: "transparent", [PALETTE.OUTLINE]: "#000000", @@ -749,7 +793,7 @@ const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) + new BirdType(data.name, data.description, data.latinName, data.url, data.colors, data.tags, data.rarity) ]), ); @@ -2329,6 +2373,13 @@ color: #7c6c4b; } +.birb-field-guide-latin-name { + text-decoration: underline; + font-style: italic; + font-weight: bold; + color: inherit; +} + #birb-feather { cursor: pointer; } @@ -3097,14 +3148,26 @@ const boldName = document.createElement("b"); boldName.textContent = type.name; - const spacer = document.createElement("div"); - spacer.style.height = "0.3em"; + + const spacerOne = document.createElement("div"); + spacerOne.style.height = "0.3em"; + + const latinName = document.createElement("a"); + latinName.className = "birb-field-guide-latin-name"; + latinName.textContent = type.latinName; + latinName.href = type.url; + latinName.target = "_blank"; + + const spacerTwo = document.createElement("div"); + spacerTwo.style.height = "0.3em"; const descText = document.createTextNode(!unlocked ? "Not yet unlocked" : type.description); const fragment = document.createDocumentFragment(); fragment.appendChild(boldName); - fragment.appendChild(spacer); + fragment.appendChild(spacerOne); + fragment.appendChild(latinName); + fragment.appendChild(spacerTwo); fragment.appendChild(descText); return fragment; diff --git a/dist/obsidian/main.js b/dist/obsidian/main.js index dd63d44..0f1b29b 100644 --- a/dist/obsidian/main.js +++ b/dist/obsidian/main.js @@ -242,6 +242,8 @@ module.exports = class PocketBird extends Plugin { "bluebird": { "name": "Eastern Bluebird", "description": "Native to North American and very social, though can be timid around people.", + "latinName": "Sialia sialis", + "url": "https://en.wikipedia.org/wiki/Eastern_bluebird", "colors": { "foot": "#af8e75", "face": "#639bff", @@ -254,6 +256,8 @@ module.exports = class PocketBird extends Plugin { "shimaEnaga": { "name": "Shima Enaga", "description": "Small, fluffy birds found in the snowy regions of Japan, these birds are highly sought after by ornithologists and nature photographers.", + "latinName": "Aegithalos caudatus", + "url": "https://en.wikipedia.org/wiki/Long-tailed_tit", "colors": { "foot": "#af8e75", "face": "#ffffff", @@ -267,6 +271,8 @@ module.exports = class PocketBird extends Plugin { "tuftedTitmouse": { "name": "Tufted Titmouse", "description": "Native to the eastern United States, full of personality, and notably my wife's favorite bird.", + "latinName": "Baeolophus bicolor", + "url": "https://en.wikipedia.org/wiki/Tufted_titmouse", "colors": { "foot": "#af8e75", "face": "#c7cad7", @@ -283,6 +289,8 @@ module.exports = class PocketBird extends Plugin { "europeanRobin": { "name": "European Robin", "description": "Native to western Europe, this is the quintessential robin. Quite friendly, you'll often find them searching for worms.", + "latinName": "Erithacus rubecula", + "url": "https://en.wikipedia.org/wiki/European_robin", "colors": { "foot": "#af8e75", "face": "#ffaf34", @@ -297,6 +305,8 @@ module.exports = class PocketBird extends Plugin { "redCardinal": { "name": "Red Cardinal", "description": "Native to the eastern United States, this strikingly red bird is hard to miss.", + "latinName": "Cardinalis cardinalis", + "url": "https://en.wikipedia.org/wiki/Red_cardinal", "colors": { "beak": "#d93619", "foot": "#af8e75", @@ -316,6 +326,8 @@ module.exports = class PocketBird extends Plugin { "americanGoldfinch": { "name": "American Goldfinch", "description": "Coloured a brilliant yellow, this bird feeds almost entirely on the seeds of plants such as thistle, sunflowers, and coneflowers.", + "latinName": "Spinus tristis", + "url": "https://en.wikipedia.org/wiki/American_goldfinch", "colors": { "beak": "#ffaf34", "foot": "#af8e75", @@ -332,6 +344,8 @@ module.exports = class PocketBird extends Plugin { "barnSwallow": { "name": "Barn Swallow", "description": "Agile birds that often roost in man-made structures, these birds are known to build nests near Ospreys for protection.", + "latinName": "Hirundo rustica", + "url": "https://en.wikipedia.org/wiki/Barn_swallow", "colors": { "foot": "#af8e75", "face": "#db7c4d", @@ -345,6 +359,8 @@ module.exports = class PocketBird extends Plugin { "mistletoebird": { "name": "Mistletoebird", "description": "Native to Australia, these birds eat mainly mistletoe and in turn spread the seeds far and wide.", + "latinName": "Dicaeum hirundinaceum", + "url": "https://en.wikipedia.org/wiki/Mistletoebird", "colors": { "foot": "#6c6a7c", "face": "#352e6d", @@ -357,6 +373,8 @@ module.exports = class PocketBird extends Plugin { "scarletRobin": { "name": "Scarlet Robin", "description": "Native to Australia, this striking robin can be found in Eucalyptus forests.", + "latinName": "Petroica boodang", + "url": "https://en.wikipedia.org/wiki/Scarlet_robin", "colors": { "foot": "#494949", "face": "#3d3d3d", @@ -371,6 +389,8 @@ module.exports = class PocketBird extends Plugin { "americanRobin": { "name": "American Robin", "description": "While not a true robin, this social North American bird is so named due to its orange coloring. It seems unbothered by nearby humans.", + "latinName": "Turdus migratorius", + "url": "https://en.wikipedia.org/wiki/American_robin", "colors": { "beak": "#e89f30", "foot": "#9f8075", @@ -385,6 +405,8 @@ module.exports = class PocketBird extends Plugin { "carolinaWren": { "name": "Carolina Wren", "description": "Native to the eastern United States, these little birds are known for their curious and energetic nature.", + "latinName": "Thryothorus ludovicianus", + "url": "https://en.wikipedia.org/wiki/Carolina_wren", "colors": { "foot": "#af8e75", "face": "#edc7a9", @@ -399,6 +421,8 @@ module.exports = class PocketBird extends Plugin { "blackCappedChickadee": { "name": "Black-capped Chickadee", "description": "Native to North America, these small and curious birds are known for their distinctive call from which they get their name.", + "latinName": "Poecile atricapillus", + "url": "https://en.wikipedia.org/wiki/Black-capped_chickadee", "colors": { "hood": "#363636", "cheek": "#363636", @@ -418,6 +442,8 @@ module.exports = class PocketBird extends Plugin { "blueJay": { "name": "Blue Jay", "description": "This loud and rambunctious bird is native to North America and is known for challenging anything in its path.", + "latinName": "Cyanocitta cristata", + "url": "https://en.wikipedia.org/wiki/Blue_jay", "colors": { "foot": "#5a626b", "face": "#ebf2ff", @@ -437,6 +463,8 @@ module.exports = class PocketBird extends Plugin { "darkEyedJunco": { "name": "Dark-eyed Junco", "description": "Native across North America, these social birds will often be seen hopping along the ground in winter.", + "latinName": "Junco hyemalis", + "url": "https://en.wikipedia.org/wiki/Dark-eyed_junco", "colors": { "face": "#55565e", "wing": "#5c5f69", @@ -450,6 +478,8 @@ module.exports = class PocketBird extends Plugin { "houseFinch": { "name": "House Finch", "description": "Native to North America, these highly social birds sing cheerful songs and are often seen at bird feeders.", + "latinName": "Haemorhous mexicanus", + "url": "https://en.wikipedia.org/wiki/House_finch", "colors": { "face": "#cc3a3f", "wing": "#ae8e78", @@ -466,6 +496,8 @@ module.exports = class PocketBird extends Plugin { "pigeon": { "name": "Pigeon", "description": "Descended from the Rock Dove, these once domesticated birds are often found in cities worldwide. Quite friendly and intelligent, they were favored companions of Nikola Tesla.", + "latinName": "Columba livia", + "url": "https://en.wikipedia.org/wiki/Rock_dove", "colors": { "foot": "#ef6e5b", "face": "#5a6c91", @@ -479,6 +511,8 @@ module.exports = class PocketBird extends Plugin { "redAvadavat": { "name": "Red Avadavat", "description": "Native to India and southeast Asia, these birds are also known as Strawberry Finches due to their speckled plumage.", + "latinName": "Amandava amandava", + "url": "https://en.wikipedia.org/wiki/Red_avadavat", "colors": { "beak": "#f71919", "foot": "#af7575", @@ -494,6 +528,8 @@ module.exports = class PocketBird extends Plugin { "pinkRobin": { "name": "Pink Robin", "description": "Native to Australia, these bubblegum-pink puffballs are quieter than most, instead relying on their vibrant colours to attract partners.", + "latinName": "Petroica rodinogaster", + "url": "https://en.wikipedia.org/wiki/Pink_robin", "colors": { "face": "#403a46", "wing": "#38333d", @@ -508,6 +544,8 @@ module.exports = class PocketBird extends Plugin { "redWarbler": { "name": "Red Warbler", "description": "Endemic to the highlands of Mexico, this bird has the rare distinction of being one of the very few toxic birds in the world.", + "latinName": "Cardellina rubra", + "url": "https://en.wikipedia.org/wiki/Red_warbler", "colors": { "face": "#e80a28", "belly": "#d90921", @@ -527,6 +565,8 @@ module.exports = class PocketBird extends Plugin { "elegantEuphonia": { "name": "Elegant Euphonia", "description": "This vividly coloured finch is found throughout Central America and is known for the distinctive blue hood that crowns its head.", + "latinName": "Chlorophonia elegantissima", + "url": "https://en.wikipedia.org/wiki/Elegant_euphonia", "colors": { "wing": "#101480", "wing-edge": "#070956", @@ -654,13 +694,17 @@ module.exports = class PocketBird extends Plugin { /** * @param {string} name * @param {string} description + * @param {string} latinName + * @param {string} url * @param {Record} colors * @param {string[]} [tags] * @param {Rarity} [rarity] */ - constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { + constructor(name, description, latinName, url, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; + this.latinName = latinName; + this.url = url; const defaultColors = { [PALETTE.TRANSPARENT]: "transparent", [PALETTE.OUTLINE]: "#000000", @@ -754,7 +798,7 @@ module.exports = class PocketBird extends Plugin { const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) + new BirdType(data.name, data.description, data.latinName, data.url, data.colors, data.tags, data.rarity) ]), ); @@ -2362,6 +2406,13 @@ module.exports = class PocketBird extends Plugin { color: #7c6c4b; } +.birb-field-guide-latin-name { + text-decoration: underline; + font-style: italic; + font-weight: bold; + color: inherit; +} + #birb-feather { cursor: pointer; } @@ -3130,14 +3181,26 @@ module.exports = class PocketBird extends Plugin { const boldName = document.createElement("b"); boldName.textContent = type.name; - const spacer = document.createElement("div"); - spacer.style.height = "0.3em"; + + const spacerOne = document.createElement("div"); + spacerOne.style.height = "0.3em"; + + const latinName = document.createElement("a"); + latinName.className = "birb-field-guide-latin-name"; + latinName.textContent = type.latinName; + latinName.href = type.url; + latinName.target = "_blank"; + + const spacerTwo = document.createElement("div"); + spacerTwo.style.height = "0.3em"; const descText = document.createTextNode(!unlocked ? "Not yet unlocked" : type.description); const fragment = document.createDocumentFragment(); fragment.appendChild(boldName); - fragment.appendChild(spacer); + fragment.appendChild(spacerOne); + fragment.appendChild(latinName); + fragment.appendChild(spacerTwo); fragment.appendChild(descText); return fragment; diff --git a/dist/userscript/birb.user.js b/dist/userscript/birb.user.js index 5dab9c9..802917c 100644 --- a/dist/userscript/birb.user.js +++ b/dist/userscript/birb.user.js @@ -251,6 +251,8 @@ "bluebird": { "name": "Eastern Bluebird", "description": "Native to North American and very social, though can be timid around people.", + "latinName": "Sialia sialis", + "url": "https://en.wikipedia.org/wiki/Eastern_bluebird", "colors": { "foot": "#af8e75", "face": "#639bff", @@ -263,6 +265,8 @@ "shimaEnaga": { "name": "Shima Enaga", "description": "Small, fluffy birds found in the snowy regions of Japan, these birds are highly sought after by ornithologists and nature photographers.", + "latinName": "Aegithalos caudatus", + "url": "https://en.wikipedia.org/wiki/Long-tailed_tit", "colors": { "foot": "#af8e75", "face": "#ffffff", @@ -276,6 +280,8 @@ "tuftedTitmouse": { "name": "Tufted Titmouse", "description": "Native to the eastern United States, full of personality, and notably my wife's favorite bird.", + "latinName": "Baeolophus bicolor", + "url": "https://en.wikipedia.org/wiki/Tufted_titmouse", "colors": { "foot": "#af8e75", "face": "#c7cad7", @@ -292,6 +298,8 @@ "europeanRobin": { "name": "European Robin", "description": "Native to western Europe, this is the quintessential robin. Quite friendly, you'll often find them searching for worms.", + "latinName": "Erithacus rubecula", + "url": "https://en.wikipedia.org/wiki/European_robin", "colors": { "foot": "#af8e75", "face": "#ffaf34", @@ -306,6 +314,8 @@ "redCardinal": { "name": "Red Cardinal", "description": "Native to the eastern United States, this strikingly red bird is hard to miss.", + "latinName": "Cardinalis cardinalis", + "url": "https://en.wikipedia.org/wiki/Red_cardinal", "colors": { "beak": "#d93619", "foot": "#af8e75", @@ -325,6 +335,8 @@ "americanGoldfinch": { "name": "American Goldfinch", "description": "Coloured a brilliant yellow, this bird feeds almost entirely on the seeds of plants such as thistle, sunflowers, and coneflowers.", + "latinName": "Spinus tristis", + "url": "https://en.wikipedia.org/wiki/American_goldfinch", "colors": { "beak": "#ffaf34", "foot": "#af8e75", @@ -341,6 +353,8 @@ "barnSwallow": { "name": "Barn Swallow", "description": "Agile birds that often roost in man-made structures, these birds are known to build nests near Ospreys for protection.", + "latinName": "Hirundo rustica", + "url": "https://en.wikipedia.org/wiki/Barn_swallow", "colors": { "foot": "#af8e75", "face": "#db7c4d", @@ -354,6 +368,8 @@ "mistletoebird": { "name": "Mistletoebird", "description": "Native to Australia, these birds eat mainly mistletoe and in turn spread the seeds far and wide.", + "latinName": "Dicaeum hirundinaceum", + "url": "https://en.wikipedia.org/wiki/Mistletoebird", "colors": { "foot": "#6c6a7c", "face": "#352e6d", @@ -366,6 +382,8 @@ "scarletRobin": { "name": "Scarlet Robin", "description": "Native to Australia, this striking robin can be found in Eucalyptus forests.", + "latinName": "Petroica boodang", + "url": "https://en.wikipedia.org/wiki/Scarlet_robin", "colors": { "foot": "#494949", "face": "#3d3d3d", @@ -380,6 +398,8 @@ "americanRobin": { "name": "American Robin", "description": "While not a true robin, this social North American bird is so named due to its orange coloring. It seems unbothered by nearby humans.", + "latinName": "Turdus migratorius", + "url": "https://en.wikipedia.org/wiki/American_robin", "colors": { "beak": "#e89f30", "foot": "#9f8075", @@ -394,6 +414,8 @@ "carolinaWren": { "name": "Carolina Wren", "description": "Native to the eastern United States, these little birds are known for their curious and energetic nature.", + "latinName": "Thryothorus ludovicianus", + "url": "https://en.wikipedia.org/wiki/Carolina_wren", "colors": { "foot": "#af8e75", "face": "#edc7a9", @@ -408,6 +430,8 @@ "blackCappedChickadee": { "name": "Black-capped Chickadee", "description": "Native to North America, these small and curious birds are known for their distinctive call from which they get their name.", + "latinName": "Poecile atricapillus", + "url": "https://en.wikipedia.org/wiki/Black-capped_chickadee", "colors": { "hood": "#363636", "cheek": "#363636", @@ -427,6 +451,8 @@ "blueJay": { "name": "Blue Jay", "description": "This loud and rambunctious bird is native to North America and is known for challenging anything in its path.", + "latinName": "Cyanocitta cristata", + "url": "https://en.wikipedia.org/wiki/Blue_jay", "colors": { "foot": "#5a626b", "face": "#ebf2ff", @@ -446,6 +472,8 @@ "darkEyedJunco": { "name": "Dark-eyed Junco", "description": "Native across North America, these social birds will often be seen hopping along the ground in winter.", + "latinName": "Junco hyemalis", + "url": "https://en.wikipedia.org/wiki/Dark-eyed_junco", "colors": { "face": "#55565e", "wing": "#5c5f69", @@ -459,6 +487,8 @@ "houseFinch": { "name": "House Finch", "description": "Native to North America, these highly social birds sing cheerful songs and are often seen at bird feeders.", + "latinName": "Haemorhous mexicanus", + "url": "https://en.wikipedia.org/wiki/House_finch", "colors": { "face": "#cc3a3f", "wing": "#ae8e78", @@ -475,6 +505,8 @@ "pigeon": { "name": "Pigeon", "description": "Descended from the Rock Dove, these once domesticated birds are often found in cities worldwide. Quite friendly and intelligent, they were favored companions of Nikola Tesla.", + "latinName": "Columba livia", + "url": "https://en.wikipedia.org/wiki/Rock_dove", "colors": { "foot": "#ef6e5b", "face": "#5a6c91", @@ -488,6 +520,8 @@ "redAvadavat": { "name": "Red Avadavat", "description": "Native to India and southeast Asia, these birds are also known as Strawberry Finches due to their speckled plumage.", + "latinName": "Amandava amandava", + "url": "https://en.wikipedia.org/wiki/Red_avadavat", "colors": { "beak": "#f71919", "foot": "#af7575", @@ -503,6 +537,8 @@ "pinkRobin": { "name": "Pink Robin", "description": "Native to Australia, these bubblegum-pink puffballs are quieter than most, instead relying on their vibrant colours to attract partners.", + "latinName": "Petroica rodinogaster", + "url": "https://en.wikipedia.org/wiki/Pink_robin", "colors": { "face": "#403a46", "wing": "#38333d", @@ -517,6 +553,8 @@ "redWarbler": { "name": "Red Warbler", "description": "Endemic to the highlands of Mexico, this bird has the rare distinction of being one of the very few toxic birds in the world.", + "latinName": "Cardellina rubra", + "url": "https://en.wikipedia.org/wiki/Red_warbler", "colors": { "face": "#e80a28", "belly": "#d90921", @@ -536,6 +574,8 @@ "elegantEuphonia": { "name": "Elegant Euphonia", "description": "This vividly coloured finch is found throughout Central America and is known for the distinctive blue hood that crowns its head.", + "latinName": "Chlorophonia elegantissima", + "url": "https://en.wikipedia.org/wiki/Elegant_euphonia", "colors": { "wing": "#101480", "wing-edge": "#070956", @@ -663,13 +703,17 @@ /** * @param {string} name * @param {string} description + * @param {string} latinName + * @param {string} url * @param {Record} colors * @param {string[]} [tags] * @param {Rarity} [rarity] */ - constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { + constructor(name, description, latinName, url, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; + this.latinName = latinName; + this.url = url; const defaultColors = { [PALETTE.TRANSPARENT]: "transparent", [PALETTE.OUTLINE]: "#000000", @@ -763,7 +807,7 @@ const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) + new BirdType(data.name, data.description, data.latinName, data.url, data.colors, data.tags, data.rarity) ]), ); @@ -2324,6 +2368,13 @@ color: #7c6c4b; } +.birb-field-guide-latin-name { + text-decoration: underline; + font-style: italic; + font-weight: bold; + color: inherit; +} + #birb-feather { cursor: pointer; } @@ -3092,14 +3143,26 @@ const boldName = document.createElement("b"); boldName.textContent = type.name; - const spacer = document.createElement("div"); - spacer.style.height = "0.3em"; + + const spacerOne = document.createElement("div"); + spacerOne.style.height = "0.3em"; + + const latinName = document.createElement("a"); + latinName.className = "birb-field-guide-latin-name"; + latinName.textContent = type.latinName; + latinName.href = type.url; + latinName.target = "_blank"; + + const spacerTwo = document.createElement("div"); + spacerTwo.style.height = "0.3em"; const descText = document.createTextNode(!unlocked ? "Not yet unlocked" : type.description); const fragment = document.createDocumentFragment(); fragment.appendChild(boldName); - fragment.appendChild(spacer); + fragment.appendChild(spacerOne); + fragment.appendChild(latinName); + fragment.appendChild(spacerTwo); fragment.appendChild(descText); return fragment; diff --git a/dist/web/birb.embed.js b/dist/web/birb.embed.js index 0601a6f..5427a04 100644 --- a/dist/web/birb.embed.js +++ b/dist/web/birb.embed.js @@ -237,6 +237,8 @@ "bluebird": { "name": "Eastern Bluebird", "description": "Native to North American and very social, though can be timid around people.", + "latinName": "Sialia sialis", + "url": "https://en.wikipedia.org/wiki/Eastern_bluebird", "colors": { "foot": "#af8e75", "face": "#639bff", @@ -249,6 +251,8 @@ "shimaEnaga": { "name": "Shima Enaga", "description": "Small, fluffy birds found in the snowy regions of Japan, these birds are highly sought after by ornithologists and nature photographers.", + "latinName": "Aegithalos caudatus", + "url": "https://en.wikipedia.org/wiki/Long-tailed_tit", "colors": { "foot": "#af8e75", "face": "#ffffff", @@ -262,6 +266,8 @@ "tuftedTitmouse": { "name": "Tufted Titmouse", "description": "Native to the eastern United States, full of personality, and notably my wife's favorite bird.", + "latinName": "Baeolophus bicolor", + "url": "https://en.wikipedia.org/wiki/Tufted_titmouse", "colors": { "foot": "#af8e75", "face": "#c7cad7", @@ -278,6 +284,8 @@ "europeanRobin": { "name": "European Robin", "description": "Native to western Europe, this is the quintessential robin. Quite friendly, you'll often find them searching for worms.", + "latinName": "Erithacus rubecula", + "url": "https://en.wikipedia.org/wiki/European_robin", "colors": { "foot": "#af8e75", "face": "#ffaf34", @@ -292,6 +300,8 @@ "redCardinal": { "name": "Red Cardinal", "description": "Native to the eastern United States, this strikingly red bird is hard to miss.", + "latinName": "Cardinalis cardinalis", + "url": "https://en.wikipedia.org/wiki/Red_cardinal", "colors": { "beak": "#d93619", "foot": "#af8e75", @@ -311,6 +321,8 @@ "americanGoldfinch": { "name": "American Goldfinch", "description": "Coloured a brilliant yellow, this bird feeds almost entirely on the seeds of plants such as thistle, sunflowers, and coneflowers.", + "latinName": "Spinus tristis", + "url": "https://en.wikipedia.org/wiki/American_goldfinch", "colors": { "beak": "#ffaf34", "foot": "#af8e75", @@ -327,6 +339,8 @@ "barnSwallow": { "name": "Barn Swallow", "description": "Agile birds that often roost in man-made structures, these birds are known to build nests near Ospreys for protection.", + "latinName": "Hirundo rustica", + "url": "https://en.wikipedia.org/wiki/Barn_swallow", "colors": { "foot": "#af8e75", "face": "#db7c4d", @@ -340,6 +354,8 @@ "mistletoebird": { "name": "Mistletoebird", "description": "Native to Australia, these birds eat mainly mistletoe and in turn spread the seeds far and wide.", + "latinName": "Dicaeum hirundinaceum", + "url": "https://en.wikipedia.org/wiki/Mistletoebird", "colors": { "foot": "#6c6a7c", "face": "#352e6d", @@ -352,6 +368,8 @@ "scarletRobin": { "name": "Scarlet Robin", "description": "Native to Australia, this striking robin can be found in Eucalyptus forests.", + "latinName": "Petroica boodang", + "url": "https://en.wikipedia.org/wiki/Scarlet_robin", "colors": { "foot": "#494949", "face": "#3d3d3d", @@ -366,6 +384,8 @@ "americanRobin": { "name": "American Robin", "description": "While not a true robin, this social North American bird is so named due to its orange coloring. It seems unbothered by nearby humans.", + "latinName": "Turdus migratorius", + "url": "https://en.wikipedia.org/wiki/American_robin", "colors": { "beak": "#e89f30", "foot": "#9f8075", @@ -380,6 +400,8 @@ "carolinaWren": { "name": "Carolina Wren", "description": "Native to the eastern United States, these little birds are known for their curious and energetic nature.", + "latinName": "Thryothorus ludovicianus", + "url": "https://en.wikipedia.org/wiki/Carolina_wren", "colors": { "foot": "#af8e75", "face": "#edc7a9", @@ -394,6 +416,8 @@ "blackCappedChickadee": { "name": "Black-capped Chickadee", "description": "Native to North America, these small and curious birds are known for their distinctive call from which they get their name.", + "latinName": "Poecile atricapillus", + "url": "https://en.wikipedia.org/wiki/Black-capped_chickadee", "colors": { "hood": "#363636", "cheek": "#363636", @@ -413,6 +437,8 @@ "blueJay": { "name": "Blue Jay", "description": "This loud and rambunctious bird is native to North America and is known for challenging anything in its path.", + "latinName": "Cyanocitta cristata", + "url": "https://en.wikipedia.org/wiki/Blue_jay", "colors": { "foot": "#5a626b", "face": "#ebf2ff", @@ -432,6 +458,8 @@ "darkEyedJunco": { "name": "Dark-eyed Junco", "description": "Native across North America, these social birds will often be seen hopping along the ground in winter.", + "latinName": "Junco hyemalis", + "url": "https://en.wikipedia.org/wiki/Dark-eyed_junco", "colors": { "face": "#55565e", "wing": "#5c5f69", @@ -445,6 +473,8 @@ "houseFinch": { "name": "House Finch", "description": "Native to North America, these highly social birds sing cheerful songs and are often seen at bird feeders.", + "latinName": "Haemorhous mexicanus", + "url": "https://en.wikipedia.org/wiki/House_finch", "colors": { "face": "#cc3a3f", "wing": "#ae8e78", @@ -461,6 +491,8 @@ "pigeon": { "name": "Pigeon", "description": "Descended from the Rock Dove, these once domesticated birds are often found in cities worldwide. Quite friendly and intelligent, they were favored companions of Nikola Tesla.", + "latinName": "Columba livia", + "url": "https://en.wikipedia.org/wiki/Rock_dove", "colors": { "foot": "#ef6e5b", "face": "#5a6c91", @@ -474,6 +506,8 @@ "redAvadavat": { "name": "Red Avadavat", "description": "Native to India and southeast Asia, these birds are also known as Strawberry Finches due to their speckled plumage.", + "latinName": "Amandava amandava", + "url": "https://en.wikipedia.org/wiki/Red_avadavat", "colors": { "beak": "#f71919", "foot": "#af7575", @@ -489,6 +523,8 @@ "pinkRobin": { "name": "Pink Robin", "description": "Native to Australia, these bubblegum-pink puffballs are quieter than most, instead relying on their vibrant colours to attract partners.", + "latinName": "Petroica rodinogaster", + "url": "https://en.wikipedia.org/wiki/Pink_robin", "colors": { "face": "#403a46", "wing": "#38333d", @@ -503,6 +539,8 @@ "redWarbler": { "name": "Red Warbler", "description": "Endemic to the highlands of Mexico, this bird has the rare distinction of being one of the very few toxic birds in the world.", + "latinName": "Cardellina rubra", + "url": "https://en.wikipedia.org/wiki/Red_warbler", "colors": { "face": "#e80a28", "belly": "#d90921", @@ -522,6 +560,8 @@ "elegantEuphonia": { "name": "Elegant Euphonia", "description": "This vividly coloured finch is found throughout Central America and is known for the distinctive blue hood that crowns its head.", + "latinName": "Chlorophonia elegantissima", + "url": "https://en.wikipedia.org/wiki/Elegant_euphonia", "colors": { "wing": "#101480", "wing-edge": "#070956", @@ -649,13 +689,17 @@ /** * @param {string} name * @param {string} description + * @param {string} latinName + * @param {string} url * @param {Record} colors * @param {string[]} [tags] * @param {Rarity} [rarity] */ - constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { + constructor(name, description, latinName, url, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; + this.latinName = latinName; + this.url = url; const defaultColors = { [PALETTE.TRANSPARENT]: "transparent", [PALETTE.OUTLINE]: "#000000", @@ -749,7 +793,7 @@ const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) + new BirdType(data.name, data.description, data.latinName, data.url, data.colors, data.tags, data.rarity) ]), ); @@ -2304,6 +2348,13 @@ color: #7c6c4b; } +.birb-field-guide-latin-name { + text-decoration: underline; + font-style: italic; + font-weight: bold; + color: inherit; +} + #birb-feather { cursor: pointer; } @@ -3072,14 +3123,26 @@ const boldName = document.createElement("b"); boldName.textContent = type.name; - const spacer = document.createElement("div"); - spacer.style.height = "0.3em"; + + const spacerOne = document.createElement("div"); + spacerOne.style.height = "0.3em"; + + const latinName = document.createElement("a"); + latinName.className = "birb-field-guide-latin-name"; + latinName.textContent = type.latinName; + latinName.href = type.url; + latinName.target = "_blank"; + + const spacerTwo = document.createElement("div"); + spacerTwo.style.height = "0.3em"; const descText = document.createTextNode(!unlocked ? "Not yet unlocked" : type.description); const fragment = document.createDocumentFragment(); fragment.appendChild(boldName); - fragment.appendChild(spacer); + fragment.appendChild(spacerOne); + fragment.appendChild(latinName); + fragment.appendChild(spacerTwo); fragment.appendChild(descText); return fragment; diff --git a/dist/web/birb.js b/dist/web/birb.js index 0601a6f..5427a04 100644 --- a/dist/web/birb.js +++ b/dist/web/birb.js @@ -237,6 +237,8 @@ "bluebird": { "name": "Eastern Bluebird", "description": "Native to North American and very social, though can be timid around people.", + "latinName": "Sialia sialis", + "url": "https://en.wikipedia.org/wiki/Eastern_bluebird", "colors": { "foot": "#af8e75", "face": "#639bff", @@ -249,6 +251,8 @@ "shimaEnaga": { "name": "Shima Enaga", "description": "Small, fluffy birds found in the snowy regions of Japan, these birds are highly sought after by ornithologists and nature photographers.", + "latinName": "Aegithalos caudatus", + "url": "https://en.wikipedia.org/wiki/Long-tailed_tit", "colors": { "foot": "#af8e75", "face": "#ffffff", @@ -262,6 +266,8 @@ "tuftedTitmouse": { "name": "Tufted Titmouse", "description": "Native to the eastern United States, full of personality, and notably my wife's favorite bird.", + "latinName": "Baeolophus bicolor", + "url": "https://en.wikipedia.org/wiki/Tufted_titmouse", "colors": { "foot": "#af8e75", "face": "#c7cad7", @@ -278,6 +284,8 @@ "europeanRobin": { "name": "European Robin", "description": "Native to western Europe, this is the quintessential robin. Quite friendly, you'll often find them searching for worms.", + "latinName": "Erithacus rubecula", + "url": "https://en.wikipedia.org/wiki/European_robin", "colors": { "foot": "#af8e75", "face": "#ffaf34", @@ -292,6 +300,8 @@ "redCardinal": { "name": "Red Cardinal", "description": "Native to the eastern United States, this strikingly red bird is hard to miss.", + "latinName": "Cardinalis cardinalis", + "url": "https://en.wikipedia.org/wiki/Red_cardinal", "colors": { "beak": "#d93619", "foot": "#af8e75", @@ -311,6 +321,8 @@ "americanGoldfinch": { "name": "American Goldfinch", "description": "Coloured a brilliant yellow, this bird feeds almost entirely on the seeds of plants such as thistle, sunflowers, and coneflowers.", + "latinName": "Spinus tristis", + "url": "https://en.wikipedia.org/wiki/American_goldfinch", "colors": { "beak": "#ffaf34", "foot": "#af8e75", @@ -327,6 +339,8 @@ "barnSwallow": { "name": "Barn Swallow", "description": "Agile birds that often roost in man-made structures, these birds are known to build nests near Ospreys for protection.", + "latinName": "Hirundo rustica", + "url": "https://en.wikipedia.org/wiki/Barn_swallow", "colors": { "foot": "#af8e75", "face": "#db7c4d", @@ -340,6 +354,8 @@ "mistletoebird": { "name": "Mistletoebird", "description": "Native to Australia, these birds eat mainly mistletoe and in turn spread the seeds far and wide.", + "latinName": "Dicaeum hirundinaceum", + "url": "https://en.wikipedia.org/wiki/Mistletoebird", "colors": { "foot": "#6c6a7c", "face": "#352e6d", @@ -352,6 +368,8 @@ "scarletRobin": { "name": "Scarlet Robin", "description": "Native to Australia, this striking robin can be found in Eucalyptus forests.", + "latinName": "Petroica boodang", + "url": "https://en.wikipedia.org/wiki/Scarlet_robin", "colors": { "foot": "#494949", "face": "#3d3d3d", @@ -366,6 +384,8 @@ "americanRobin": { "name": "American Robin", "description": "While not a true robin, this social North American bird is so named due to its orange coloring. It seems unbothered by nearby humans.", + "latinName": "Turdus migratorius", + "url": "https://en.wikipedia.org/wiki/American_robin", "colors": { "beak": "#e89f30", "foot": "#9f8075", @@ -380,6 +400,8 @@ "carolinaWren": { "name": "Carolina Wren", "description": "Native to the eastern United States, these little birds are known for their curious and energetic nature.", + "latinName": "Thryothorus ludovicianus", + "url": "https://en.wikipedia.org/wiki/Carolina_wren", "colors": { "foot": "#af8e75", "face": "#edc7a9", @@ -394,6 +416,8 @@ "blackCappedChickadee": { "name": "Black-capped Chickadee", "description": "Native to North America, these small and curious birds are known for their distinctive call from which they get their name.", + "latinName": "Poecile atricapillus", + "url": "https://en.wikipedia.org/wiki/Black-capped_chickadee", "colors": { "hood": "#363636", "cheek": "#363636", @@ -413,6 +437,8 @@ "blueJay": { "name": "Blue Jay", "description": "This loud and rambunctious bird is native to North America and is known for challenging anything in its path.", + "latinName": "Cyanocitta cristata", + "url": "https://en.wikipedia.org/wiki/Blue_jay", "colors": { "foot": "#5a626b", "face": "#ebf2ff", @@ -432,6 +458,8 @@ "darkEyedJunco": { "name": "Dark-eyed Junco", "description": "Native across North America, these social birds will often be seen hopping along the ground in winter.", + "latinName": "Junco hyemalis", + "url": "https://en.wikipedia.org/wiki/Dark-eyed_junco", "colors": { "face": "#55565e", "wing": "#5c5f69", @@ -445,6 +473,8 @@ "houseFinch": { "name": "House Finch", "description": "Native to North America, these highly social birds sing cheerful songs and are often seen at bird feeders.", + "latinName": "Haemorhous mexicanus", + "url": "https://en.wikipedia.org/wiki/House_finch", "colors": { "face": "#cc3a3f", "wing": "#ae8e78", @@ -461,6 +491,8 @@ "pigeon": { "name": "Pigeon", "description": "Descended from the Rock Dove, these once domesticated birds are often found in cities worldwide. Quite friendly and intelligent, they were favored companions of Nikola Tesla.", + "latinName": "Columba livia", + "url": "https://en.wikipedia.org/wiki/Rock_dove", "colors": { "foot": "#ef6e5b", "face": "#5a6c91", @@ -474,6 +506,8 @@ "redAvadavat": { "name": "Red Avadavat", "description": "Native to India and southeast Asia, these birds are also known as Strawberry Finches due to their speckled plumage.", + "latinName": "Amandava amandava", + "url": "https://en.wikipedia.org/wiki/Red_avadavat", "colors": { "beak": "#f71919", "foot": "#af7575", @@ -489,6 +523,8 @@ "pinkRobin": { "name": "Pink Robin", "description": "Native to Australia, these bubblegum-pink puffballs are quieter than most, instead relying on their vibrant colours to attract partners.", + "latinName": "Petroica rodinogaster", + "url": "https://en.wikipedia.org/wiki/Pink_robin", "colors": { "face": "#403a46", "wing": "#38333d", @@ -503,6 +539,8 @@ "redWarbler": { "name": "Red Warbler", "description": "Endemic to the highlands of Mexico, this bird has the rare distinction of being one of the very few toxic birds in the world.", + "latinName": "Cardellina rubra", + "url": "https://en.wikipedia.org/wiki/Red_warbler", "colors": { "face": "#e80a28", "belly": "#d90921", @@ -522,6 +560,8 @@ "elegantEuphonia": { "name": "Elegant Euphonia", "description": "This vividly coloured finch is found throughout Central America and is known for the distinctive blue hood that crowns its head.", + "latinName": "Chlorophonia elegantissima", + "url": "https://en.wikipedia.org/wiki/Elegant_euphonia", "colors": { "wing": "#101480", "wing-edge": "#070956", @@ -649,13 +689,17 @@ /** * @param {string} name * @param {string} description + * @param {string} latinName + * @param {string} url * @param {Record} colors * @param {string[]} [tags] * @param {Rarity} [rarity] */ - constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { + constructor(name, description, latinName, url, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; + this.latinName = latinName; + this.url = url; const defaultColors = { [PALETTE.TRANSPARENT]: "transparent", [PALETTE.OUTLINE]: "#000000", @@ -749,7 +793,7 @@ const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) + new BirdType(data.name, data.description, data.latinName, data.url, data.colors, data.tags, data.rarity) ]), ); @@ -2304,6 +2348,13 @@ color: #7c6c4b; } +.birb-field-guide-latin-name { + text-decoration: underline; + font-style: italic; + font-weight: bold; + color: inherit; +} + #birb-feather { cursor: pointer; } @@ -3072,14 +3123,26 @@ const boldName = document.createElement("b"); boldName.textContent = type.name; - const spacer = document.createElement("div"); - spacer.style.height = "0.3em"; + + const spacerOne = document.createElement("div"); + spacerOne.style.height = "0.3em"; + + const latinName = document.createElement("a"); + latinName.className = "birb-field-guide-latin-name"; + latinName.textContent = type.latinName; + latinName.href = type.url; + latinName.target = "_blank"; + + const spacerTwo = document.createElement("div"); + spacerTwo.style.height = "0.3em"; const descText = document.createTextNode(!unlocked ? "Not yet unlocked" : type.description); const fragment = document.createDocumentFragment(); fragment.appendChild(boldName); - fragment.appendChild(spacer); + fragment.appendChild(spacerOne); + fragment.appendChild(latinName); + fragment.appendChild(spacerTwo); fragment.appendChild(descText); return fragment; diff --git a/src/animation/sprites.js b/src/animation/sprites.js index bf8ee4d..b97fa87 100644 --- a/src/animation/sprites.js +++ b/src/animation/sprites.js @@ -107,13 +107,17 @@ export class BirdType { /** * @param {string} name * @param {string} description + * @param {string} latinName + * @param {string} url * @param {Record} colors * @param {string[]} [tags] * @param {Rarity} [rarity] */ - constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { + constructor(name, description, latinName, url, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; + this.latinName = latinName; + this.url = url; const defaultColors = { [PALETTE.TRANSPARENT]: "transparent", [PALETTE.OUTLINE]: "#000000", @@ -207,6 +211,6 @@ export function loadSpriteSheetPixels(src, templateColors = true) { export const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) + new BirdType(data.name, data.description, data.latinName, data.url, data.colors, data.tags, data.rarity) ]), ); \ No newline at end of file diff --git a/src/application.js b/src/application.js index 46755ed..4085d65 100644 --- a/src/application.js +++ b/src/application.js @@ -793,14 +793,26 @@ function startApplication(birbPixels, featherPixels, hatsPixels) { const boldName = document.createElement("b"); boldName.textContent = type.name; - const spacer = document.createElement("div"); - spacer.style.height = "0.3em"; + + const spacerOne = document.createElement("div"); + spacerOne.style.height = "0.3em"; + + const latinName = document.createElement("a"); + latinName.className = "birb-field-guide-latin-name"; + latinName.textContent = type.latinName; + latinName.href = type.url; + latinName.target = "_blank"; + + const spacerTwo = document.createElement("div"); + spacerTwo.style.height = "0.3em"; const descText = document.createTextNode(!unlocked ? "Not yet unlocked" : type.description); const fragment = document.createDocumentFragment(); fragment.appendChild(boldName); - fragment.appendChild(spacer); + fragment.appendChild(spacerOne); + fragment.appendChild(latinName); + fragment.appendChild(spacerTwo); fragment.appendChild(descText); return fragment; diff --git a/src/species.js b/src/species.js index 604c5eb..c7bed43 100644 --- a/src/species.js +++ b/src/species.js @@ -9,6 +9,8 @@ export default { "bluebird": { "name": "Eastern Bluebird", "description": "Native to North American and very social, though can be timid around people.", + "latinName": "Sialia sialis", + "url": "https://en.wikipedia.org/wiki/Eastern_bluebird", "colors": { "foot": "#af8e75", "face": "#639bff", @@ -21,6 +23,8 @@ export default { "shimaEnaga": { "name": "Shima Enaga", "description": "Small, fluffy birds found in the snowy regions of Japan, these birds are highly sought after by ornithologists and nature photographers.", + "latinName": "Aegithalos caudatus", + "url": "https://en.wikipedia.org/wiki/Long-tailed_tit", "colors": { "foot": "#af8e75", "face": "#ffffff", @@ -34,6 +38,8 @@ export default { "tuftedTitmouse": { "name": "Tufted Titmouse", "description": "Native to the eastern United States, full of personality, and notably my wife's favorite bird.", + "latinName": "Baeolophus bicolor", + "url": "https://en.wikipedia.org/wiki/Tufted_titmouse", "colors": { "foot": "#af8e75", "face": "#c7cad7", @@ -50,6 +56,8 @@ export default { "europeanRobin": { "name": "European Robin", "description": "Native to western Europe, this is the quintessential robin. Quite friendly, you'll often find them searching for worms.", + "latinName": "Erithacus rubecula", + "url": "https://en.wikipedia.org/wiki/European_robin", "colors": { "foot": "#af8e75", "face": "#ffaf34", @@ -64,6 +72,8 @@ export default { "redCardinal": { "name": "Red Cardinal", "description": "Native to the eastern United States, this strikingly red bird is hard to miss.", + "latinName": "Cardinalis cardinalis", + "url": "https://en.wikipedia.org/wiki/Red_cardinal", "colors": { "beak": "#d93619", "foot": "#af8e75", @@ -83,6 +93,8 @@ export default { "americanGoldfinch": { "name": "American Goldfinch", "description": "Coloured a brilliant yellow, this bird feeds almost entirely on the seeds of plants such as thistle, sunflowers, and coneflowers.", + "latinName": "Spinus tristis", + "url": "https://en.wikipedia.org/wiki/American_goldfinch", "colors": { "beak": "#ffaf34", "foot": "#af8e75", @@ -99,6 +111,8 @@ export default { "barnSwallow": { "name": "Barn Swallow", "description": "Agile birds that often roost in man-made structures, these birds are known to build nests near Ospreys for protection.", + "latinName": "Hirundo rustica", + "url": "https://en.wikipedia.org/wiki/Barn_swallow", "colors": { "foot": "#af8e75", "face": "#db7c4d", @@ -112,6 +126,8 @@ export default { "mistletoebird": { "name": "Mistletoebird", "description": "Native to Australia, these birds eat mainly mistletoe and in turn spread the seeds far and wide.", + "latinName": "Dicaeum hirundinaceum", + "url": "https://en.wikipedia.org/wiki/Mistletoebird", "colors": { "foot": "#6c6a7c", "face": "#352e6d", @@ -124,6 +140,8 @@ export default { "scarletRobin": { "name": "Scarlet Robin", "description": "Native to Australia, this striking robin can be found in Eucalyptus forests.", + "latinName": "Petroica boodang", + "url": "https://en.wikipedia.org/wiki/Scarlet_robin", "colors": { "foot": "#494949", "face": "#3d3d3d", @@ -138,6 +156,8 @@ export default { "americanRobin": { "name": "American Robin", "description": "While not a true robin, this social North American bird is so named due to its orange coloring. It seems unbothered by nearby humans.", + "latinName": "Turdus migratorius", + "url": "https://en.wikipedia.org/wiki/American_robin", "colors": { "beak": "#e89f30", "foot": "#9f8075", @@ -152,6 +172,8 @@ export default { "carolinaWren": { "name": "Carolina Wren", "description": "Native to the eastern United States, these little birds are known for their curious and energetic nature.", + "latinName": "Thryothorus ludovicianus", + "url": "https://en.wikipedia.org/wiki/Carolina_wren", "colors": { "foot": "#af8e75", "face": "#edc7a9", @@ -166,6 +188,8 @@ export default { "blackCappedChickadee": { "name": "Black-capped Chickadee", "description": "Native to North America, these small and curious birds are known for their distinctive call from which they get their name.", + "latinName": "Poecile atricapillus", + "url": "https://en.wikipedia.org/wiki/Black-capped_chickadee", "colors": { "hood": "#363636", "cheek": "#363636", @@ -185,6 +209,8 @@ export default { "blueJay": { "name": "Blue Jay", "description": "This loud and rambunctious bird is native to North America and is known for challenging anything in its path.", + "latinName": "Cyanocitta cristata", + "url": "https://en.wikipedia.org/wiki/Blue_jay", "colors": { "foot": "#5a626b", "face": "#ebf2ff", @@ -204,6 +230,8 @@ export default { "darkEyedJunco": { "name": "Dark-eyed Junco", "description": "Native across North America, these social birds will often be seen hopping along the ground in winter.", + "latinName": "Junco hyemalis", + "url": "https://en.wikipedia.org/wiki/Dark-eyed_junco", "colors": { "face": "#55565e", "wing": "#5c5f69", @@ -217,6 +245,8 @@ export default { "houseFinch": { "name": "House Finch", "description": "Native to North America, these highly social birds sing cheerful songs and are often seen at bird feeders.", + "latinName": "Haemorhous mexicanus", + "url": "https://en.wikipedia.org/wiki/House_finch", "colors": { "face": "#cc3a3f", "wing": "#ae8e78", @@ -233,6 +263,8 @@ export default { "pigeon": { "name": "Pigeon", "description": "Descended from the Rock Dove, these once domesticated birds are often found in cities worldwide. Quite friendly and intelligent, they were favored companions of Nikola Tesla.", + "latinName": "Columba livia", + "url": "https://en.wikipedia.org/wiki/Rock_dove", "colors": { "foot": "#ef6e5b", "face": "#5a6c91", @@ -246,6 +278,8 @@ export default { "redAvadavat": { "name": "Red Avadavat", "description": "Native to India and southeast Asia, these birds are also known as Strawberry Finches due to their speckled plumage.", + "latinName": "Amandava amandava", + "url": "https://en.wikipedia.org/wiki/Red_avadavat", "colors": { "beak": "#f71919", "foot": "#af7575", @@ -261,6 +295,8 @@ export default { "pinkRobin": { "name": "Pink Robin", "description": "Native to Australia, these bubblegum-pink puffballs are quieter than most, instead relying on their vibrant colours to attract partners.", + "latinName": "Petroica rodinogaster", + "url": "https://en.wikipedia.org/wiki/Pink_robin", "colors": { "face": "#403a46", "wing": "#38333d", @@ -275,6 +311,8 @@ export default { "redWarbler": { "name": "Red Warbler", "description": "Endemic to the highlands of Mexico, this bird has the rare distinction of being one of the very few toxic birds in the world.", + "latinName": "Cardellina rubra", + "url": "https://en.wikipedia.org/wiki/Red_warbler", "colors": { "face": "#e80a28", "belly": "#d90921", @@ -294,6 +332,8 @@ export default { "elegantEuphonia": { "name": "Elegant Euphonia", "description": "This vividly coloured finch is found throughout Central America and is known for the distinctive blue hood that crowns its head.", + "latinName": "Chlorophonia elegantissima", + "url": "https://en.wikipedia.org/wiki/Elegant_euphonia", "colors": { "wing": "#101480", "wing-edge": "#070956", diff --git a/src/stylesheet.css b/src/stylesheet.css index d15d638..37a7ab6 100644 --- a/src/stylesheet.css +++ b/src/stylesheet.css @@ -336,6 +336,13 @@ color: #7c6c4b; } +.birb-field-guide-latin-name { + text-decoration: underline; + font-style: italic; + font-weight: bold; + color: inherit; +} + #birb-feather { cursor: pointer; }