rust/lib-hedgewars-engine/src/instance.rs
changeset 15265 07e909ba4203
parent 14705 19122a329774
child 15284 ae8e14d14596
equal deleted inserted replaced
15264:7515ae6010bb 15265:07e909ba4203
     4 };
     4 };
     5 
     5 
     6 use integral_geometry::{Point, Rect, Size};
     6 use integral_geometry::{Point, Rect, Size};
     7 use landgen::outline_template::OutlineTemplate;
     7 use landgen::outline_template::OutlineTemplate;
     8 
     8 
     9 use super::{ipc::IPC, world::World};
     9 use super::{ipc::*, world::World};
    10 
    10 
    11 pub struct EngineInstance {
    11 pub struct EngineInstance {
    12     pub world: World,
    12     pub world: World,
    13     pub ipc: IPC,
    13     pub ipc_channel: Channel,
       
    14     ipc_queue: MessagesQueue,
    14 }
    15 }
    15 
    16 
    16 impl EngineInstance {
    17 impl EngineInstance {
    17     pub fn new() -> Self {
    18     pub fn new() -> Self {
    18         let mut world = World::new();
    19         let mut world = World::new();
    32 
    33 
    33         world.init(template());
    34         world.init(template());
    34 
    35 
    35         Self {
    36         Self {
    36             world,
    37             world,
    37             ipc: IPC::new(),
    38             ipc_channel: Channel::new(),
       
    39             ipc_queue: MessagesQueue::new(QueueChatStrategy::LocalGame),
    38         }
    40         }
    39     }
    41     }
    40 
    42 
    41     pub fn render(&mut self) {
    43     pub fn render(&mut self) {
    42         self.world.render();
    44         self.world.render();
    55             _ => unimplemented!(),
    57             _ => unimplemented!(),
    56         }
    58         }
    57     }
    59     }
    58 
    60 
    59     pub fn process_ipc_queue(&mut self) {
    61     pub fn process_ipc_queue(&mut self) {
    60         let messages: Vec<EngineMessage> = self.ipc.iter().collect();
    62         for message in self.ipc_channel.iter() {
       
    63             self.ipc_queue.push(message);
       
    64         }
       
    65 
       
    66         let messages: Vec<EngineMessage> = self.ipc_queue.iter(0).collect();
    61 
    67 
    62         for message in messages {
    68         for message in messages {
    63             println!("Processing message: {:?}", message);
    69             println!("Processing message: {:?}", message);
    64             match message {
    70             match message {
    65                 Unknown => println!("Unknown message"),
    71                 Unknown => println!("Unknown message"),