mirror of https://github.com/Leinnan/doppler.git
71 lines
2.1 KiB
Rust
71 lines
2.1 KiB
Rust
use doppler::assets_cache::AssetsCache;
|
|
use doppler::camera::*;
|
|
use doppler::client::Client;
|
|
use doppler::glutin::event::{ElementState, VirtualKeyCode};
|
|
use doppler::map::*;
|
|
|
|
pub struct ExampleClient {
|
|
map: Map,
|
|
delta: f32,
|
|
}
|
|
|
|
impl Default for ExampleClient {
|
|
fn default() -> Self {
|
|
ExampleClient {
|
|
delta: 0.0,
|
|
map: Map::default(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Client for ExampleClient {
|
|
fn on_keyboard(&mut self, code: &VirtualKeyCode, state: &ElementState) {
|
|
match (code, state) {
|
|
(VirtualKeyCode::W, ElementState::Pressed) => self
|
|
.map
|
|
.camera
|
|
.process_keyboard(CameraMovement::FORWARD, self.delta),
|
|
(VirtualKeyCode::S, ElementState::Pressed) => self
|
|
.map
|
|
.camera
|
|
.process_keyboard(CameraMovement::BACKWARD, self.delta),
|
|
(VirtualKeyCode::A, ElementState::Pressed) => self
|
|
.map
|
|
.camera
|
|
.process_keyboard(CameraMovement::LEFT, self.delta),
|
|
(VirtualKeyCode::D, ElementState::Pressed) => self
|
|
.map
|
|
.camera
|
|
.process_keyboard(CameraMovement::RIGHT, self.delta),
|
|
(VirtualKeyCode::LControl, _) => self
|
|
.map
|
|
.camera
|
|
.enable_mouse_movement(state == &ElementState::Released),
|
|
(_, _) => (),
|
|
}
|
|
}
|
|
|
|
fn load_assets(&mut self, cache: &mut AssetsCache) {
|
|
cache.load_all_from_file("resources/test_objects.txt");
|
|
self.map = MapSave::load("resources/test_map.yaml", cache);
|
|
}
|
|
|
|
unsafe fn draw(&mut self) {
|
|
self.map.draw();
|
|
}
|
|
fn update(&mut self, delta: f32) {
|
|
self.delta = delta;
|
|
}
|
|
|
|
fn on_mouse_scroll(&mut self, yoffset: f32) {
|
|
self.map.camera.process_mouse_scroll(yoffset);
|
|
}
|
|
fn on_mouse_move(&mut self, x: f32, y: f32) {
|
|
self.map.camera.process_mouse_movement(x, y, true);
|
|
}
|
|
}
|
|
|
|
pub fn main() {
|
|
doppler::engine::Engine::default().run::<ExampleClient>();
|
|
}
|