diff options
| author | 1992414357@qq.com <1992414357@qq.com> | 2025-06-09 01:44:36 +0800 |
|---|---|---|
| committer | 1992414357@qq.com <1992414357@qq.com> | 2025-06-09 01:44:36 +0800 |
| commit | 49192dbb98e0ab1f2a66b4786fac86d63f69be64 (patch) | |
| tree | 7cdf27c7cab5fb6b1aabc2ac7c44b7b492558945 /core/src/data/controller/runtime | |
| parent | c9dbba0d288becb7f05cebe526be25c76e5a850a (diff) | |
重构所有部分
Diffstat (limited to 'core/src/data/controller/runtime')
| -rw-r--r-- | core/src/data/controller/runtime/implements.rs | 29 | ||||
| -rw-r--r-- | core/src/data/controller/runtime/mod.rs | 2 | ||||
| -rw-r--r-- | core/src/data/controller/runtime/structs.rs | 20 |
3 files changed, 51 insertions, 0 deletions
diff --git a/core/src/data/controller/runtime/implements.rs b/core/src/data/controller/runtime/implements.rs new file mode 100644 index 0000000..b79890e --- /dev/null +++ b/core/src/data/controller/runtime/implements.rs @@ -0,0 +1,29 @@ +use std::collections::{HashMap, VecDeque}; +use std::sync::atomic::Ordering::SeqCst; +use log::trace; +use crate::data::controller::runtime::structs::ControllerRuntime; +use crate::data::message::enums::{ControlMessage, GameMessage}; +use crate::data::message::traits::MessageManager; +use crate::service::service_types::ServiceType; + +/// Message manager for controller-side runtime +/// After the service starts, it can be accessed or relevant messages can be stored. +impl MessageManager<GameMessage, ControlMessage, u8> for ControllerRuntime { + fn borrow_received_list_mut(&mut self) -> &mut HashMap<(ServiceType, u8), VecDeque<GameMessage>> { + &mut self.received + } + + fn borrow_send_list_mut(&mut self) -> &mut HashMap<(ServiceType, u8), VecDeque<ControlMessage>> { + &mut self.send + } +} + +impl ControllerRuntime { + + pub fn close(&mut self) { + if !self.close.load(SeqCst) { + self.close.store(true, SeqCst); + trace!("[Controller Runtime] Closed."); + } + } +}
\ No newline at end of file diff --git a/core/src/data/controller/runtime/mod.rs b/core/src/data/controller/runtime/mod.rs new file mode 100644 index 0000000..0ff870f --- /dev/null +++ b/core/src/data/controller/runtime/mod.rs @@ -0,0 +1,2 @@ +pub mod implements; +pub mod structs;
\ No newline at end of file diff --git a/core/src/data/controller/runtime/structs.rs b/core/src/data/controller/runtime/structs.rs new file mode 100644 index 0000000..7be2cd6 --- /dev/null +++ b/core/src/data/controller/runtime/structs.rs @@ -0,0 +1,20 @@ +use std::collections::{HashMap, VecDeque}; +use std::sync::atomic::AtomicBool; +use crate::data::game::types::GameInfo; +use crate::data::message::enums::{ControlMessage, GameMessage}; +use crate::data::player::structs::Player; +use crate::service::service_types::ServiceType; + +/// Controller-side runtime +/// Stores all data involved in game pad_client interactions during runtime +#[derive(Default)] +pub struct ControllerRuntime { + + pub(crate) received: HashMap<(ServiceType, u8), VecDeque<GameMessage>>, + pub(crate) send: HashMap<(ServiceType, u8), VecDeque<ControlMessage>>, + + pub(crate) player: Player, + + pub game_info: GameInfo, + pub close: AtomicBool +}
\ No newline at end of file |
