ship init
This commit is contained in:
parent
f294781934
commit
7a18af7d88
51
src/main.rs
Normal file
51
src/main.rs
Normal file
@ -0,0 +1,51 @@
|
||||
#![feature(const_generics)]
|
||||
|
||||
|
||||
mod common;
|
||||
mod entity;
|
||||
mod patch;
|
||||
mod login;
|
||||
mod ship;
|
||||
|
||||
use std::thread;
|
||||
|
||||
use patch::patch::{PatchServerState, generate_patch_tree};
|
||||
use login::login::LoginServerState;
|
||||
use login::character::CharacterServerState;
|
||||
use ship::ship::ShipServerState;
|
||||
|
||||
use entity::gateway::{EntityGateway, InMemoryGateway};
|
||||
|
||||
fn main() {
|
||||
let entity_gateway = InMemoryGateway::new();
|
||||
|
||||
let patch_thread = thread::spawn(|| {
|
||||
println!("[patch] starting server");
|
||||
let (patch_file_tree, patch_file_lookup) = generate_patch_tree("patchfiles/");
|
||||
let patch_state = PatchServerState::new(patch_file_tree, patch_file_lookup);
|
||||
common::mainloop::mainloop(patch_state, patch::patch::PATCH_PORT);
|
||||
});
|
||||
let thread_entity_gateway = entity_gateway.clone();
|
||||
let auth_thread = thread::spawn(|| {
|
||||
println!("[auth] starting server");
|
||||
let auth_state = LoginServerState::new(thread_entity_gateway);
|
||||
common::mainloop::mainloop(auth_state, login::login::LOGIN_PORT);
|
||||
});
|
||||
let thread_entity_gateway = entity_gateway.clone();
|
||||
let char_thread = thread::spawn(|| {
|
||||
println!("[character] starting server");
|
||||
let char_state = CharacterServerState::new(thread_entity_gateway);
|
||||
common::mainloop::mainloop(char_state, login::character::CHARACTER_PORT);
|
||||
});
|
||||
let thread_entity_gateway = entity_gateway.clone();
|
||||
let ship_thread = thread::spawn(|| {
|
||||
println!("[ship] starting server");
|
||||
let ship_state = ShipServerState::new(thread_entity_gateway);
|
||||
common::mainloop::mainloop(ship_state, ship::ship::SHIP_PORT);
|
||||
});
|
||||
|
||||
patch_thread.join().unwrap();
|
||||
auth_thread.join().unwrap();
|
||||
char_thread.join().unwrap();
|
||||
ship_thread.join().unwrap();
|
||||
}
|
1
src/ship/mod.rs
Normal file
1
src/ship/mod.rs
Normal file
@ -0,0 +1 @@
|
||||
pub mod ship;
|
63
src/ship/ship.rs
Normal file
63
src/ship/ship.rs
Normal file
@ -0,0 +1,63 @@
|
||||
use libpso::PacketParseError;
|
||||
|
||||
use crate::common::serverstate::{SendServerPacket, RecvServerPacket, ServerState, OnConnect, ClientId};
|
||||
use crate::entity::gateway::EntityGateway;
|
||||
|
||||
pub const SHIP_PORT: u16 = 12345;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum ShipError {
|
||||
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum RecvShipPacket {
|
||||
|
||||
}
|
||||
|
||||
impl RecvServerPacket for RecvShipPacket {
|
||||
fn from_bytes(data: &[u8]) -> Result<RecvShipPacket, PacketParseError> {
|
||||
Err(PacketParseError::WrongPacketForServerType)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum SendShipPacket {
|
||||
|
||||
|
||||
}
|
||||
|
||||
impl SendServerPacket for SendShipPacket {
|
||||
fn as_bytes(&self) -> Vec<u8> {
|
||||
Vec::new()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub struct ShipServerState<EG: EntityGateway> {
|
||||
entity_gateway: EG,
|
||||
}
|
||||
|
||||
impl<EG: EntityGateway> ShipServerState<EG> {
|
||||
pub fn new(entity_gateway: EG) -> ShipServerState<EG> {
|
||||
ShipServerState {
|
||||
entity_gateway: entity_gateway
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
impl<EG: EntityGateway> ServerState for ShipServerState<EG> {
|
||||
type SendPacket = SendShipPacket;
|
||||
type RecvPacket = RecvShipPacket;
|
||||
type PacketError = ShipError;
|
||||
|
||||
fn on_connect(&mut self, id: ClientId) -> Vec<OnConnect<Self::SendPacket>> {
|
||||
Vec::new()
|
||||
}
|
||||
|
||||
fn handle(&mut self, id: ClientId, pkt: &RecvShipPacket)
|
||||
-> Result<Box<dyn Iterator<Item = (ClientId, SendShipPacket)>>, ShipError> {
|
||||
Ok(Box::new(Vec::new().into_iter()))
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user