refactoring window size
This commit is contained in:
parent
86356b3904
commit
2d99a49eda
|
|
@ -2,7 +2,8 @@
|
||||||
use fyrox::{
|
use fyrox::{
|
||||||
asset::manager::ResourceManager,
|
asset::manager::ResourceManager,
|
||||||
core::pool::Handle,
|
core::pool::Handle,
|
||||||
event::Event,
|
engine::GraphicsContext,
|
||||||
|
event::{Event, WindowEvent},
|
||||||
gui::message::UiMessage,
|
gui::message::UiMessage,
|
||||||
plugin::{Plugin, PluginConstructor, PluginContext, PluginRegistrationContext},
|
plugin::{Plugin, PluginConstructor, PluginContext, PluginRegistrationContext},
|
||||||
scene::{
|
scene::{
|
||||||
|
|
@ -14,10 +15,12 @@ use std::path::Path;
|
||||||
mod map;
|
mod map;
|
||||||
mod player;
|
mod player;
|
||||||
mod enemy;
|
mod enemy;
|
||||||
|
mod msg;
|
||||||
|
|
||||||
use map::build_map;
|
use map::build_map;
|
||||||
use player::Player;
|
use player::Player;
|
||||||
use enemy::Enemy;
|
use enemy::Enemy;
|
||||||
|
use msg::Message;
|
||||||
|
|
||||||
|
|
||||||
pub struct GameConstructor;
|
pub struct GameConstructor;
|
||||||
|
|
@ -60,7 +63,29 @@ impl Plugin for Game {
|
||||||
// Add your global update code here.
|
// Add your global update code here.
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_os_event(&mut self, _event: &Event<()>, _context: PluginContext) {}
|
fn on_os_event(&mut self, event: &Event<()>, context: PluginContext) {
|
||||||
|
if let Event::Resumed {} = event {
|
||||||
|
if let GraphicsContext::Initialized(ref graphics_context) = context.graphics_context {
|
||||||
|
let window_size = graphics_context.window.inner_size();
|
||||||
|
for script_scene in &context.script_processor.scripted_scenes {
|
||||||
|
script_scene.message_sender.send_global(Message::Resize {
|
||||||
|
width: window_size.width,
|
||||||
|
height: window_size.height
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Event::WindowEvent { event, .. } = event {
|
||||||
|
if let WindowEvent::Resized(size) = event {
|
||||||
|
for script_scene in &context.script_processor.scripted_scenes {
|
||||||
|
script_scene.message_sender.send_global(Message::Resize {
|
||||||
|
width: size.width,
|
||||||
|
height: size.height
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn on_ui_message(&mut self, _context: &mut PluginContext, _message: &UiMessage) {
|
fn on_ui_message(&mut self, _context: &mut PluginContext, _message: &UiMessage) {
|
||||||
// Handle UI events here.
|
// Handle UI events here.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub enum Message {
|
||||||
|
Resize {
|
||||||
|
width: u32,
|
||||||
|
height: u32,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -11,7 +11,6 @@ use fyrox::{
|
||||||
uuid_provider,
|
uuid_provider,
|
||||||
visitor::prelude::*,
|
visitor::prelude::*,
|
||||||
},
|
},
|
||||||
engine::GraphicsContext,
|
|
||||||
event::{ElementState, Event, TouchPhase, WindowEvent},
|
event::{ElementState, Event, TouchPhase, WindowEvent},
|
||||||
keyboard::{KeyCode, PhysicalKey},
|
keyboard::{KeyCode, PhysicalKey},
|
||||||
scene::{
|
scene::{
|
||||||
|
|
@ -24,8 +23,9 @@ use fyrox::{
|
||||||
node::Node,
|
node::Node,
|
||||||
transform::TransformBuilder,
|
transform::TransformBuilder,
|
||||||
},
|
},
|
||||||
script::{ScriptContext, ScriptTrait},
|
script::{ScriptContext, ScriptTrait, ScriptMessageContext, ScriptMessagePayload},
|
||||||
};
|
};
|
||||||
|
use crate::msg::Message;
|
||||||
|
|
||||||
#[derive(Visit, Reflect, Debug, Clone, Default)]
|
#[derive(Visit, Reflect, Debug, Clone, Default)]
|
||||||
pub struct Player {
|
pub struct Player {
|
||||||
|
|
@ -439,17 +439,24 @@ impl ScriptTrait for Player {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Put start logic - it is called when every other script is already initialized.
|
// Put start logic - it is called when every other script is already initialized.
|
||||||
fn on_start(&mut self, _context: &mut ScriptContext) {}
|
fn on_start(&mut self, context: &mut ScriptContext) {
|
||||||
|
context.message_dispatcher.subscribe_to::<Message>(context.handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_message(
|
||||||
|
&mut self,
|
||||||
|
message: &mut dyn ScriptMessagePayload,
|
||||||
|
_ctx: &mut ScriptMessageContext,
|
||||||
|
) {
|
||||||
|
// React to message.
|
||||||
|
if let Some(Message::Resize { width, height }) = message.downcast_ref::<Message>() {
|
||||||
|
self.window_height = height.clone();
|
||||||
|
self.window_width = width.clone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Called whenever there is an event from OS (mouse click, keypress, etc.)
|
// Called whenever there is an event from OS (mouse click, keypress, etc.)
|
||||||
fn on_os_event(&mut self, event: &Event<()>, context: &mut ScriptContext) {
|
fn on_os_event(&mut self, event: &Event<()>, context: &mut ScriptContext) {
|
||||||
if let Event::Resumed {} = event {
|
|
||||||
if let GraphicsContext::Initialized(ref graphics_context) = context.graphics_context {
|
|
||||||
let window_size = graphics_context.window.inner_size();
|
|
||||||
self.window_height = window_size.height;
|
|
||||||
self.window_width = window_size.width;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if let Event::WindowEvent { event, .. } = event {
|
if let Event::WindowEvent { event, .. } = event {
|
||||||
if let WindowEvent::KeyboardInput { event, .. } = event {
|
if let WindowEvent::KeyboardInput { event, .. } = event {
|
||||||
if let PhysicalKey::Code(keycode) = event.physical_key {
|
if let PhysicalKey::Code(keycode) = event.physical_key {
|
||||||
|
|
@ -491,15 +498,6 @@ impl ScriptTrait for Player {
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let WindowEvent::Resized(size) = event {
|
|
||||||
Log::info(format!(
|
|
||||||
"Resized xheight{:?}, width {:?}",
|
|
||||||
size.height, size.width
|
|
||||||
));
|
|
||||||
self.window_height = size.height;
|
|
||||||
self.window_width = size.width;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue