use bevy_ecs::world::World;
use components::{Camera, Texture, Transform};
use nalgebra::{Rotation2, Rotation3, Scale2, Scale3, Translation2, Translation3, Vector3};
use rendering::{assets::Assets, App};
use tracing::info;
use winit::event_loop::{ControlFlow, EventLoop};
#[cfg(target_arch = "wasm32")]
#[path = "wasm/mod.rs"]
pub mod platform;
#[cfg(not(target_arch = "wasm32"))]
#[path = "native/mod.rs"]
pub mod platform;
pub mod rendering;
pub mod components;
// Hi, you've found the real main function! This is called AFTER platform-specific initialization code.
pub fn start() {
info!(
"Hello, world! StarKingdoms.TK v{} says hello, running on {}",
env!("CARGO_PKG_VERSION"),
if cfg!(target_arch = "wasm32") {
"wasm"
} else {
"native"
}
);
info!("Creating the ECS world...");
let mut world = World::new();
world.insert_resource(Camera {
x: 0.0,
y: 0.0,
zoom: 1.0,
width: 0,
height: 0,
});
world.insert_resource(Assets::new());
world.spawn((Transform {
translation: Translation3::new(0.0, 0.0, 0.0),
rotation: Rotation3::from_axis_angle(&Vector3::z_axis(), 0.0),
scale: Scale3::new(20.0, 20.0, 1.0),
}, Texture { name: "hearty.svg".to_string() }));
let event_loop = EventLoop::new().unwrap();
event_loop.set_control_flow(ControlFlow::Wait);
event_loop.run_app(&mut App::new(world)).unwrap();
}