mirror of
https://github.com/italicsjenga/agb.git
synced 2024-12-23 08:11:33 +11:00
add hyperspace roll
This commit is contained in:
parent
6d7e6f934a
commit
7590a35921
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
|
@ -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"),
|
||||||
|
};
|
|
@ -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];
|
||||||
|
|
|
@ -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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue