Merge pull request #28 from kristoferssolo/fix/asset-loading

This commit is contained in:
Kristofers Solo 2025-01-06 16:44:43 +02:00 committed by GitHub
commit 69eacd42d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 77 additions and 77 deletions

View File

@ -21,17 +21,13 @@ jobs:
uses: dtolnay/rust-toolchain@stable
- name: Install dependencies
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev
- name: Install cargo-nextest
run: cargo install cargo-nextest
- name: Populate target directory from cache
uses: Leafwing-Studios/cargo-cache@v2
with:
sweep-cache: true
- name: Run tests
run: |
cargo nextest run --locked --workspace --no-default-features --all-targets
# Run doctests separately since nextest doesn't support them
cargo test --doc --locked --workspace --no-default-features
cargo test --locked --workspace --no-default-features
# Run clippy lints.
clippy:
name: Clippy

2
Cargo.lock generated
View File

@ -3129,7 +3129,7 @@ dependencies = [
[[package]]
name = "maze-ascension"
version = "1.0.1"
version = "1.0.2"
dependencies = [
"anyhow",
"bevy",

View File

@ -1,7 +1,7 @@
[package]
name = "maze-ascension"
authors = ["Kristofers Solo <dev@kristofers.xyz>"]
version = "1.0.1"
version = "1.0.2"
edition = "2021"
[dependencies]

View File

@ -37,8 +37,8 @@ pub struct MazeAssets {
impl MazeAssets {
/// Creates a new instance of MazeAssets with all necessary meshes and materials.
pub fn new(
meshes: &mut ResMut<Assets<Mesh>>,
materials: &mut ResMut<Assets<StandardMaterial>>,
meshes: &mut Assets<Mesh>,
materials: &mut Assets<StandardMaterial>,
global_config: &GlobalMazeConfig,
) -> Self {
let custom_materials = RosePineDawn::iter()

View File

@ -1,4 +1,4 @@
mod assets;
pub mod assets;
pub mod commands;
pub mod components;
mod systems;

View File

@ -4,6 +4,8 @@
use bevy::prelude::*;
use crate::{
hint::assets::HintAssets,
player::assets::PlayerAssets,
screens::Screen,
theme::{interaction::InteractionAssets, prelude::*},
};
@ -33,6 +35,10 @@ fn continue_to_title_screen(mut next_screen: ResMut<NextState<Screen>>) {
next_screen.set(Screen::Title);
}
const fn all_assets_loaded(interaction_assets: Option<Res<InteractionAssets>>) -> bool {
interaction_assets.is_some()
const fn all_assets_loaded(
player_assets: Option<Res<PlayerAssets>>,
interaction_assets: Option<Res<InteractionAssets>>,
hints_assets: Option<Res<HintAssets>>,
) -> bool {
player_assets.is_some() && interaction_assets.is_some() && hints_assets.is_some()
}

View File

@ -1,38 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="description"
content="Maze exploration game built using the Bevy engine">
<meta name="keywords" content="game, bevy">
<title>Maze Ascension: The Labyrinth of Echoes</title>
<link data-trunk rel="copy-dir" href="../assets" />
<link data-trunk rel="inline" href="style.css" />
<link data-trunk rel="inline" type="module" href="restart-audio-context.js" />
<link data-trunk
rel="rust"
data-cargo-no-default-features
data-wasm-opt="s"
href="../" />
</head>
<body>
<div id="game" class="center">
<div id="loading-screen" class="center">
<span class="spinner"></span>
</div>
<canvas id="bevy"> Javascript and canvas support is required </canvas>
<head>
<meta charset="utf-8" />
<meta name="description" content="Maze exploration game built using the Bevy engine">
<meta name="keywords" content="game, bevy">
<title>Maze Ascension: The Labyrinth of Echoes</title>
<link data-trunk rel="copy-dir" href="../assets" />
<link data-trunk rel="inline" href="style.css" />
<link data-trunk rel="inline" type="module" href="restart-audio-context.js" />
<link data-trunk rel="rust" data-cargo-no-default-features data-wasm-opt="s" href="../" />
</head>
<body>
<div id="game" class="center">
<div id="loading-screen" class="center">
<span class="spinner"></span>
</div>
<script type="module">
// Hide loading screen when the game starts.
const loading_screen = document.getElementById("loading-screen");
const bevy = document.getElementById("bevy");
const observer = new MutationObserver(() => {
if (bevy.height > 1) {
loading_screen.style.display = "none";
observer.disconnect();
}
});
observer.observe(bevy, { attributeFilter: ["height"] });
</script>
</body>
<canvas id="bevy"> Javascript and canvas support is required </canvas>
</div>
<script type="module">
// Hide loading screen when the game starts.
const loading_screen = document.getElementById("loading-screen");
const bevy = document.getElementById("bevy");
const observer = new MutationObserver(() => {
if (bevy.height > 1) {
loading_screen.style.display = "none";
observer.disconnect();
}
});
observer.observe(bevy, {attributeFilter: ["height"]});
</script>
</body>
</html>

View File

@ -1,56 +1,56 @@
:root {
/* Consider adjusting this color to match your splash screen! */
--loading-screen-bg-color: #282828;
/* Consider adjusting this color to match your splash screen! */
--loading-screen-bg-color: #282828;
}
* {
margin: 0;
padding: 0;
border: 0;
margin: 0;
padding: 0;
border: 0;
}
html,
body {
width: 100%;
height: 100%;
width: 100%;
height: 100%;
}
.center {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
#loading-screen {
background-color: var(--loading-screen-bg-color);
background-color: var(--loading-screen-bg-color);
}
.spinner {
width: 128px;
height: 128px;
border: 64px solid transparent;
border-bottom-color: #ececec;
border-right-color: #b2b2b2;
border-top-color: #787878;
border-radius: 50%;
box-sizing: border-box;
animation: spin 1.2s linear infinite;
width: 128px;
height: 128px;
border: 64px solid transparent;
border-bottom-color: #ececec;
border-right-color: #b2b2b2;
border-top-color: #787878;
border-radius: 50%;
box-sizing: border-box;
animation: spin 1.2s linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
100% {
transform: rotate(360deg);
}
}
#bevy {
/* Hide Bevy app before it loads */
height: 0;
/* Hide Bevy app before it loads */
height: 0;
}