Simon Heath
(aka icefox, icefoz, icefoxen, whatever username is free)
Last updated: June 18th, 2017
Roll your own
svenstaro:
Me:
EventHandler traitpub trait EventHandler {
fn update(&mut self,
ctx: &mut Context,
dt: Duration) -> GameResult<()>;
fn draw(&mut self, ctx: &mut Context) -> GameResult<()>;
fn mouse_button_down_event(
&mut self,
button: MouseButton,
x: i32,
y: i32
) { ... }
fn mouse_button_up_event(&mut self,
button: MouseButton,
x: i32, y: i32) { ... }
fn mouse_motion_event(
&mut self,
state: MouseState,
x: i32,
y: i32,
xrel: i32,
yrel: i32
) { ... }
fn mouse_wheel_event(&mut self,
x: i32, y: i32) { ... }
fn key_down_event(&mut self,
keycode: Keycode,
keymod: Mod,
repeat: bool) { ... }
fn key_up_event(&mut self,
keycode: Keycode,
keymod: Mod,
repeat: bool) { ... }
fn controller_button_down_event(&mut self,
btn: Button) { ... }
fn controller_button_up_event(&mut self,
btn: Button) { ... }
fn controller_axis_event(&mut self,
axis: Axis, value: i16) { ... }
fn focus_event(&mut self, gained: bool) { ... }
fn quit_event(&mut self) -> bool { ... }
}extern crate ggez;
use ggez::{GameResult};
struct MainState {
frames: usize,
}
impl MainState {
fn new() -> GameResult<MainState> {
let s = MainState {
frames: 0,
};
Ok(s)
}
}
fn main() {
let state = &mut MainState::new()
.expect("Failed to create MainState");
}extern crate ggez;
use ggez::conf;
use ggez::event;
use ggez::{GameResult, Context};
use std::time::Duration;
struct MainState {
frames: usize,
}
impl MainState {
fn new() -> GameResult<MainState> {
let s = MainState {
frames: 0,
};
Ok(s)
}
}
impl event::EventHandler for MainState {
fn update(&mut self, _ctx: &mut Context, _dt: Duration)
-> GameResult<()> {
if (self.frames % 100) == 0 {
println!("FPS: {}", ggez::timer::get_fps(ctx));
}
self.frames += 1;
Ok(())
}
fn draw(&mut self, ctx: &mut Context)
-> GameResult<()> {
Ok(())
}
}
fn main() {
let c = conf::Conf::new();
let ctx = &mut Context::load_from_conf(
"helloworld",
"ggez", c)
.expect("Failed to create Context");
let state = &mut MainState::new(ctx)
.expect("Failed to create MainState");
event::run(ctx, state)
.expect("Runtime error")
}extern crate ggez;
use ggez::conf;
use ggez::event;
use ggez::{GameResult, Context};
use ggez::graphics;
use std::time::Duration;
struct MainState {
text: graphics::Text,
frames: usize,
}
impl MainState {
fn new(ctx: &mut Context) -> GameResult<MainState> {
let font = graphics::Font::new(
ctx, "/DejaVuSerif.ttf", 48)?;
let text = graphics::Text::new(
ctx, "Hello world!", &font)?;
let s = MainState {
text: text,
frames: 0,
};
Ok(s)
}
}
impl event::EventHandler for MainState {
fn update(&mut self, ctx: &mut Context, _dt: Duration)
-> GameResult<()> {
if (self.frames % 100) == 0 {
println!("FPS: {}", ggez::timer::get_fps(ctx));
}
self.frames += 1;
Ok(())
}
fn draw(&mut self, ctx: &mut Context)
-> GameResult<()> {
graphics::clear(ctx);
let dest_point = graphics::Point::new(
320.0,
240.0);
graphics::draw(ctx, &self.text, dest_point, 0.0)?;
graphics::present(ctx);
Ok(())
}
}
fn main() {
let c = conf::Conf::new();
let ctx = &mut Context::load_from_conf(
"helloworld", "ggez", c)
.expect("Failed to create Context");
let state = &mut MainState::new(ctx)
.expect("Failed to create MainState");
event::run(ctx, state)
.expect("Runtime error")
}unsafe is your friend