diff options
| author | Weicao-CatilGrass <1992414357@qq.com> | 2025-04-12 13:47:00 +0800 |
|---|---|---|
| committer | Weicao-CatilGrass <1992414357@qq.com> | 2025-04-12 13:47:00 +0800 |
| commit | d8dab41672fd757490dfbce44dfb3475ccc73b44 (patch) | |
| tree | 5b289f6e3b593329fddb7e66c0bde9049619f195 /core/src/server.rs | |
| parent | e3a61d6c644dcf898c726f7c870b17bbf3fe6c59 (diff) | |
修改 gamepad_layouts.rs 名为 layouts.rs
合并 message.rs 到 player.rs
修改 phantom_link_server.rs 名为 server.rs
Diffstat (limited to 'core/src/server.rs')
| -rw-r--r-- | core/src/server.rs | 80 |
1 files changed, 80 insertions, 0 deletions
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 |
