feat(player): spawn player pill

This commit is contained in:
Kristofers Solo 2024-12-08 21:26:49 +02:00
parent c694281e88
commit 6f0f8471c5
7 changed files with 66 additions and 13 deletions

View File

@ -5,7 +5,7 @@ mod dev_tools;
mod maze;
mod player;
mod screens;
mod theme;
pub mod theme;
use bevy::{
asset::AssetMetaCheck,

17
src/player/assets.rs Normal file
View File

@ -0,0 +1,17 @@
use crate::theme::palette::rose_pine::PINE;
use bevy::prelude::*;
pub(super) fn generate_pill_mesh(radius: f32, half_length: f32) -> Mesh {
Mesh::from(Capsule3d {
radius,
half_length,
})
}
pub(super) fn blue_material() -> StandardMaterial {
StandardMaterial {
base_color: PINE,
emissive: PINE.to_linear() * 3.,
..default()
}
}

View File

@ -1,9 +1,12 @@
mod assets;
mod components;
mod systems;
use bevy::prelude::*;
use components::Player;
use systems::spawn_player;
pub(super) fn plugin(app: &mut App) {
app.register_type::<Player>().add_plugins(());
app.register_type::<Player>()
.add_systems(Startup, spawn_player);
}

View File

@ -1,4 +1,7 @@
use super::components::Player;
use super::{
assets::{blue_material, generate_pill_mesh},
components::Player,
};
use crate::maze::{events::RecreateMazeEvent, MazeConfig};
use bevy::prelude::*;
@ -8,14 +11,17 @@ pub fn spawn_player(
mut materials: ResMut<Assets<StandardMaterial>>,
maze_config: Res<MazeConfig>,
) {
}
let player_height = maze_config.height * 0.5;
let player_radius = maze_config.hex_size * 0.5;
pub fn respawn_player(
mut commands: Commands,
player_query: Query<Entity, With<Player>>,
mut recreation_events: EventReader<RecreateMazeEvent>,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
maze_config: Res<MazeConfig>,
) {
commands.spawn((
Name::new("Player"),
Player,
PbrBundle {
mesh: meshes.add(generate_pill_mesh(player_radius, player_height / 2.)),
material: materials.add(blue_material()),
transform: Transform::from_xyz(0., player_height * 2., 0.),
..default()
},
));
}

View File

@ -1,7 +1,6 @@
//! Reusable UI widgets & theming.
// Unused utilities may trigger this lints undesirably.
#![allow(dead_code)]
pub mod interaction;
pub mod palette;

View File

@ -1,3 +1,5 @@
pub mod rose_pine;
use bevy::prelude::*;
pub const BUTTON_HOVERED_BACKGROUND: Color = Color::srgb(0.186, 0.328, 0.573);
@ -8,3 +10,11 @@ pub const LABEL_TEXT: Color = Color::srgb(0.867, 0.827, 0.412);
pub const HEADER_TEXT: Color = Color::srgb(0.867, 0.827, 0.412);
pub const NODE_BACKGROUND: Color = Color::srgb(0.286, 0.478, 0.773);
pub(super) const fn rgb_u8(red: u8, green: u8, blue: u8) -> Color {
Color::srgb(scale(red), scale(green), scale(blue))
}
const fn scale(value: u8) -> f32 {
value as f32 / 255.
}

View File

@ -0,0 +1,18 @@
use super::rgb_u8;
use bevy::prelude::*;
pub const BASE: Color = rgb_u8(25, 23, 36);
pub const SURFACE: Color = rgb_u8(31, 29, 46);
pub const OVERLAY: Color = rgb_u8(38, 35, 58);
pub const MUTED: Color = rgb_u8(110, 106, 134);
pub const SUBTLE: Color = rgb_u8(144, 140, 170);
pub const TEXT: Color = rgb_u8(224, 222, 244);
pub const LOVE: Color = rgb_u8(235, 111, 146);
pub const GOLD: Color = rgb_u8(246, 193, 119);
pub const ROSE: Color = rgb_u8(235, 188, 186);
pub const PINE: Color = rgb_u8(49, 116, 143);
pub const FOAM: Color = rgb_u8(156, 207, 216);
pub const IRIS: Color = rgb_u8(196, 167, 231);
pub const HIGHLIGHT_LOW: Color = rgb_u8(33, 32, 46);
pub const HIGHLIGHT_MED: Color = rgb_u8(64, 61, 82);
pub const HIGHLIGHT_HIGH: Color = rgb_u8(82, 79, 103);