From 2a7ad229bebd748cf3bea3d94ffef17212b52da3 Mon Sep 17 00:00:00 2001 From: Idrees Hassan Date: Wed, 18 Mar 2026 16:48:13 -0700 Subject: [PATCH] Add support for different rarities in field guide --- dist/extension.zip | Bin 156291 -> 156708 bytes dist/extension/birb.js | 56 ++++++++++++++++++++++++++++++----- dist/obsidian/main.js | 56 ++++++++++++++++++++++++++++++----- dist/userscript/birb.user.js | 56 ++++++++++++++++++++++++++++++----- dist/web/birb.embed.js | 56 ++++++++++++++++++++++++++++++----- dist/web/birb.js | 56 ++++++++++++++++++++++++++++++----- src/animation/sprites.js | 16 ++++++++-- src/application.js | 27 ++++++++++++++--- src/stylesheet.css | 15 ++++++++-- 9 files changed, 289 insertions(+), 49 deletions(-) diff --git a/dist/extension.zip b/dist/extension.zip index c1b1d6b6d7bcb6ac259ad59df1621481f0f28aa1..273346d10cb4732b9509cc873590b0e892374dc5 100644 GIT binary patch delta 33656 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 delta 33276 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�eLYDAfYVu44?Xu}W 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 RR6*~?0AlDT^^ceY`+q%ph_L_w diff --git a/dist/extension/birb.js b/dist/extension/birb.js index 5a66568..1924f23 100644 --- a/dist/extension/birb.js +++ b/dist/extension/birb.js @@ -531,14 +531,25 @@ "#373737": PALETTE.FEATHER_SPINE, }; + + /** + * Bird species rarit + * @type {Record} + */ + const RARITY = { + FAMILIAR: "familiar", + UNCOMMON: "uncommon" + }; + class BirdType { /** * @param {string} name * @param {string} description * @param {Record} colors * @param {string[]} [tags] + * @param {string} [rarity] */ - constructor(name, description, colors, tags = []) { + constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; const defaultColors = { @@ -561,6 +572,7 @@ /** @type {Record} */ this.colors = { ...defaultColors, ...colors, [PALETTE.THEME_HIGHLIGHT]: colors[PALETTE.THEME_HIGHLIGHT] ?? colors.hood ?? colors.face }; this.tags = tags; + this.rarity = rarity; } } @@ -624,7 +636,7 @@ const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags ?? []), + new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) ]), ); @@ -2162,7 +2174,7 @@ } .birb-grid-item, .birb-field-guide-description, .birb-message-content { - border: var(--birb-border-size) solid rgb(255, 207, 144); + border: var(--birb-border-size) solid #ffcf90; box-shadow: 0 0 0 var(--birb-border-size) white; background: rgba(255, 221, 177, 0.5); } @@ -2181,6 +2193,15 @@ background: var(--birb-mix-color); } +.birb-field-guide-section-label { + padding-top: 4px; + /* padding-left: calc(10px + var(--birb-border-size) / 2); */ + color: #876c4e; + text-align: center; + /* Italics */ + font-style: italic; +} + .birb-field-guide-description { max-width: calc(100% - 20px); margin-left: 10px; @@ -2192,7 +2213,7 @@ margin-bottom: 10px; font-size: 14px; box-sizing: border-box; - color: rgb(124, 108, 75); + color: #7c6c4b; } #birb-feather { @@ -2205,7 +2226,7 @@ width: 100%; padding: 10px; font-size: 14px; - color: rgb(124, 108, 75); + color: #7c6c4b; } .birb-sticky-note { @@ -2581,6 +2602,8 @@ setInterval(update, UPDATE_INTERVAL); focusOnElement(true); + // TODO: Remove + insertFieldGuide(); } function update() { @@ -2928,9 +2951,22 @@ removeWardrobe(); const contentContainer = document.createElement("div"); - const content = makeElement("birb-grid-content"); + const familiarBirds = makeElement("birb-grid-content"); + const uncommonBirds = makeElement("birb-grid-content"); + + const familiarLabel = document.createElement("div"); + familiarLabel.className = "birb-field-guide-section-label"; + familiarLabel.textContent = `----- Familiar ${birdBirb()}s -----`; + + const uncommonLabel = document.createElement("div"); + uncommonLabel.className = "birb-field-guide-section-label"; + uncommonLabel.textContent = `----- Uncommon ${birdBirb()}s -----`; + const description = makeElement("birb-field-guide-description"); - contentContainer.appendChild(content); + contentContainer.appendChild(familiarLabel); + contentContainer.appendChild(familiarBirds); + contentContainer.appendChild(uncommonLabel); + contentContainer.appendChild(uncommonBirds); contentContainer.appendChild(description); const fieldGuide = createWindow( @@ -2975,7 +3011,11 @@ } birb.getFrames().base.draw(speciesCtx, Directions.RIGHT, CANVAS_PIXEL_SIZE, type.colors, type.tags); speciesElement.appendChild(speciesCanvas); - content.appendChild(speciesElement); + let section = familiarBirds; + if (type.rarity === RARITY.UNCOMMON) { + section = uncommonBirds; + } + section.appendChild(speciesElement); if (unlocked) { onClick(speciesElement, () => { switchSpecies(id); diff --git a/dist/obsidian/main.js b/dist/obsidian/main.js index 08a1fdb..b956cf9 100644 --- a/dist/obsidian/main.js +++ b/dist/obsidian/main.js @@ -536,14 +536,25 @@ module.exports = class PocketBird extends Plugin { "#373737": PALETTE.FEATHER_SPINE, }; + + /** + * Bird species rarit + * @type {Record} + */ + const RARITY = { + FAMILIAR: "familiar", + UNCOMMON: "uncommon" + }; + class BirdType { /** * @param {string} name * @param {string} description * @param {Record} colors * @param {string[]} [tags] + * @param {string} [rarity] */ - constructor(name, description, colors, tags = []) { + constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; const defaultColors = { @@ -566,6 +577,7 @@ module.exports = class PocketBird extends Plugin { /** @type {Record} */ this.colors = { ...defaultColors, ...colors, [PALETTE.THEME_HIGHLIGHT]: colors[PALETTE.THEME_HIGHLIGHT] ?? colors.hood ?? colors.face }; this.tags = tags; + this.rarity = rarity; } } @@ -629,7 +641,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 ?? []), + new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) ]), ); @@ -2195,7 +2207,7 @@ module.exports = class PocketBird extends Plugin { } .birb-grid-item, .birb-field-guide-description, .birb-message-content { - border: var(--birb-border-size) solid rgb(255, 207, 144); + border: var(--birb-border-size) solid #ffcf90; box-shadow: 0 0 0 var(--birb-border-size) white; background: rgba(255, 221, 177, 0.5); } @@ -2214,6 +2226,15 @@ module.exports = class PocketBird extends Plugin { background: var(--birb-mix-color); } +.birb-field-guide-section-label { + padding-top: 4px; + /* padding-left: calc(10px + var(--birb-border-size) / 2); */ + color: #876c4e; + text-align: center; + /* Italics */ + font-style: italic; +} + .birb-field-guide-description { max-width: calc(100% - 20px); margin-left: 10px; @@ -2225,7 +2246,7 @@ module.exports = class PocketBird extends Plugin { margin-bottom: 10px; font-size: 14px; box-sizing: border-box; - color: rgb(124, 108, 75); + color: #7c6c4b; } #birb-feather { @@ -2238,7 +2259,7 @@ module.exports = class PocketBird extends Plugin { width: 100%; padding: 10px; font-size: 14px; - color: rgb(124, 108, 75); + color: #7c6c4b; } .birb-sticky-note { @@ -2614,6 +2635,8 @@ module.exports = class PocketBird extends Plugin { setInterval(update, UPDATE_INTERVAL); focusOnElement(true); + // TODO: Remove + insertFieldGuide(); } function update() { @@ -2961,9 +2984,22 @@ module.exports = class PocketBird extends Plugin { removeWardrobe(); const contentContainer = document.createElement("div"); - const content = makeElement("birb-grid-content"); + const familiarBirds = makeElement("birb-grid-content"); + const uncommonBirds = makeElement("birb-grid-content"); + + const familiarLabel = document.createElement("div"); + familiarLabel.className = "birb-field-guide-section-label"; + familiarLabel.textContent = `----- Familiar ${birdBirb()}s -----`; + + const uncommonLabel = document.createElement("div"); + uncommonLabel.className = "birb-field-guide-section-label"; + uncommonLabel.textContent = `----- Uncommon ${birdBirb()}s -----`; + const description = makeElement("birb-field-guide-description"); - contentContainer.appendChild(content); + contentContainer.appendChild(familiarLabel); + contentContainer.appendChild(familiarBirds); + contentContainer.appendChild(uncommonLabel); + contentContainer.appendChild(uncommonBirds); contentContainer.appendChild(description); const fieldGuide = createWindow( @@ -3008,7 +3044,11 @@ module.exports = class PocketBird extends Plugin { } birb.getFrames().base.draw(speciesCtx, Directions.RIGHT, CANVAS_PIXEL_SIZE, type.colors, type.tags); speciesElement.appendChild(speciesCanvas); - content.appendChild(speciesElement); + let section = familiarBirds; + if (type.rarity === RARITY.UNCOMMON) { + section = uncommonBirds; + } + section.appendChild(speciesElement); if (unlocked) { onClick(speciesElement, () => { switchSpecies(id); diff --git a/dist/userscript/birb.user.js b/dist/userscript/birb.user.js index ff54f9d..cbbae38 100644 --- a/dist/userscript/birb.user.js +++ b/dist/userscript/birb.user.js @@ -545,14 +545,25 @@ "#373737": PALETTE.FEATHER_SPINE, }; + + /** + * Bird species rarit + * @type {Record} + */ + const RARITY = { + FAMILIAR: "familiar", + UNCOMMON: "uncommon" + }; + class BirdType { /** * @param {string} name * @param {string} description * @param {Record} colors * @param {string[]} [tags] + * @param {string} [rarity] */ - constructor(name, description, colors, tags = []) { + constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; const defaultColors = { @@ -575,6 +586,7 @@ /** @type {Record} */ this.colors = { ...defaultColors, ...colors, [PALETTE.THEME_HIGHLIGHT]: colors[PALETTE.THEME_HIGHLIGHT] ?? colors.hood ?? colors.face }; this.tags = tags; + this.rarity = rarity; } } @@ -638,7 +650,7 @@ const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags ?? []), + new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) ]), ); @@ -2157,7 +2169,7 @@ } .birb-grid-item, .birb-field-guide-description, .birb-message-content { - border: var(--birb-border-size) solid rgb(255, 207, 144); + border: var(--birb-border-size) solid #ffcf90; box-shadow: 0 0 0 var(--birb-border-size) white; background: rgba(255, 221, 177, 0.5); } @@ -2176,6 +2188,15 @@ background: var(--birb-mix-color); } +.birb-field-guide-section-label { + padding-top: 4px; + /* padding-left: calc(10px + var(--birb-border-size) / 2); */ + color: #876c4e; + text-align: center; + /* Italics */ + font-style: italic; +} + .birb-field-guide-description { max-width: calc(100% - 20px); margin-left: 10px; @@ -2187,7 +2208,7 @@ margin-bottom: 10px; font-size: 14px; box-sizing: border-box; - color: rgb(124, 108, 75); + color: #7c6c4b; } #birb-feather { @@ -2200,7 +2221,7 @@ width: 100%; padding: 10px; font-size: 14px; - color: rgb(124, 108, 75); + color: #7c6c4b; } .birb-sticky-note { @@ -2576,6 +2597,8 @@ setInterval(update, UPDATE_INTERVAL); focusOnElement(true); + // TODO: Remove + insertFieldGuide(); } function update() { @@ -2923,9 +2946,22 @@ removeWardrobe(); const contentContainer = document.createElement("div"); - const content = makeElement("birb-grid-content"); + const familiarBirds = makeElement("birb-grid-content"); + const uncommonBirds = makeElement("birb-grid-content"); + + const familiarLabel = document.createElement("div"); + familiarLabel.className = "birb-field-guide-section-label"; + familiarLabel.textContent = `----- Familiar ${birdBirb()}s -----`; + + const uncommonLabel = document.createElement("div"); + uncommonLabel.className = "birb-field-guide-section-label"; + uncommonLabel.textContent = `----- Uncommon ${birdBirb()}s -----`; + const description = makeElement("birb-field-guide-description"); - contentContainer.appendChild(content); + contentContainer.appendChild(familiarLabel); + contentContainer.appendChild(familiarBirds); + contentContainer.appendChild(uncommonLabel); + contentContainer.appendChild(uncommonBirds); contentContainer.appendChild(description); const fieldGuide = createWindow( @@ -2970,7 +3006,11 @@ } birb.getFrames().base.draw(speciesCtx, Directions.RIGHT, CANVAS_PIXEL_SIZE, type.colors, type.tags); speciesElement.appendChild(speciesCanvas); - content.appendChild(speciesElement); + let section = familiarBirds; + if (type.rarity === RARITY.UNCOMMON) { + section = uncommonBirds; + } + section.appendChild(speciesElement); if (unlocked) { onClick(speciesElement, () => { switchSpecies(id); diff --git a/dist/web/birb.embed.js b/dist/web/birb.embed.js index 449868f..09ec163 100644 --- a/dist/web/birb.embed.js +++ b/dist/web/birb.embed.js @@ -531,14 +531,25 @@ "#373737": PALETTE.FEATHER_SPINE, }; + + /** + * Bird species rarit + * @type {Record} + */ + const RARITY = { + FAMILIAR: "familiar", + UNCOMMON: "uncommon" + }; + class BirdType { /** * @param {string} name * @param {string} description * @param {Record} colors * @param {string[]} [tags] + * @param {string} [rarity] */ - constructor(name, description, colors, tags = []) { + constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; const defaultColors = { @@ -561,6 +572,7 @@ /** @type {Record} */ this.colors = { ...defaultColors, ...colors, [PALETTE.THEME_HIGHLIGHT]: colors[PALETTE.THEME_HIGHLIGHT] ?? colors.hood ?? colors.face }; this.tags = tags; + this.rarity = rarity; } } @@ -624,7 +636,7 @@ const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags ?? []), + new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) ]), ); @@ -2137,7 +2149,7 @@ } .birb-grid-item, .birb-field-guide-description, .birb-message-content { - border: var(--birb-border-size) solid rgb(255, 207, 144); + border: var(--birb-border-size) solid #ffcf90; box-shadow: 0 0 0 var(--birb-border-size) white; background: rgba(255, 221, 177, 0.5); } @@ -2156,6 +2168,15 @@ background: var(--birb-mix-color); } +.birb-field-guide-section-label { + padding-top: 4px; + /* padding-left: calc(10px + var(--birb-border-size) / 2); */ + color: #876c4e; + text-align: center; + /* Italics */ + font-style: italic; +} + .birb-field-guide-description { max-width: calc(100% - 20px); margin-left: 10px; @@ -2167,7 +2188,7 @@ margin-bottom: 10px; font-size: 14px; box-sizing: border-box; - color: rgb(124, 108, 75); + color: #7c6c4b; } #birb-feather { @@ -2180,7 +2201,7 @@ width: 100%; padding: 10px; font-size: 14px; - color: rgb(124, 108, 75); + color: #7c6c4b; } .birb-sticky-note { @@ -2556,6 +2577,8 @@ setInterval(update, UPDATE_INTERVAL); focusOnElement(true); + // TODO: Remove + insertFieldGuide(); } function update() { @@ -2903,9 +2926,22 @@ removeWardrobe(); const contentContainer = document.createElement("div"); - const content = makeElement("birb-grid-content"); + const familiarBirds = makeElement("birb-grid-content"); + const uncommonBirds = makeElement("birb-grid-content"); + + const familiarLabel = document.createElement("div"); + familiarLabel.className = "birb-field-guide-section-label"; + familiarLabel.textContent = `----- Familiar ${birdBirb()}s -----`; + + const uncommonLabel = document.createElement("div"); + uncommonLabel.className = "birb-field-guide-section-label"; + uncommonLabel.textContent = `----- Uncommon ${birdBirb()}s -----`; + const description = makeElement("birb-field-guide-description"); - contentContainer.appendChild(content); + contentContainer.appendChild(familiarLabel); + contentContainer.appendChild(familiarBirds); + contentContainer.appendChild(uncommonLabel); + contentContainer.appendChild(uncommonBirds); contentContainer.appendChild(description); const fieldGuide = createWindow( @@ -2950,7 +2986,11 @@ } birb.getFrames().base.draw(speciesCtx, Directions.RIGHT, CANVAS_PIXEL_SIZE, type.colors, type.tags); speciesElement.appendChild(speciesCanvas); - content.appendChild(speciesElement); + let section = familiarBirds; + if (type.rarity === RARITY.UNCOMMON) { + section = uncommonBirds; + } + section.appendChild(speciesElement); if (unlocked) { onClick(speciesElement, () => { switchSpecies(id); diff --git a/dist/web/birb.js b/dist/web/birb.js index 449868f..09ec163 100644 --- a/dist/web/birb.js +++ b/dist/web/birb.js @@ -531,14 +531,25 @@ "#373737": PALETTE.FEATHER_SPINE, }; + + /** + * Bird species rarit + * @type {Record} + */ + const RARITY = { + FAMILIAR: "familiar", + UNCOMMON: "uncommon" + }; + class BirdType { /** * @param {string} name * @param {string} description * @param {Record} colors * @param {string[]} [tags] + * @param {string} [rarity] */ - constructor(name, description, colors, tags = []) { + constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; const defaultColors = { @@ -561,6 +572,7 @@ /** @type {Record} */ this.colors = { ...defaultColors, ...colors, [PALETTE.THEME_HIGHLIGHT]: colors[PALETTE.THEME_HIGHLIGHT] ?? colors.hood ?? colors.face }; this.tags = tags; + this.rarity = rarity; } } @@ -624,7 +636,7 @@ const SPECIES = Object.fromEntries( Object.entries(species).map(([id, data]) => [ id, - new BirdType(data.name, data.description, data.colors, data.tags ?? []), + new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) ]), ); @@ -2137,7 +2149,7 @@ } .birb-grid-item, .birb-field-guide-description, .birb-message-content { - border: var(--birb-border-size) solid rgb(255, 207, 144); + border: var(--birb-border-size) solid #ffcf90; box-shadow: 0 0 0 var(--birb-border-size) white; background: rgba(255, 221, 177, 0.5); } @@ -2156,6 +2168,15 @@ background: var(--birb-mix-color); } +.birb-field-guide-section-label { + padding-top: 4px; + /* padding-left: calc(10px + var(--birb-border-size) / 2); */ + color: #876c4e; + text-align: center; + /* Italics */ + font-style: italic; +} + .birb-field-guide-description { max-width: calc(100% - 20px); margin-left: 10px; @@ -2167,7 +2188,7 @@ margin-bottom: 10px; font-size: 14px; box-sizing: border-box; - color: rgb(124, 108, 75); + color: #7c6c4b; } #birb-feather { @@ -2180,7 +2201,7 @@ width: 100%; padding: 10px; font-size: 14px; - color: rgb(124, 108, 75); + color: #7c6c4b; } .birb-sticky-note { @@ -2556,6 +2577,8 @@ setInterval(update, UPDATE_INTERVAL); focusOnElement(true); + // TODO: Remove + insertFieldGuide(); } function update() { @@ -2903,9 +2926,22 @@ removeWardrobe(); const contentContainer = document.createElement("div"); - const content = makeElement("birb-grid-content"); + const familiarBirds = makeElement("birb-grid-content"); + const uncommonBirds = makeElement("birb-grid-content"); + + const familiarLabel = document.createElement("div"); + familiarLabel.className = "birb-field-guide-section-label"; + familiarLabel.textContent = `----- Familiar ${birdBirb()}s -----`; + + const uncommonLabel = document.createElement("div"); + uncommonLabel.className = "birb-field-guide-section-label"; + uncommonLabel.textContent = `----- Uncommon ${birdBirb()}s -----`; + const description = makeElement("birb-field-guide-description"); - contentContainer.appendChild(content); + contentContainer.appendChild(familiarLabel); + contentContainer.appendChild(familiarBirds); + contentContainer.appendChild(uncommonLabel); + contentContainer.appendChild(uncommonBirds); contentContainer.appendChild(description); const fieldGuide = createWindow( @@ -2950,7 +2986,11 @@ } birb.getFrames().base.draw(speciesCtx, Directions.RIGHT, CANVAS_PIXEL_SIZE, type.colors, type.tags); speciesElement.appendChild(speciesCanvas); - content.appendChild(speciesElement); + let section = familiarBirds; + if (type.rarity === RARITY.UNCOMMON) { + section = uncommonBirds; + } + section.appendChild(speciesElement); if (unlocked) { onClick(speciesElement, () => { switchSpecies(id); diff --git a/src/animation/sprites.js b/src/animation/sprites.js index a8cecdd..ebd0838 100644 --- a/src/animation/sprites.js +++ b/src/animation/sprites.js @@ -58,14 +58,25 @@ export const SPRITE_SHEET_COLOR_MAP = { "#373737": PALETTE.FEATHER_SPINE, }; + +/** + * Bird species rarit + * @type {Record} + */ +export const RARITY = { + FAMILIAR: "familiar", + UNCOMMON: "uncommon" +} + export class BirdType { /** * @param {string} name * @param {string} description * @param {Record} colors * @param {string[]} [tags] + * @param {string} [rarity] */ - constructor(name, description, colors, tags = []) { + constructor(name, description, colors, tags = [], rarity = RARITY.FAMILIAR) { this.name = name; this.description = description; const defaultColors = { @@ -88,6 +99,7 @@ export class BirdType { /** @type {Record} */ this.colors = { ...defaultColors, ...colors, [PALETTE.THEME_HIGHLIGHT]: colors[PALETTE.THEME_HIGHLIGHT] ?? colors.hood ?? colors.face }; this.tags = tags; + this.rarity = rarity; } } @@ -151,6 +163,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 ?? []), + new BirdType(data.name, data.description, data.colors, data.tags, data.rarity) ]), ); \ No newline at end of file diff --git a/src/application.js b/src/application.js index db03045..ae5fc84 100644 --- a/src/application.js +++ b/src/application.js @@ -24,8 +24,8 @@ import { } from './shared.js'; import { PALETTE, - SPRITE_SHEET_COLOR_MAP, SPECIES, + RARITY, loadSpriteSheetPixels, } from './animation/sprites.js'; import { @@ -407,6 +407,8 @@ function startApplication(birbPixels, featherPixels, hatsPixels) { setInterval(update, UPDATE_INTERVAL); focusOnElement(true); + // TODO: Remove + insertFieldGuide(); } function update() { @@ -758,9 +760,22 @@ function startApplication(birbPixels, featherPixels, hatsPixels) { removeWardrobe(); const contentContainer = document.createElement("div"); - const content = makeElement("birb-grid-content"); + const familiarBirds = makeElement("birb-grid-content"); + const uncommonBirds = makeElement("birb-grid-content"); + + const familiarLabel = document.createElement("div"); + familiarLabel.className = "birb-field-guide-section-label"; + familiarLabel.textContent = `----- Familiar ${birdBirb()}s -----`; + + const uncommonLabel = document.createElement("div"); + uncommonLabel.className = "birb-field-guide-section-label"; + uncommonLabel.textContent = `----- Uncommon ${birdBirb()}s -----`; + const description = makeElement("birb-field-guide-description"); - contentContainer.appendChild(content); + contentContainer.appendChild(familiarLabel); + contentContainer.appendChild(familiarBirds); + contentContainer.appendChild(uncommonLabel); + contentContainer.appendChild(uncommonBirds); contentContainer.appendChild(description); const fieldGuide = createWindow( @@ -805,7 +820,11 @@ function startApplication(birbPixels, featherPixels, hatsPixels) { } birb.getFrames().base.draw(speciesCtx, Directions.RIGHT, CANVAS_PIXEL_SIZE, type.colors, type.tags); speciesElement.appendChild(speciesCanvas); - content.appendChild(speciesElement); + let section = familiarBirds; + if (type.rarity === RARITY.UNCOMMON) { + section = uncommonBirds; + } + section.appendChild(speciesElement); if (unlocked) { onClick(speciesElement, () => { switchSpecies(id); diff --git a/src/stylesheet.css b/src/stylesheet.css index 610ed5e..d15d638 100644 --- a/src/stylesheet.css +++ b/src/stylesheet.css @@ -294,7 +294,7 @@ } .birb-grid-item, .birb-field-guide-description, .birb-message-content { - border: var(--birb-border-size) solid rgb(255, 207, 144); + border: var(--birb-border-size) solid #ffcf90; box-shadow: 0 0 0 var(--birb-border-size) white; background: rgba(255, 221, 177, 0.5); } @@ -313,6 +313,15 @@ background: var(--birb-mix-color); } +.birb-field-guide-section-label { + padding-top: 4px; + /* padding-left: calc(10px + var(--birb-border-size) / 2); */ + color: #876c4e; + text-align: center; + /* Italics */ + font-style: italic; +} + .birb-field-guide-description { max-width: calc(100% - 20px); margin-left: 10px; @@ -324,7 +333,7 @@ margin-bottom: 10px; font-size: 14px; box-sizing: border-box; - color: rgb(124, 108, 75); + color: #7c6c4b; } #birb-feather { @@ -337,7 +346,7 @@ width: 100%; padding: 10px; font-size: 14px; - color: rgb(124, 108, 75); + color: #7c6c4b; } .birb-sticky-note {