aboutsummaryrefslogtreecommitdiff
path: root/core/src/client
diff options
context:
space:
mode:
author1992414357@qq.com <1992414357@qq.com>2025-04-21 06:25:54 +0800
committer1992414357@qq.com <1992414357@qq.com>2025-04-21 06:25:54 +0800
commit50ea9869616846e5a0448ead8272c397080f36d8 (patch)
tree5f2ec829ecf48441a6d33f4160909dc02ddf83bf /core/src/client
parentd72d700c84794ca420035ceb9c294563f3f9c048 (diff)
.
Diffstat (limited to 'core/src/client')
-rw-r--r--core/src/client/client.rs29
-rw-r--r--core/src/client/client_commands.rs29
-rw-r--r--core/src/client/client_event.rs26
-rw-r--r--core/src/client/mod.rs3
4 files changed, 87 insertions, 0 deletions
diff --git a/core/src/client/client.rs b/core/src/client/client.rs
new file mode 100644
index 0000000..c11bb61
--- /dev/null
+++ b/core/src/client/client.rs
@@ -0,0 +1,29 @@
+use crate::constants::DEFAULT_PORT;
+use crate::player::player_info::PlayerInfo;
+use std::net::SocketAddr;
+
+/// 玩家客户端
+pub struct PadClient {
+ player_info: PlayerInfo,
+ remote_addr: SocketAddr,
+ receive_skin_package : bool
+}
+
+impl Default for PadClient {
+
+ fn default() -> Self {
+ PadClient {
+ player_info: PlayerInfo::default(),
+ remote_addr: SocketAddr::from(([127, 0, 0, 1], DEFAULT_PORT)),
+ receive_skin_package: true
+ }
+ }
+}
+
+impl PadClient {
+
+ /// # 连接到服务器
+ pub fn connect_server(&self) {
+
+ }
+} \ No newline at end of file
diff --git a/core/src/client/client_commands.rs b/core/src/client/client_commands.rs
new file mode 100644
index 0000000..f674f6c
--- /dev/null
+++ b/core/src/client/client_commands.rs
@@ -0,0 +1,29 @@
+use crate::client::client::PadClient;
+use crate::messages::PlayerMessage;
+
+impl PadClient {
+
+ // TODO :: 可能需要返回是否成功
+ pub fn send_message (&self, msg: PlayerMessage) {
+
+ }
+
+ /// 按下
+ pub fn pressed (&self, btn_num: u8) {
+ self.send_message(PlayerMessage::ButtonPressed(btn_num))
+ }
+
+ /// 抬起
+ pub fn released (&self, btn_num: u8) {
+ self.send_message(PlayerMessage::ButtonReleased(btn_num))
+ }
+
+ pub fn msg (&self, msg_str: String) {
+ self.send_message(PlayerMessage::Message(msg_str))
+ }
+
+ // TODO :: 可能需要返回信息
+ pub fn cmd (&self, cmd_str: String) {
+ self.send_message(PlayerMessage::Command(cmd_str))
+ }
+} \ No newline at end of file
diff --git a/core/src/client/client_event.rs b/core/src/client/client_event.rs
new file mode 100644
index 0000000..ac52e53
--- /dev/null
+++ b/core/src/client/client_event.rs
@@ -0,0 +1,26 @@
+use crate::messages::ServerMessage;
+
+/// 玩家客户端事件
+pub trait PadClientEvent {
+
+ /// 加入游戏
+ fn joined_game();
+
+ /// 加入游戏失败
+ fn joined_game_failed();
+
+ /// 退出游戏
+ fn left_game();
+
+ /// 被踢出游戏
+ fn kicked();
+
+ /// 被该游戏封禁(若游戏未保存名单,则游戏重启前无法进入)
+ fn banned();
+
+ /// 掉线
+ fn disconnected();
+
+ /// 接收到消息
+ fn msg_received(msg: ServerMessage);
+} \ No newline at end of file
diff --git a/core/src/client/mod.rs b/core/src/client/mod.rs
new file mode 100644
index 0000000..0cb7dd2
--- /dev/null
+++ b/core/src/client/mod.rs
@@ -0,0 +1,3 @@
+pub mod client_commands;
+pub mod client;
+pub mod client_event; \ No newline at end of file