You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.2 KiB

  1. use log::{error, info};
  2. use space_crush_app::{App, Error};
  3. use space_crush_common::{
  4. misc::{init_logger, Vfs},
  5. Dispatcher,
  6. };
  7. use specs::{World, WorldExt};
  8. fn main() -> Result<(), Error> {
  9. let vfs = Vfs::new(&["space-crush-app"])?;
  10. init_logger(&vfs, "log4rs.yml");
  11. vfs.log_info();
  12. info!("Application started");
  13. if let Err(err) = run(vfs) {
  14. error!("Error while executing application: {}", err);
  15. return Err(err);
  16. }
  17. info!("Application exited");
  18. Ok(())
  19. }
  20. fn run(vfs: Vfs) -> Result<(), Error> {
  21. let mut world = World::new();
  22. world.insert(vfs);
  23. let mut common = Dispatcher::new(&mut world);
  24. let mut app = App::new(&mut world)?;
  25. create_test_world(&mut world);
  26. while app.is_running() {
  27. common.process(&world);
  28. app.process(&world)?;
  29. }
  30. Ok(())
  31. }
  32. fn create_test_world(world: &mut World) {
  33. use glc::vector::Vector2f;
  34. use space_crush_common::components::{Planet, Position};
  35. use specs::Builder;
  36. world
  37. .create_entity()
  38. .with(Position {
  39. pos: Vector2f::default(),
  40. size: 500.0,
  41. })
  42. .with(Planet)
  43. .build();
  44. }