From d8dab41672fd757490dfbce44dfb3475ccc73b44 Mon Sep 17 00:00:00 2001 From: Weicao-CatilGrass <1992414357@qq.com> Date: Sat, 12 Apr 2025 13:47:00 +0800 Subject: 修改 gamepad_layouts.rs 名为 layouts.rs 合并 message.rs 到 player.rs 修改 phantom_link_server.rs 名为 server.rs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/server.rs | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 core/src/server.rs (limited to 'core/src/server.rs') diff --git a/core/src/server.rs b/core/src/server.rs new file mode 100644 index 0000000..d8b8df9 --- /dev/null +++ b/core/src/server.rs @@ -0,0 +1,80 @@ +use crate::layouts::GamepadLayout; +use crate::player::{PlayerInfo, PlayerMessage}; + +/// # PhantomLink 监听服务器 +/// 监听服务器用于连接玩家设备,并接收玩家的按键输入 +pub struct PLServer { + server_name: &'static str, + port: u16, + layout: GamepadLayout +} + +/// # PhantomLink 监听服务器事件 +/// 服务器运行过程中的信息将会发送到该 Event Trait +pub trait PLServerEvent { + + /// 服务器启动时 + fn server_start(); + + /// 服务器关闭时 + fn server_shutdown(); + + /// 玩家加入请求 + /// info : 玩家信息 + /// return -> 是否允许加入 + fn request_received(info: PlayerInfo) -> bool; + + /// 玩家加入游戏 + /// info : 玩家信息 + fn player_joined(info: PlayerInfo); + + /// 玩家离开游戏 + /// info : 玩家信息 + fn player_left(info: PlayerInfo); + + /// 玩家断开连接 + /// info : 玩家信息 + fn player_disconnected(info: PlayerInfo); + + /// 接收到消息 + /// info : 玩家信息 + /// msg : 接受的消息 + fn msg_received(info: PlayerInfo, msg: PlayerMessage); +} + +impl Default for PLServer { + /// # 使用默认布局部署服务器 + /// 创建一个使用默认布局的服务器 + fn default() -> Self { + PLServer { + server_name: "PhantomLink Layout", + port: 8916, + layout: GamepadLayout::PhantomLinkGamepad + } + } +} + +impl PLServer { + /// # 使用 Xbox 布局部署服务器 + /// 创建一个使用 Xbox 布局的服务器 + pub fn xbox_layout() -> Self { + PLServer { + server_name: "Xbox Layout", + port: 8916, + layout: GamepadLayout::Xbox + } + } + + /// # 开始监听服务器 + /// self : 服务器 + /// event : 事件 + pub fn start_listening(&self, event : impl PLServerEvent) { + + } + + /// # 停止监听服务器 + /// self : 服务器 + pub fn stop_listening(&self) { + + } +} \ No newline at end of file -- cgit