aboutsummaryrefslogtreecommitdiff
path: root/core/src/pads_server.rs
diff options
context:
space:
mode:
authorWeicao-CatilGrass <1992414357@qq.com>2025-04-14 13:54:21 +0800
committerWeicao-CatilGrass <1992414357@qq.com>2025-04-14 13:54:21 +0800
commitb0090fce83ae439437b711f3c087f926cd95223d (patch)
tree54c02d59ee1cc2c782d868aec5cb1ab18cb0f7bf /core/src/pads_server.rs
parent32260bcd6e744b24f29f7c0eeab294ab9d58e23d (diff)
修复了 pads_server.rs 中的数个bug,并且将事件命名变得更加合理了
Diffstat (limited to 'core/src/pads_server.rs')
-rw-r--r--core/src/pads_server.rs81
1 files changed, 81 insertions, 0 deletions
diff --git a/core/src/pads_server.rs b/core/src/pads_server.rs
new file mode 100644
index 0000000..71f9acd
--- /dev/null
+++ b/core/src/pads_server.rs
@@ -0,0 +1,81 @@
+use std::time::Duration;
+use crate::pads_player::{PlayerInfo, PlayerMessage};
+
+/// # 监听服务器
+/// 监听服务器用于连接玩家设备,并接收玩家的按键输入
+pub struct PadServer {
+ server_name: &'static str,
+ port: u16
+}
+
+impl Default for PadServer {
+
+ /// # 使用默认布局部署服务器
+ /// 创建一个使用默认布局的服务器
+ fn default() -> Self {
+ PadServer {
+ server_name: "This Is No Pads",
+ port: 8916
+ // TODO :: 补充布局文件
+ }
+ }
+}
+
+impl PadServer {
+
+ /// # 开始监听服务器
+ /// self : 服务器
+ /// event : 事件
+ pub fn start_listening(&self, event : impl PadServerEvent) {
+
+ }
+
+ /// # 停止监听服务器
+ /// self : 服务器
+ pub fn stop_listening(&self) {
+
+ }
+}
+
+/// # 监听服务器事件
+/// 服务器运行过程中的信息将会发送到该 Event Trait
+pub trait PadServerEvent {
+
+ /// 服务器启动时
+ fn server_start();
+
+ /// 服务器关闭时
+ fn server_shutdown();
+
+ /// 玩家加入请求
+ /// info : 玩家信息
+ /// return -> 是否允许加入服务器
+ fn join_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);
+}
+
+/// # 监听服务器消息
+/// 监听服务器用于向玩家发送指令
+pub enum ServerMessage {
+ Command(String),
+ Animation(String),
+ Shock(Duration, f64),
+ Kick,
+
+} \ No newline at end of file