more mobile stuff

This commit is contained in:
Corwin 2024-04-05 17:09:50 +01:00
parent e43d2d5a3e
commit 552f8f878d
No known key found for this signature in database
3 changed files with 125 additions and 115 deletions

View file

@ -6,7 +6,7 @@ import {
useState,
} from "react";
import mGBA from "./vendor/mgba";
import { KeyBindings } from "./bindings";
import { GbaKey, KeyBindings } from "./bindings";
import { styled } from "styled-components";
type Module = any;
@ -36,6 +36,8 @@ const MgbaCanvas = styled.canvas`
export interface MgbaHandle {
restart: () => void;
buttonPress: (key: GbaKey) => void;
buttonRelease: (key: GbaKey) => void;
}
export const Mgba = forwardRef<MgbaHandle, MgbaProps>(
@ -87,7 +89,7 @@ export const Mgba = forwardRef<MgbaHandle, MgbaProps>(
try {
mgbaModule.current.quitGame();
mgbaModule.current.quitMgba();
} catch {}
} catch { }
};
}, [state]);
@ -124,6 +126,8 @@ export const Mgba = forwardRef<MgbaHandle, MgbaProps>(
useImperativeHandle(ref, () => {
return {
restart: () => mgbaModule.current.quickReload(),
buttonPress: (key: GbaKey) => mgbaModule.current.buttonPress(key),
buttonRelease: (key: GbaKey) => mgbaModule.current.buttonRelease(key),
};
});

View file

@ -1,6 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>agbrs crash backtrace</title>
<style>
body {

View file

@ -1,127 +1,132 @@
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>agb - a rust framework for making Game Boy Advance games</title>
<style>
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
font: 1.2em/1.62 sans-serif;
background-color: white;
font-size: 1.5rem;
line-height: 1.6;
min-height: 100vh;
display: flex;
flex-direction: column;
margin: 0;
}
h1,
h2,
h3 {
line-height: 1.2;
}
.gameDisplay > div {
display: flex;
justify-content: center;
height: 100%;
}
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>agb - a rust framework for making Game Boy Advance games</title>
<style>
*,
*::before,
*::after {
box-sizing: border-box;
}
.gameDisplay {
height: clamp(480px, 40vh, calc(100vw / 3));
max-width: 100vw;
margin-top: 20px;
overflow-x: hidden;
}
body {
font: 1.2em/1.62 sans-serif;
background-color: white;
font-size: 1.5rem;
line-height: 1.6;
min-height: 100vh;
display: flex;
flex-direction: column;
margin: 0;
}
.gameDisplay .imageWrapper {
aspect-ratio: 15 / 31;
height: 100%;
}
h1,
h2,
h3 {
line-height: 1.2;
}
.gameDisplay .imageWrapper > img {
height: 100%;
image-rendering: pixelated;
}
.gameDisplay>div {
display: flex;
justify-content: center;
height: 100%;
}
.gameDisplay iframe {
border: 0;
height: 100%;
max-width: 100vw;
aspect-ratio: 240 / 160;
}
.gameDisplay {
height: clamp(480px, 40vh, calc(100vw / 3));
max-width: 100vw;
margin-top: 20px;
overflow: hidden;
}
header,
.help {
max-width: 60%;
margin-left: auto;
margin-right: auto;
margin-block-end: 40px;
}
.gameDisplay .imageWrapper {
aspect-ratio: 15 / 31;
height: 100%;
}
.red {
background-color: #f5755e;
flex-grow: 1;
}
.gameDisplay .imageWrapper>img {
height: 100%;
image-rendering: pixelated;
}
.links {
margin-left: auto;
margin-right: auto;
display: flex;
justify-content: space-around;
margin-top: 40px;
margin-bottom: 40px;
max-width: 40rem;
}
.gameDisplay iframe {
border: 0;
height: 100%;
max-width: 100vw;
aspect-ratio: 240 / 160;
}
.links > a {
text-decoration: none;
color: black;
background-color: #fad288;
border: solid #fad288 2px;
border-radius: 5px;
padding: 5px 10px;
}
header,
.desktopHelp {
max-width: 60%;
margin-left: auto;
margin-right: auto;
margin-block-end: 40px;
}
.links > a:hover {
border: solid black 2px;
}
</style>
</head>
<body>
<header>
<h1>agb - a rust framework for making Game Boy Advance games</h1>
</header>
<section>
<div class="gameDisplay">
<div>
<div class="imageWrapper"><img src="assets/left.png" /></div>
<iframe
onload="this.contentWindow.focus()"
src="mgba/index.html#/assets/combo.gba"
></iframe>
<div class="imageWrapper"><img src="assets/right.png" /></div>
</div>
.red {
background-color: #f5755e;
flex-grow: 1;
}
.links {
margin-left: auto;
margin-right: auto;
display: flex;
justify-content: space-around;
margin-top: 40px;
margin-bottom: 40px;
max-width: 40rem;
}
.links>a {
text-decoration: none;
color: black;
background-color: #fad288;
border: solid #fad288 2px;
border-radius: 5px;
padding: 5px 10px;
}
.links>a:hover {
border: solid black 2px;
}
</style>
</head>
<body>
<header>
<h1>agb - a rust framework for making Game Boy Advance games</h1>
</header>
<section>
<div class="gameDisplay">
<div>
<div class="imageWrapper"><img src="assets/left.png" /></div>
<iframe id="gameFrame" onload="this.contentWindow.focus()" src="mgba/index.html#/assets/combo.gba"></iframe>
<div class="imageWrapper"><img src="assets/right.png" /></div>
</div>
<div class="help">
<p>
Press escape to open the menu where you can view or change controls
and restart the game. The game provided is a combination of multiple
Game Boy Advance games made using agb, you can press left or right on
the main menu to switch game.
</p>
</div>
</section>
</div>
<div class="mobileControls">
<section class="red">
<div class="links">
<a href="https://github.com/agbrs/agb">GitHub</a>
<a href="book/">Book</a>
</div>
</section>
</body>
</html>
</div>
<div class="desktopHelp">
<p>
Press escape to open the menu where you can view or change controls
and restart the game. The game provided is a combination of multiple
Game Boy Advance games made using agb, you can press left or right on
the main menu to switch game.
</p>
</div>
</section>
<section class="red">
<div class="links">
<a href="https://github.com/agbrs/agb">GitHub</a>
<a href="book/">Book</a>
</div>
</section>
</body>
</html>