summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/bot/src/algos/customer.rs14
-rw-r--r--server/protocol/src/lib.rs23
-rw-r--r--server/src/commands.rs8
-rw-r--r--server/src/server.rs3
-rw-r--r--server/src/state.rs1
5 files changed, 27 insertions, 22 deletions
diff --git a/server/bot/src/algos/customer.rs b/server/bot/src/algos/customer.rs
index 1b1315c6..6ac4d599 100644
--- a/server/bot/src/algos/customer.rs
+++ b/server/bot/src/algos/customer.rs
@@ -24,8 +24,7 @@ use hurrycurry_protocol::{glam::IVec2, DemandIndex, Message, PacketS, PlayerID,
use log::info;
use rand::{random, seq::IndexedRandom, thread_rng};
-#[derive(Debug, Clone)]
-#[derive(Default)]
+#[derive(Debug, Clone, Default)]
pub enum Customer {
#[default]
New,
@@ -52,7 +51,6 @@ pub enum Customer {
},
}
-
impl BotAlgo for Customer {
fn tick(&mut self, me: PlayerID, game: &Game, dt: f32) -> BotInput {
let Some(playerdata) = game.players.get(&me) else {
@@ -139,9 +137,8 @@ impl BotAlgo for Customer {
demands_failed: 1,
..Default::default()
}),
- PacketS::Communicate {
- message: Some(Message::Effect("angry".to_string())),
- timeout: None,
+ PacketS::Effect {
+ name: "angry".to_string(),
player: me,
},
],
@@ -185,9 +182,8 @@ impl BotAlgo for Customer {
timeout: Some(0.),
player: me,
},
- PacketS::Communicate {
- message: Some(Message::Effect("satisfied".to_string())),
- timeout: None,
+ PacketS::Effect {
+ name: "satisfied".to_string(),
player: me,
},
PacketS::Interact {
diff --git a/server/protocol/src/lib.rs b/server/protocol/src/lib.rs
index 323cf2c2..b8f30ce7 100644
--- a/server/protocol/src/lib.rs
+++ b/server/protocol/src/lib.rs
@@ -119,20 +119,28 @@ pub enum PacketS {
timeout: Option<f32>,
},
+ /// For use in replay sessions only
+ ReplayTick {
+ dt: f64,
+ },
+
#[serde(skip)]
#[bincode(skip)]
- /// For internal use only
+ /// For internal use only (customers)
ReplaceHand {
player: PlayerID,
item: Option<ItemIndex>,
},
#[serde(skip)]
#[bincode(skip)]
- /// For internal use only
+ /// For internal use only (customers)
ApplyScore(Score),
- /// For use in replay sessions only
- ReplayTick {
- dt: f64,
+ #[serde(skip)]
+ #[bincode(skip)]
+ /// For internal use only (customers)
+ Effect {
+ player: PlayerID,
+ name: String,
},
}
@@ -143,7 +151,6 @@ pub enum Message {
Text(String),
Item(ItemIndex),
Tile(TileIndex),
- Effect(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode)]
@@ -208,6 +215,10 @@ pub enum PacketC {
message: Option<Message>,
timeout: Option<MessageTimeout>,
},
+ Effect {
+ name: String,
+ player: PlayerID,
+ },
ServerMessage {
text: String,
},
diff --git a/server/src/commands.rs b/server/src/commands.rs
index d6ca8b25..b06d9261 100644
--- a/server/src/commands.rs
+++ b/server/src/commands.rs
@@ -171,13 +171,7 @@ impl Server {
)
}
Command::Effect { name } => {
- self.tx
- .send(PacketC::Communicate {
- player,
- message: Some(Message::Effect(name)),
- timeout: None,
- })
- .ok();
+ self.tx.send(PacketC::Effect { name, player }).ok();
}
Command::Item { name } => {
let item = self
diff --git a/server/src/server.rs b/server/src/server.rs
index 2259d159..848e2bb4 100644
--- a/server/src/server.rs
+++ b/server/src/server.rs
@@ -381,6 +381,9 @@ impl Server {
self.packet_out
.push_back(PacketC::RemovePlayer { id: player })
}
+ PacketS::Effect { player, name } => {
+ self.packet_out.push_back(PacketC::Effect { name, player });
+ }
PacketS::Movement {
pos,
boost,
diff --git a/server/src/state.rs b/server/src/state.rs
index b9a43f6b..09e7031e 100644
--- a/server/src/state.rs
+++ b/server/src/state.rs
@@ -110,6 +110,7 @@ fn get_packet_player(packet: &PacketS) -> Option<PlayerID> {
PacketS::Interact { player, .. } => Some(*player),
PacketS::Communicate { player, .. } => Some(*player),
PacketS::ReplaceHand { player, .. } => Some(*player),
+ PacketS::Effect { player, .. } => Some(*player),
PacketS::ApplyScore(_) => None,
PacketS::ReplayTick { .. } => None,
}