123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #[macro_use] extern crate specs_derive;
- #[macro_use] extern crate specs_system_macro;
- use ggez::graphics::Drawable;
- use specs::prelude::*;
- use specs::world::WorldExt;
- mod keys;
- use keys::Input;
- struct Game {
- pub world: specs::World,
- }
- impl Game {
- fn setup() -> Game {
- let mut world = specs::World::new();
- world.insert(Input::new());
- Game { world }
- }
- }
- impl ggez::event::EventHandler for Game {
- fn draw(&mut self, ctx: &mut ggez::Context) -> ggez::GameResult<()> {
- Ok(())
- }
- fn update(&mut self, _ctx: &mut ggez::Context) -> ggez::GameResult<()> {
- let input: &Input = &*self.world.read_resource();
- println!("{:?}", input);
- Ok(())
- }
- // to handle events, we modify the stored KeyState resource
- fn key_down_event(
- &mut self,
- ctx: &mut ggez::Context,
- keycode: winit::VirtualKeyCode,
- _keymod: ggez::event::KeyMods,
- _repeat: bool,
- ) {
- if keycode == winit::VirtualKeyCode::Escape {
- ggez::event::quit(ctx);
- }
- Input::handle_down(&mut self.world.write_resource(),
- keycode);
- }
- fn key_up_event(
- &mut self,
- _ctx: &mut ggez::Context,
- keycode: winit::VirtualKeyCode,
- _keymod: ggez::event::KeyMods,
- ) {
- Input::handle_up(&mut self.world.write_resource(),
- keycode);
- }
- }
- fn main() -> ggez::GameResult<()> {
- let (mut ctx, mut evloop) = ggez::ContextBuilder::new("game", "me")
- .window_mode(ggez::conf::WindowMode {
- width: 800.0,
- height: 600.0,
- ..ggez::conf::WindowMode::default()
- })
- .build()?;
- let mut game = Game::setup();
- ggez::event::run(&mut ctx, &mut evloop, &mut game)
- }
|