aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorWeicao-CatilGrass <1992414357@qq.com>2025-04-12 09:56:46 +0800
committerWeicao-CatilGrass <1992414357@qq.com>2025-04-12 09:56:46 +0800
commitbe8696b83aab729a1e19c57da80897fc61096395 (patch)
treea6dbe7cee56c3f64785dbba1d590973b7f867c09 /core
parent8ade4459949ce793de53dfdeb4dca905bc83ced1 (diff)
编写了基础的核心逻辑
Diffstat (limited to 'core')
-rw-r--r--core/src/gamepad_layouts.rs3
-rw-r--r--core/src/lib.rs4
-rw-r--r--core/src/main.rs3
-rw-r--r--core/src/message.rs7
-rw-r--r--core/src/phantom_link_server.rs81
-rw-r--r--core/src/player.rs8
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