mirror of
https://github.com/lisk77/comet.git
synced 2025-12-12 09:08:49 +00:00
refactor(examples): adapt to new entity system
This commit is contained in:
parent
053f1f48da
commit
4e2c18b0c1
3 changed files with 28 additions and 11 deletions
|
|
@ -4,7 +4,7 @@ fn setup(app: &mut App, renderer: &mut Renderer2D) {
|
||||||
// Initialize the texture atlas
|
// Initialize the texture atlas
|
||||||
renderer.init_atlas();
|
renderer.init_atlas();
|
||||||
|
|
||||||
// Register components
|
// Register needed components
|
||||||
app.register_component::<Position2D>();
|
app.register_component::<Position2D>();
|
||||||
app.register_component::<Color>();
|
app.register_component::<Color>();
|
||||||
|
|
||||||
|
|
@ -13,33 +13,33 @@ fn setup(app: &mut App, renderer: &mut Renderer2D) {
|
||||||
app,
|
app,
|
||||||
"player",
|
"player",
|
||||||
Position2D::from_vec(v2::new(0.0, 0.0)),
|
Position2D::from_vec(v2::new(0.0, 0.0)),
|
||||||
Color::new(0.0, 1.0, 0.0, 1.0) // Green player
|
Color::new(0.0, 1.0, 0.0, 1.0)
|
||||||
);
|
);
|
||||||
|
|
||||||
register_prefab!(
|
register_prefab!(
|
||||||
app,
|
app,
|
||||||
"enemy",
|
"enemy",
|
||||||
Position2D::from_vec(v2::new(5.0, 5.0)),
|
Position2D::from_vec(v2::new(5.0, 5.0)),
|
||||||
Color::new(1.0, 0.0, 0.0, 1.0) // Red enemy
|
Color::new(1.0, 0.0, 0.0, 1.0)
|
||||||
);
|
);
|
||||||
|
|
||||||
register_prefab!(
|
register_prefab!(
|
||||||
app,
|
app,
|
||||||
"pickup",
|
"pickup",
|
||||||
Position2D::from_vec(v2::new(-5.0, -5.0)),
|
Position2D::from_vec(v2::new(-5.0, -5.0)),
|
||||||
Color::new(1.0, 1.0, 0.0, 1.0) // Yellow pickup
|
Color::new(1.0, 1.0, 0.0, 1.0)
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Some(player_id) = app.spawn_prefab("player") {
|
if let Some(player_id) = app.spawn_prefab("player") {
|
||||||
debug!("Spawned player with ID: {}", player_id);
|
debug!("Spawned player with ID: {:?}", player_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(enemy_id) = app.spawn_prefab("enemy") {
|
if let Some(enemy_id) = app.spawn_prefab("enemy") {
|
||||||
debug!("Spawned enemy with ID: {}", enemy_id);
|
debug!("Spawned enemy with ID: {:?}", enemy_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(pickup_id) = app.spawn_prefab("pickup") {
|
if let Some(pickup_id) = app.spawn_prefab("pickup") {
|
||||||
debug!("Spawned pickup with ID: {}", pickup_id);
|
debug!("Spawned pickup with ID: {:?}", pickup_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,8 @@ fn handle_input(app: &mut App, dt: f32) {
|
||||||
{
|
{
|
||||||
update_position(
|
update_position(
|
||||||
app.input_manager().clone(),
|
app.input_manager().clone(),
|
||||||
app.get_component_mut::<Transform2D>(1).unwrap(),
|
app.get_component_mut::<Transform2D>(EntityId { index: 1, gen: 0 })
|
||||||
|
.unwrap(),
|
||||||
dt,
|
dt,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
use comet::prelude::*;
|
use comet::prelude::*;
|
||||||
|
|
||||||
|
// A general state struct that caches known/static EntityIds
|
||||||
|
// In this example we just cache the EntityId for the text entity
|
||||||
|
#[derive(Default)]
|
||||||
|
struct TextState {
|
||||||
|
text: EntityId,
|
||||||
|
}
|
||||||
|
|
||||||
fn setup(app: &mut App, renderer: &mut Renderer2D) {
|
fn setup(app: &mut App, renderer: &mut Renderer2D) {
|
||||||
renderer.init_atlas();
|
renderer.init_atlas();
|
||||||
// Loading the font from the res/fonts directory with a rendered size of 77px
|
// Loading the font from the res/fonts directory with a rendered size of 77px
|
||||||
|
|
@ -24,6 +31,11 @@ fn setup(app: &mut App, renderer: &mut Renderer2D) {
|
||||||
sRgba::<f32>::from_hex("#abb2bfff"), // Color of the text
|
sRgba::<f32>::from_hex("#abb2bfff"), // Color of the text
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Cache text entity in game state
|
||||||
|
if let Some(state) = app.game_state_mut::<TextState>() {
|
||||||
|
state.text = text;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unused_variables)]
|
#[allow(unused_variables)]
|
||||||
|
|
@ -32,9 +44,12 @@ fn update(app: &mut App, renderer: &mut Renderer2D, dt: f32) {
|
||||||
let size = renderer.size();
|
let size = renderer.size();
|
||||||
|
|
||||||
// Recalculating the position of the text every frame to ensure the same relative position
|
// Recalculating the position of the text every frame to ensure the same relative position
|
||||||
let transform = app.get_component_mut::<Transform2D>(1).unwrap();
|
if let Some(state) = app.game_state::<TextState>() {
|
||||||
|
if let Some(transform) = app.get_component_mut::<Transform2D>(state.text) {
|
||||||
transform.position_mut().set_x(-((size.width - 50) as f32));
|
transform.position_mut().set_x(-((size.width - 50) as f32));
|
||||||
transform.position_mut().set_y((size.height - 100) as f32);
|
transform.position_mut().set_y((size.height - 100) as f32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
renderer.render_scene_2d(app.scene_mut());
|
renderer.render_scene_2d(app.scene_mut());
|
||||||
}
|
}
|
||||||
|
|
@ -42,6 +57,7 @@ fn update(app: &mut App, renderer: &mut Renderer2D, dt: f32) {
|
||||||
fn main() {
|
fn main() {
|
||||||
App::new()
|
App::new()
|
||||||
.with_preset(App2D)
|
.with_preset(App2D)
|
||||||
|
.with_game_state(TextState::default())
|
||||||
.with_title("Simple Text")
|
.with_title("Simple Text")
|
||||||
.run::<Renderer2D>(setup, update);
|
.run::<Renderer2D>(setup, update);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue