gameServer2/src/server/handlers/mod.rs
author Wuzzy <Wuzzy2@mail.ru>
Fri, 26 Oct 2018 23:09:50 +0200
changeset 13996 755f389a1e73
parent 13805 0463a4221327
permissions -rw-r--r--
Fix resurrector handling turn time manually, use correct ammoprop instead This also fixes this bug: The clock turned gray while using resurrector, although the time actually counts down.

use mio;
use std::{io, io::Write};

use super::{
    server::HWServer,
    actions::{Action, Action::*},
    coretypes::ClientId
};
use crate::{
    protocol::messages::{
        HWProtocolMessage,
        HWServerMessage::*
    }
};
use log::*;

mod loggingin;
mod lobby;
mod inroom;
mod common;
mod checker;

pub fn handle(server: &mut HWServer, client_id: ClientId, message: HWProtocolMessage) {
    match message {
        HWProtocolMessage::Ping =>
            server.react(client_id, vec![Pong.send_self().action()]),
        HWProtocolMessage::Quit(Some(msg)) =>
            server.react(client_id, vec![ByeClient("User quit: ".to_string() + &msg)]),
        HWProtocolMessage::Quit(None) =>
            server.react(client_id, vec![ByeClient("User quit".to_string())]),
        HWProtocolMessage::Malformed => warn!("Malformed/unknown message"),
        HWProtocolMessage::Empty => warn!("Empty message"),
        _ => {
            match server.clients[client_id].room_id {
                None =>
                    loggingin::handle(server, client_id, message),
                Some(id) if id == server.lobby_id =>
                    lobby::handle(server, client_id, message),
                Some(id) =>
                    inroom::handle(server, client_id, id, message)
            }
        },
    }
}