1 use hedgewars_engine_messages::messages::{ |
1 use hedgewars_engine_messages::messages::{ |
2 ConfigEngineMessage::*, EngineMessage::*, KeystrokeAction::*, SyncedEngineMessage::*, |
2 ConfigEngineMessage::*, EngineMessage::*, KeystrokeAction::*, SyncedEngineMessage::*, |
3 UnorderedEngineMessage::*, UnsyncedEngineMessage::*, * |
3 UnorderedEngineMessage::*, UnsyncedEngineMessage::*, *, |
4 }; |
4 }; |
5 |
5 |
6 use gfx::{ |
6 use self::gfx_gl::{CommandBuffer, Resources}; |
7 format::{R8_G8_B8_A8, D24, Unorm} |
7 use gfx::format::{Unorm, D24, R8_G8_B8_A8}; |
8 }; |
|
9 use gfx_device_gl as gfx_gl; |
8 use gfx_device_gl as gfx_gl; |
10 use self::gfx_gl::{ |
|
11 Resources, |
|
12 CommandBuffer |
|
13 }; |
|
14 |
9 |
15 use super::{ipc::IPC, world::World}; |
10 use super::{ipc::IPC, world::World}; |
16 |
11 |
17 pub struct EngineGlContext { |
12 pub struct EngineGlContext { |
18 pub device: gfx_gl::Device, |
13 pub device: gfx_gl::Device, |
19 pub factory: gfx_gl::Factory, |
14 pub factory: gfx_gl::Factory, |
20 pub render_target: gfx::handle::RenderTargetView<Resources, (R8_G8_B8_A8, Unorm)>, |
15 pub render_target: gfx::handle::RenderTargetView<Resources, (R8_G8_B8_A8, Unorm)>, |
21 pub depth_buffer: gfx::handle::DepthStencilView<Resources, (D24, Unorm)>, |
16 pub depth_buffer: gfx::handle::DepthStencilView<Resources, (D24, Unorm)>, |
22 pub command_buffer: gfx::Encoder<Resources, CommandBuffer> |
17 pub command_buffer: gfx::Encoder<Resources, CommandBuffer>, |
23 } |
18 } |
24 |
19 |
25 pub struct EngineInstance { |
20 pub struct EngineInstance { |
26 pub world: World, |
21 pub world: World, |
27 pub ipc: IPC, |
22 pub ipc: IPC, |
28 pub gl_context: Option<EngineGlContext> |
23 pub gl_context: Option<EngineGlContext>, |
29 } |
24 } |
30 |
25 |
31 impl EngineInstance { |
26 impl EngineInstance { |
32 pub fn new() -> Self { |
27 pub fn new() -> Self { |
33 let world = World::new(); |
28 let world = World::new(); |
34 Self { |
29 Self { |
35 world, |
30 world, |
36 ipc: IPC::new(), |
31 ipc: IPC::new(), |
37 gl_context: None |
32 gl_context: None, |
38 } |
33 } |
39 } |
34 } |
40 |
35 |
41 pub fn render<R, C>( |
36 pub fn render<R, C>( |
42 &self, |
37 &self, |
68 |
63 |
69 for message in messages { |
64 for message in messages { |
70 println!("Processing message: {:?}", message); |
65 println!("Processing message: {:?}", message); |
71 match message { |
66 match message { |
72 Unknown => println!("Unknown message"), |
67 Unknown => println!("Unknown message"), |
73 Empty => println!("Empty message") , |
68 Empty => println!("Empty message"), |
74 Synced(_, _) => unimplemented!(), |
69 Synced(_, _) => unimplemented!(), |
75 Unsynced(_) => unimplemented!(), |
70 Unsynced(_) => unimplemented!(), |
76 Unordered(unordered_message) => self.process_unordered_message(&unordered_message), |
71 Unordered(unordered_message) => self.process_unordered_message(&unordered_message), |
77 Config(config_message) => self.process_config_message(&config_message) |
72 Config(config_message) => self.process_config_message(&config_message), |
78 } |
73 } |
79 } |
74 } |
80 } |
75 } |
81 } |
76 } |