45 lines
938 B
Rust
45 lines
938 B
Rust
use crate::network::NetworkMessage;
|
|
use async_std::sync::{Receiver, Sender};
|
|
use shipyard::World;
|
|
use std::collections::HashMap;
|
|
|
|
// Minimum delay between updates, in milliseconds
|
|
const MIN_UPDATE_MS: u64 = 10;
|
|
|
|
pub struct Player {}
|
|
|
|
pub struct Game {
|
|
world: World,
|
|
players: HashMap<usize, Player>,
|
|
net_out: Sender<NetworkMessage>,
|
|
}
|
|
|
|
impl Game {
|
|
pub fn new(net_out: Sender<NetworkMessage>) -> Self {
|
|
// Create world
|
|
let world = World::default();
|
|
|
|
// Create workload
|
|
world.add_workload("update").build();
|
|
|
|
Game {
|
|
world,
|
|
players: HashMap::new(),
|
|
net_out,
|
|
}
|
|
}
|
|
|
|
pub async fn read_loop(&self, net_in: Receiver<NetworkMessage>) {
|
|
loop {
|
|
let message = net_in.recv().await.expect("could not read from channel");
|
|
log::info!("Message received: {:?}", &message);
|
|
self.net_out
|
|
.send(NetworkMessage {
|
|
conn_id: message.conn_id,
|
|
data: tungstenite::Message::text("hello"),
|
|
})
|
|
.await;
|
|
}
|
|
}
|
|
}
|