aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/server_test/src/main.rs2
-rw-r--r--core/src/layouts.rs (renamed from core/src/gamepad_layouts.rs)0
-rw-r--r--core/src/lib.rs6
-rw-r--r--core/src/message.rs7
-rw-r--r--core/src/player.rs48
-rw-r--r--core/src/server.rs (renamed from core/src/phantom_link_server.rs)5
6 files changed, 53 insertions, 15 deletions
diff --git a/core/server_test/src/main.rs b/core/server_test/src/main.rs
index 703b447..c134fbc 100644
--- a/core/server_test/src/main.rs
+++ b/core/server_test/src/main.rs
@@ -1,5 +1,5 @@
use phantomlink_gamepad_core::message::PlayerMessage;
-use phantomlink_gamepad_core::phantom_link_server::{PLServer, PLServerEvent};
+use phantomlink_gamepad_core::server::{PLServer, PLServerEvent};
use phantomlink_gamepad_core::player::PlayerInfo;
fn main() {
diff --git a/core/src/gamepad_layouts.rs b/core/src/layouts.rs
index 49c5808..49c5808 100644
--- a/core/src/gamepad_layouts.rs
+++ b/core/src/layouts.rs
diff --git a/core/src/lib.rs b/core/src/lib.rs
index 4988f50..e19c53d 100644
--- a/core/src/lib.rs
+++ b/core/src/lib.rs
@@ -1,4 +1,4 @@
-pub mod phantom_link_server;
-pub mod gamepad_layouts;
+pub mod server;
+pub mod layouts;
pub mod player;
-pub mod message; \ No newline at end of file
+mod constants; \ No newline at end of file
diff --git a/core/src/message.rs b/core/src/message.rs
deleted file mode 100644
index d146dba..0000000
--- a/core/src/message.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-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/player.rs b/core/src/player.rs
index 01e47d0..78e4d23 100644
--- a/core/src/player.rs
+++ b/core/src/player.rs
@@ -1,8 +1,54 @@
use std::net::SocketAddr;
+use sha1::{Digest, Sha1};
+use crate::constants::SALT;
pub struct PlayerInfo {
addr: SocketAddr,
name: &'static str,
name_hash: &'static str,
- index: u8
+ index: u8,
+
+ // 颜色 HSV
+ color_hue: i32, // 0 - 360
+ color_saturation: f32, // 0 - 1
+ color_value: f32 // 0 - 1
+}
+
+pub enum PlayerMessage {
+ Say(&'static str),
+ PressedDown(char),
+ PressedUp(char)
+}
+
+impl PlayerInfo {
+
+ /// # 配置玩家 ID 和 名称
+ /// self : 自身
+ /// name : 玩家名称
+ /// number : 玩家序号
+ /// return -> 自身
+ pub fn name(&mut self, name : &'static str, number : &'static str) -> &mut Self {
+ self.name = name;
+
+ let combined = format!("{}{}{}", name, number, SALT);
+ let mut hasher = Sha1::new();
+ hasher.update(combined);
+ let result = hasher.finalize();
+
+ self.name_hash = &format!("{:x}", &result[..16]);
+ self
+ }
+
+ /// # 配置玩家颜色
+ /// self : 自身
+ /// hue : 色调 0 -> RED; 120 -> GREEN; 240 -> BLUE
+ /// saturation : 饱和度
+ /// value : 明度
+ /// return -> 自身
+ pub fn color_hue(&mut self, hue: i32, saturation: f32, value: f32) -> &mut Self {
+ self.color_hue = hue.clamp(0, 360);
+ self.color_saturation = saturation.clamp(0.0, 1.0);
+ self.color_value = value.clamp(0.0, 1.0);
+ self
+ }
} \ No newline at end of file
diff --git a/core/src/phantom_link_server.rs b/core/src/server.rs
index 6dcbdeb..d8b8df9 100644
--- a/core/src/phantom_link_server.rs
+++ b/core/src/server.rs
@@ -1,6 +1,5 @@
-use crate::gamepad_layouts::GamepadLayout;
-use crate::message::PlayerMessage;
-use crate::player::PlayerInfo;
+use crate::layouts::GamepadLayout;
+use crate::player::{PlayerInfo, PlayerMessage};
/// # PhantomLink 监听服务器
/// 监听服务器用于连接玩家设备,并接收玩家的按键输入