Advertisement
Guest User

Untitled

a guest
May 8th, 2016
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. #![allow(dead_code)]
  2. #![allow(unused_imports)]
  3. #![feature(set_stdio)]
  4. extern crate multiinput;
  5. extern crate nalgebra as na;
  6. extern crate num;
  7. #[macro_use]
  8. extern crate glium;
  9. extern crate glium_text;
  10. extern crate time;
  11. #[macro_use]
  12. extern crate bitflags;
  13.  
  14. mod rendering;
  15. mod input;
  16. mod handlerbasic;
  17. mod games;
  18. mod collision;
  19. mod clock;
  20. mod geometry;
  21. mod utils;
  22.  
  23. use na::{Vec2, Vec1, Rot2};
  24. use utils::debug::*;
  25. use std::env;
  26. use std::io::*;
  27.  
  28. fn main() {
  29. env::set_var("RUST_BACKTRACE", "1");
  30. utils::debug::set_flags(DEBUGALL);
  31. debug(&format!("Starting Up - Date: {}", time::now_utc().ctime()));
  32. let error_writer = Box::new(ErrorWriter {stderr: stderr()});
  33. set_panic(error_writer);
  34.  
  35. let renderer: Box<rendering::Renderer> = Box::new(rendering::glium_renderer::GliumRenderer::new((1000, 800)));
  36. let input_handler: Box<input::InputHandler> = Box::new(input::multihandler::MultiInput::new());
  37. //let game: Box<games::Game> = Box::new(games::pong::builder::PongBuilder::init().build_game());
  38. let game: Box<games::Game> = Box::new(
  39. games::physics_test_game::builder::PhysicsTestBuilder::init()
  40. .add_rect(Vec2::new(0.5, 0.0), 0.2, 0.2, Rot2::new(Vec1::new(0.0))).with_velocity(Vec2::new(-0.25, 0.0))
  41. .add_circle(Vec2::new(-0.5, 0.0), 0.1).player_controlled()
  42. .build_game());
  43. //let game: Box<games::Game> = Box::new(games::input_test_game::InputTestGame::new());
  44. //let game: Box<games::Game> = Box::new(games::primitive_test_game::PrimitiveTestGame);
  45. let mut handler: Box<Handler> = Box::new(handlerbasic::HandlerBasic::new(renderer, input_handler, game));
  46.  
  47. handler.init();
  48. while !handler.exit() {
  49. handler.update_input();
  50. handler.update_rendering();
  51. handler.update_logic();
  52. }
  53. }
  54.  
  55. /// Handler
  56. pub trait Handler {
  57. fn exit(&self) -> bool { false }
  58. fn init(&mut self) {}
  59. fn update_input(&mut self) {}
  60. fn update_logic(&mut self) {}
  61. fn update_rendering(&mut self) {}
  62. }
  63.  
  64. #[allow(dead_code)]
  65. pub struct HandlerStub;
  66.  
  67. impl Handler for HandlerStub{}
  68.  
  69. pub struct ErrorWriter {
  70. stderr: Stderr,
  71. }
  72.  
  73. impl Write for ErrorWriter {
  74. fn write(&mut self, buf: &[u8]) -> Result<usize> {
  75. log_to_file_bytes(buf);
  76. self.stderr.write(buf)
  77. }
  78.  
  79. fn flush(&mut self) -> Result<()> {
  80. self.stderr.flush()
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement