diff options
| author | Weicao-CatilGrass <1992414357@qq.com> | 2025-04-12 09:56:46 +0800 |
|---|---|---|
| committer | Weicao-CatilGrass <1992414357@qq.com> | 2025-04-12 09:56:46 +0800 |
| commit | be8696b83aab729a1e19c57da80897fc61096395 (patch) | |
| tree | a6dbe7cee56c3f64785dbba1d590973b7f867c09 | |
| parent | 8ade4459949ce793de53dfdeb4dca905bc83ced1 (diff) | |
编写了基础的核心逻辑
| -rw-r--r-- | core/src/gamepad_layouts.rs | 3 | ||||
| -rw-r--r-- | core/src/lib.rs | 4 | ||||
| -rw-r--r-- | core/src/main.rs | 3 | ||||
| -rw-r--r-- | core/src/message.rs | 7 | ||||
| -rw-r--r-- | core/src/phantom_link_server.rs | 81 | ||||
| -rw-r--r-- | core/src/player.rs | 8 |
6 files changed, 103 insertions, 3 deletions
diff --git a/core/src/gamepad_layouts.rs b/core/src/gamepad_layouts.rs new file mode 100644 index 0000000..49c5808 --- /dev/null +++ b/core/src/gamepad_layouts.rs @@ -0,0 +1,3 @@ +pub enum GamepadLayout { + PhantomLinkGamepad, Xbox +}
\ No newline at end of file diff --git a/core/src/lib.rs b/core/src/lib.rs new file mode 100644 index 0000000..5712070 --- /dev/null +++ b/core/src/lib.rs @@ -0,0 +1,4 @@ +mod phantom_link_server; +mod gamepad_layouts; +mod player; +mod message;
\ No newline at end of file diff --git a/core/src/main.rs b/core/src/main.rs deleted file mode 100644 index e7a11a9..0000000 --- a/core/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -} diff --git a/core/src/message.rs b/core/src/message.rs new file mode 100644 index 0000000..d146dba --- /dev/null +++ b/core/src/message.rs @@ -0,0 +1,7 @@ +use crate::player::PlayerInfo; + +pub enum PlayerMessage { + Say(&'static str), + PressedDown(char), + PressedUp(char) +}
\ No newline at end of file diff --git a/core/src/phantom_link_server.rs b/core/src/phantom_link_server.rs new file mode 100644 index 0000000..22ba92a --- /dev/null +++ b/core/src/phantom_link_server.rs @@ -0,0 +1,81 @@ +use crate::gamepad_layouts::GamepadLayout; +use crate::message::PlayerMessage; +use crate::player::PlayerInfo; + +/// # 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 布局的服务器 + fn xbox_layout() -> Self { + PLServer { + server_name: "Xbox Layout", + port: 8916, + layout: GamepadLayout::Xbox + } + } + + /// # 开始监听服务器 + /// self : 服务器 + /// event : 事件 + fn start_listening(&self, event : impl PLServerEvent) { + + } + + /// # 停止监听服务器 + /// self : 服务器 + fn stop_listening(&self) { + + } +}
\ No newline at end of file diff --git a/core/src/player.rs b/core/src/player.rs new file mode 100644 index 0000000..01e47d0 --- /dev/null +++ b/core/src/player.rs @@ -0,0 +1,8 @@ +use std::net::SocketAddr; + +pub struct PlayerInfo { + addr: SocketAddr, + name: &'static str, + name_hash: &'static str, + index: u8 +}
\ No newline at end of file |
