odyssey-server/src/game.rs

45 lines
916 B
Rust

use crate::network::NetworkMessage;
use async_std::sync::{Receiver, Sender};
use shipyard::{error, World};
use std::collections::HashMap;
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 fn update(&self) -> Result<(), error::RunWorkload> {
self.world.try_run_workload("update")
}
pub async fn read_loop(&self, net_in: Receiver<NetworkMessage>) {
loop {
let message = net_in.recv().await.expect("could not read from channel");
self.net_out
.send(NetworkMessage {
conn_id: message.conn_id,
data: tungstenite::Message::text("hello"),
})
.await;
}
}
}