123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- use ggez::event::EventHandler;
- use ggez::{Context, GameResult};
- use specs::world::WorldExt;
- use crate::{components, resources, sys};
- /// The shared values that the game state needs, specifically as the specs world
- pub struct MyGame {
- pub world: specs::World,
- }
- impl MyGame {
- // setup the necessary initial state for `MyGame`, inserting the
- // relevant resources into it
- pub fn setup(ctx: &mut Context) -> GameResult<MyGame> {
- let mut world = specs::World::new();
- components::register(&mut world);
- world.insert(ncollide2d::world::CollisionWorld::<f32, specs::Entity>::new(0.1));
- resources::world_from_file(&mut world, "assets/main.tmx");
- let image = ggez::graphics::Image::new(ctx, "/spritesheet.png")?;
- let mut sprites = ggez::graphics::spritebatch::SpriteBatch::new(image);
- sprites.set_filter(ggez::graphics::FilterMode::Nearest);
- world.insert(sprites);
- world.insert(resources::KeySet::new());
- Ok(MyGame { world })
- }
- }
- impl EventHandler for MyGame {
- fn update(&mut self, _ctx: &mut Context) -> GameResult<()> {
- sys::input::systems(self);
- sys::physics::systems(self);
- Ok(())
- }
- fn draw(&mut self, ctx: &mut Context) -> GameResult<()> {
- sys::drawing::systems(self, ctx)
- }
- fn key_down_event(
- &mut self,
- ctx: &mut Context,
- keycode: winit::VirtualKeyCode,
- _keymod: ggez::event::KeyMods,
- _repeat: bool,
- ) {
- if keycode == winit::VirtualKeyCode::Escape {
- ggez::event::quit(ctx);
- }
- self.world
- .write_resource::<resources::KeySet>()
- .insert(keycode);
- }
- fn key_up_event(
- &mut self,
- _ctx: &mut Context,
- keycode: winit::VirtualKeyCode,
- _keymod: ggez::event::KeyMods,
- ) {
- self.world
- .write_resource::<resources::KeySet>()
- .remove(&keycode);
- }
- }
|