--- /** * gaming.astro — Gaming * --------------------------------------------------------------------------- * Per-interest template: header + tagline, verbatim overview, platforms card * grid, favorite genres, currently playing placeholder, and related interests. */ import BaseLayout from "@layouts/BaseLayout.astro"; import Reveal from "@components/motion/Reveal.astro"; import InterestHero from "@components/layout/InterestHero.astro"; import InterestCard from "@components/cards/InterestCard.astro"; import GameCard from "@components/cards/GameCard.astro"; import SectionHeader from "@components/layout/SectionHeader.astro"; import RelatedInterests from "@components/layout/RelatedInterests.astro"; import Placeholder from "@components/layout/Placeholder.astro"; import Icon from "@components/Icon.astro"; import { getCollection, getEntry } from "astro:content"; import { platformToIcon } from "@lib/platforms"; const platforms = [ { icon: "sony-playstation", title: "PlayStation 5", body: "Mainly for single player and exclusives.", }, { icon: "nintendo-switch", title: "Nintendo Switch / Switch 2", body: "Handheld and docked. Pokemon, Mario, and many other Nintendo and indie gems.", }, { icon: "steam", title: "Steam", body: "The primary game library. Strategy, RPGs, Adventure, oh my! And an ever-growing backlog.", }, ]; /** * Favorite genres. Each is a small card with an mdi icon and a one-line blurb * on what Greg loves about that genre. Page-local; edit freely. */ const genres = [ { icon: "sword-cross", name: "RPGs (Western & JRPG)", blurb: "Character progression and stories I can live in for 100+ hours and then turn around and do it again.", }, { icon: "pokeball", name: "Creature Collecting", blurb: "If I can catch, train, or befriend a roster, I'm sold.", }, { icon: "chess-king", name: "Strategy & Tactics", blurb: "Turn-based puzzles and tactical challengeswhere the right plan is oh so rewarding.", }, { icon: "hammer", name: "Building & Crafting", blurb: "Give me a grid, resources, and a goal, and watch the evening vanish.", }, { icon: "factory", name: "Automation", blurb: "Optimizing a production line until its perfect is my zen.", }, { icon: "compass-outline", name: "Open-world Exploration", blurb: "The map IS the point. I will try to climb every mountain and I will check every waterfall for treasure.", }, { icon: "star-four-points", name: "Indie Darlings", blurb: "The small, weird, passionate projects that punch far above their size.", }, ]; // Gaming Hall of Fame — one file per game in src/content/games/hall-of-fame/. const hallOfFame = (await getCollection("games")).sort( (a, b) => a.data.order - b.data.order, ); // Currently playing — single list in src/content/games/now-playing.yaml. const nowPlayingEntry = await getEntry("nowPlaying", "now-playing"); const nowPlaying = nowPlayingEntry?.data.games ?? []; const related = [ /*{ href: "/interests/pokemon", title: "Pokémon", icon: "pokeball", blurb: "Nintendo console overlap and a lifelong obsession.", },*/ { href: "/interests/ttrpgs", title: "TTRPGs & Tabletop", icon: "dice-multiple", blurb: "Digital RPGs as another expression of the same impulse.", }, ]; ---
{/* Overview */}

Gaming has always been a passion in my life. I span console generations from the Sega Genesis to the modern era. I play mainly with a PlayStation 5, Nintendo Switch 2, and a Steam library that has gotten politely out of hand. I'm particularly drawn to RPGs, strategy games, and anything with a creature to tame or a deeply layered world to explore. But a good game loop will get me sucked in harder than the sunk cost fallacy of a League of Legends streak. I love to play with friends, but have found myself leaning more towards single-player experiences. Someone should have told younger me that scheduling would be the final boss!

{/* Platforms */}
{ platforms.map((p, i) => ( {p.body} )) }
{/* Genres */}
{ genres.map((g, i) => (

{g.name}

{g.blurb}

)) }
{/* Currently */}
{ nowPlaying.length > 0 ? (
{nowPlaying.map((g, i) => ( {g.platform} ))}
) : ( ) }
{/* Gaming Hall of Fame */}
{ hallOfFame.length > 0 ? (
{hallOfFame.map((g, i) => ( ))}
) : ( ) }