diff --git a/src/routes/projects/projects.ts b/src/lib/projects.ts similarity index 99% rename from src/routes/projects/projects.ts rename to src/lib/projects.ts index 588ca20..db768e5 100644 --- a/src/routes/projects/projects.ts +++ b/src/lib/projects.ts @@ -75,46 +75,6 @@ export const projects: Project[] = [ }, ], }, - { - id: "swordsnstuff", - isActive: false, - banner: "/projects/swordsnstuff/banner.webp", - icon: "", - title: "Swords & Stuff", - subtitle: "Unity 2D RPG", - paragraphs: [ - "Swords & Stuff (working title) was an RPG inspired by Dragon Quest IX. Traverse the world with a party of up to 4 characters, each with their individual equiment, skills, and vocations, and fight monsters to gain experience!", - "This game was my first shot at 2D Unity development, which had proven quite fun, but also a little cumbersome at times. Unfortunately, I will not continue the project in its current form, since even though I don't expect to earn any money from my games, let alone publish them on a commercial platform, Unity's TOS changes in mid-2023 made me reconsider my decision to use the platform and I hence abandoned the project. I used this opportunity to learn to use Godot, which I will use for my future projects.", - "A working, but very early-in-development version of the game is still up on this website. It features a testing overworld in which you can move the cast of four characters: Player1, fraxiom64, proudrat, and Grampa Simpson. The enemies, trolldads, chase you and take you into a battle scene that has a functioning queue, but no damage and health mechanics. You can flee battles. Don't open the inventory – you cannot escape it.", - ], - links: [ - { - text: "Play Swords & Stuff", - link: "/games/swordsnstuff", - }, - ], - }, - { - id: "tads", - isActive: false, - banner: "/projects/tads/banner.webp", - icon: "/projects/tads/icon.webp", - title: "Totally Accurate Dating Simulator", - subtitle: "HTML Text Adventure", - paragraphs: [ - "Totally Accurate Dating Simulator is, as the name suggests, a series of particularly realistic dating simulator experiences. Dive into a world of romance as you meet your matches, intriguing and disappointing. Who will you meet? Will it be someone your type? That's subjective, and the computer will not even slightly attempt to match you with someone suitable. Prepare yourself for matches that are rarely described with \"intriguing\" and much more frequently with \"funny.\" Discover which of the 28 endings will determine your fate, and lower your expectations. Significantly.", - ], - links: [ - { - text: "Play TADS 1", - link: "/projects/tads/tads1", - }, - { - text: "Play TADS 2", - link: "/projects/tads/tads2", - }, - ], - }, { id: "weserplaner", isActive: false, @@ -267,4 +227,49 @@ export const projects: Project[] = [ }, ], }, -]; \ No newline at end of file +]; + + + +export const games: Project[] = [ + { + id: "swordsnstuff", + isActive: false, + banner: "/projects/swordsnstuff/banner.webp", + icon: "", + title: "Swords & Stuff", + subtitle: "Unity 2D RPG", + paragraphs: [ + "Swords & Stuff (working title) was an RPG inspired by Dragon Quest IX. Traverse the world with a party of up to 4 characters, each with their individual equiment, skills, and vocations, and fight monsters to gain experience!", + "This game was my first shot at 2D Unity development, which had proven quite fun, but also a little cumbersome at times. Unfortunately, I will not continue the project in its current form, since even though I don't expect to earn any money from my games, let alone publish them on a commercial platform, Unity's TOS changes in mid-2023 made me reconsider my decision to use the platform and I hence abandoned the project. I used this opportunity to learn to use Godot, which I will use for my future projects.", + "A working, but very early-in-development version of the game is still up on this website. It features a testing overworld in which you can move the cast of four characters: Player1, fraxiom64, proudrat, and Grampa Simpson. The enemies, trolldads, chase you and take you into a battle scene that has a functioning queue, but no damage and health mechanics. You can flee battles. Don't open the inventory – you cannot escape it.", + ], + links: [ + { + text: "Play Swords & Stuff", + link: "/games/swordsnstuff", + }, + ], + }, + { + id: "tads", + isActive: false, + banner: "/projects/tads/banner.webp", + icon: "/projects/tads/icon.webp", + title: "Totally Accurate Dating Simulator", + subtitle: "HTML Text Adventure", + paragraphs: [ + "Totally Accurate Dating Simulator is, as the name suggests, a series of particularly realistic dating simulator experiences. Dive into a world of romance as you meet your matches, intriguing and disappointing. Who will you meet? Will it be someone your type? That's subjective, and the computer will not even slightly attempt to match you with someone suitable. Prepare yourself for matches that are rarely described with \"intriguing\" and much more frequently with \"funny.\" Discover which of the 28 endings will determine your fate, and lower your expectations. Significantly.", + ], + links: [ + { + text: "Play TADS 1", + link: "/projects/tads/tads1", + }, + { + text: "Play TADS 2", + link: "/projects/tads/tads2", + }, + ], + }, +] \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 0b1d793..54c3f8c 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -273,5 +273,26 @@ 0% calc(100% - var(--notch-size-small)) ); } + + .project-subtitle { + color: var(--color-highlight); + font-weight: 700; + font-style: italic; + margin-top: 0; + font-family: var(--font-mono); + } + + .project-banner { + width: 80%; + margin-left: auto; + margin-right: auto; + display: flex; + } + + .project-icon { + float: left; + margin: 16px 16px 16px 0; + width: 20%; + } } \ No newline at end of file diff --git a/src/routes/games/+page.svelte b/src/routes/games/+page.svelte index 9a4af78..1830204 100644 --- a/src/routes/games/+page.svelte +++ b/src/routes/games/+page.svelte @@ -1,7 +1,10 @@ @@ -14,21 +17,38 @@ subtitle="Just some small game projects" /> - -

