2024-11-23 01:40:50 +01:00
|
|
|
use bevy::{prelude::*, sprite::MaterialMesh2dBundle};
|
2024-11-22 22:26:20 +01:00
|
|
|
|
2024-11-22 22:14:13 +01:00
|
|
|
use bevy_rapier2d::prelude::*;
|
|
|
|
|
2024-11-22 22:55:45 +01:00
|
|
|
use crate::{AppState, METER};
|
2024-11-22 22:26:20 +01:00
|
|
|
|
|
|
|
use super::set::IngameSet;
|
2024-11-22 22:14:13 +01:00
|
|
|
#[derive(Component)]
|
|
|
|
struct Player {}
|
|
|
|
|
|
|
|
pub(super) fn player_plugin(app: &mut App) {
|
2024-11-22 22:26:20 +01:00
|
|
|
app.add_systems(OnEnter(AppState::InGame), add_player.in_set(IngameSet));
|
2024-11-22 22:14:13 +01:00
|
|
|
}
|
|
|
|
|
2024-11-23 01:40:50 +01:00
|
|
|
pub fn add_player(
|
|
|
|
mut commands: Commands,
|
|
|
|
mut meshes: ResMut<Assets<Mesh>>,
|
|
|
|
mut materials: ResMut<Assets<ColorMaterial>>,
|
|
|
|
) {
|
|
|
|
// TODO replace
|
|
|
|
|
2024-11-22 22:26:20 +01:00
|
|
|
commands
|
2024-11-23 01:40:50 +01:00
|
|
|
.spawn((
|
|
|
|
Player {},
|
|
|
|
MaterialMesh2dBundle {
|
|
|
|
mesh: meshes.add(Circle::new(20.)).into(),
|
|
|
|
material: materials.add(Color::linear_rgb(0., 1., 0.)),
|
|
|
|
transform: Transform::from_xyz(100., 100., 0.),
|
|
|
|
..default()
|
|
|
|
},
|
|
|
|
))
|
2024-11-22 22:55:45 +01:00
|
|
|
.insert((
|
|
|
|
RigidBody::Dynamic,
|
|
|
|
Collider::cuboid(0.4 * METER, 0.9 * METER),
|
|
|
|
Velocity::default(),
|
|
|
|
))
|
2024-11-22 22:26:20 +01:00
|
|
|
.insert(ActiveEvents::COLLISION_EVENTS);
|
2024-11-22 22:14:13 +01:00
|
|
|
}
|