add hyperspace roll

This commit is contained in:
Corwin 2024-04-28 23:00:03 +01:00
parent 6d7e6f934a
commit 7590a35921
No known key found for this signature in database
6 changed files with 47 additions and 24 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -0,0 +1,30 @@
import { ShowcaseGame, shuffle } from "@/app/showcase/games";
import h1 from "./hyperspace-roll-0.png";
import h2 from "./hyperspace-roll-1.png";
const Screenshots = [h1, h2];
export const Hyperspace: ShowcaseGame = {
name: "Hyperspace Roll",
developers: shuffle(["Corwin Kuiper", "Gwilym Inzani", "Sam Williams"]),
screenshots: Screenshots,
description: (
<>
<p>
Get through as many levels as possible in this space themed, dice
rolling roguelike.
</p>
<p>
Build up powerful combos to defeat enemies which keep getting stronger.
Slowly acquire more dice and upgrade them in order to handle the
increasing strength of the enemies you face.
</p>
<p>
Hyperspace Roll was influenced by great games such as Slay the Spire,
FTL and the board game Escape: The Curse of the Temple.
</p>
</>
),
itch: new URL("https://lostimmortal.itch.io/the-purple-night"),
};

View file

@ -2,6 +2,7 @@ import { StaticImageData } from "next/image";
import { ReactNode } from "react"; import { ReactNode } from "react";
import { HatWiz } from "./data/tapir/hatwiz/hatwiz"; import { HatWiz } from "./data/tapir/hatwiz/hatwiz";
import { Purple } from "./data/tapir/purple/purple"; import { Purple } from "./data/tapir/purple/purple";
import { Hyperspace } from "./data/tapir/hyperspace/hyperspace";
export interface ShowcaseGame { export interface ShowcaseGame {
name: string; name: string;
@ -24,4 +25,4 @@ export function shuffle<T>(a: T[]) {
return a; return a;
} }
export const Games: ShowcaseGame[] = [HatWiz, Purple]; export const Games: ShowcaseGame[] = [HatWiz, Purple, Hyperspace];

View file

@ -1,10 +1,8 @@
import { Metadata } from "next"; import { Metadata } from "next";
import { ContentBlock } from "@/components/contentBlock"; import { ContentBlock } from "@/components/contentBlock";
import { Games, ShowcaseGame } from "./games"; import { Games, ShowcaseGame } from "./games";
import Link from "next/link";
import { slugify } from "@/sluggify"; import { slugify } from "@/sluggify";
import { GameDisplay, GameGrid, GameImage } from "./styles"; import { GameDisplay, GameGrid, GameImage } from "./styles";
import Image from "next/image";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Games made with agb", title: "Games made with agb",
@ -28,15 +26,11 @@ export default function ColourPickerPage() {
} }
function Game({ game }: { game: ShowcaseGame }) { function Game({ game }: { game: ShowcaseGame }) {
const lastImage = game.screenshots[game.screenshots.length - 1]; const showcaseImage = game.screenshots[game.screenshots.length - 1];
return ( return (
<GameDisplay> <GameDisplay href={`./showcase/${slugify(game.name)}`}>
<Link href={`./showcase/${slugify(game.name)}`}> <GameImage src={showcaseImage} alt={`Screenshot of ${game.name}`} />
<GameImage>
<Image src={lastImage} alt={`Screenshot of ${game.name}`} />
</GameImage>
<h2>{game.name}</h2> <h2>{game.name}</h2>
</Link>
</GameDisplay> </GameDisplay>
); );
} }

View file

@ -1,6 +1,8 @@
"use client"; "use client";
import Link from "next/link";
import styled from "styled-components"; import styled from "styled-components";
import Image from "next/image";
export const GameGrid = styled.div` export const GameGrid = styled.div`
display: flex; display: flex;
@ -8,22 +10,18 @@ export const GameGrid = styled.div`
justify-content: center; justify-content: center;
`; `;
export const GameImage = styled.div` export const GameImage = styled(Image)`
img {
width: 100%; width: 100%;
width: round(down, 100%, 240px); width: round(down, 100%, 240px);
height: auto; height: auto;
image-rendering: pixelated; image-rendering: pixelated;
}
`; `;
export const GameDisplay = styled.div` export const GameDisplay = styled(Link)`
width: 600px; width: 600px;
a {
text-align: center; text-align: center;
color: black; color: black;
text-decoration: none; text-decoration: none;
}
h2 { h2 {
margin: 0; margin: 0;