Here you'll find all the game projects I've put online!

+ -

Do note: the things on here are mostly quick projects, largely unfinished, and possibly not fun.

+ + +
+

Here you'll find all the game projects I've put online!

+ {#each games as game} + {@render gameSummary({ game: game })} + {/each} +
- -
\ No newline at end of file + + +{#snippet gameSummary({ + game +}: { + game: Project; +})} +
+

{game.title}

+ {#if game.subtitle} +

» {game.subtitle}

+ {/if} + {#if game.banner} + + {/if} + {#if game.icon} + + {/if} + {#each game.paragraphs as paragraph} +

{@html paragraph}

+ {/each} + +
+{/snippet} \ No newline at end of file diff --git a/src/routes/projects/+page.svelte b/src/routes/projects/+page.svelte index 1296951..7548872 100644 --- a/src/routes/projects/+page.svelte +++ b/src/routes/projects/+page.svelte @@ -2,8 +2,8 @@ import BannerTitleAlt from "$lib/banner-title-alt.svelte"; import TableOfContents from "$lib/table-of-contents.svelte"; import Content from "$lib/content.svelte"; - import type { Project } from './projects'; - import { projects } from './projects'; + import type { Project } from '$lib/projects'; + import { projects } from '$lib/projects'; import LinkList from "$lib/link-list.svelte"; let getActiveProjects = function(projects: Project[], isActive: boolean): Project[] { @@ -49,40 +49,17 @@

{project.title}

{#if project.subtitle} -

» {project.subtitle}

+

» {project.subtitle}

{/if} {#if project.banner} - + {/if} {#if project.icon} - + {/if} {#each project.paragraphs as paragraph}

{@html paragraph}

{/each}
-{/snippet} - - \ No newline at end of file +{/snippet} \ No newline at end of file diff --git a/src/routes/projects/projectn5/devlog/2025/0523/+page.svelte b/src/routes/projects/projectn5/devlog/2025/0523/+page.svelte index ddcd0ff..9739fef 100644 --- a/src/routes/projects/projectn5/devlog/2025/0523/+page.svelte +++ b/src/routes/projects/projectn5/devlog/2025/0523/+page.svelte @@ -2,7 +2,6 @@ import BannerTitleAlt from "$lib/banner-title-alt.svelte"; import ContentSidebar from "$lib/content-sidebar.svelte"; import TableOfContents from "$lib/table-of-contents.svelte"; - import Video from "$lib/video.svelte";