odyssey-server/src/game.rs

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;
}
}
}