rust/lib-hedgewars-engine/src/instance.rs
changeset 14294 21be7838a127
parent 14293 b8871dd33ec4
child 14702 29dbe9ce8b7d
equal deleted inserted replaced
14293:b8871dd33ec4 14294:21be7838a127
     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 }