HollowPS/gameserver/src/net/handlers/login.rs
2024-06-02 22:27:43 +03:00

70 lines
1.7 KiB
Rust

use std::time::{SystemTime, UNIX_EPOCH};
use super::*;
use crate::{
game::util,
net::session::{AccountUID, PlayerUID},
};
const DEFAULT_ACCOUNT_ID: u64 = 1;
pub async fn on_rpc_login(session: &NetworkSession, arg: &RpcLoginArg) -> Result<RpcLoginRet> {
tracing::info!("Received rpc login arg: {}", arg.account_name);
match session.logged_in(
AccountUID(DEFAULT_ACCOUNT_ID),
util::create_default_account(DEFAULT_ACCOUNT_ID),
) {
Ok(()) => Ok(RpcLoginRet::new(
session.ns_prop_mgr.serialize_account_info(),
)),
Err(_) => Ok(RpcLoginRet::error(ErrorCode::RepeatedLogin, Vec::new())),
}
}
pub async fn on_rpc_create_player(
session: &NetworkSession,
_arg: &RpcCreatePlayerArg,
) -> Result<RpcCreatePlayerRet> {
let account_uid = session.account_uid();
let player_count = session
.ns_prop_mgr
.account_info
.read()
.players
.as_ref()
.unwrap()
.len();
let player_uid = PlayerUID::new(account_uid, player_count + 1);
session
.ns_prop_mgr
.account_info
.write()
.players
.as_mut()
.unwrap()
.push(player_uid.raw());
Ok(RpcCreatePlayerRet::new(player_uid.raw()))
}
pub async fn on_ptc_get_server_timestamp(
_session: &NetworkSession,
_arg: &PtcGetServerTimestampArg,
) -> Result<PtcGetServerTimestampRet> {
Ok(PtcGetServerTimestampRet::new(
SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_millis() as u64,
0,
))
}
pub async fn on_rpc_keep_alive(
_session: &NetworkSession,
_arg: &RpcKeepAliveArg,
) -> Result<RpcKeepAliveRet> {
Ok(RpcKeepAliveRet::new())
}