aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/commands.rs14
-rw-r--r--server/src/entity/ctf_minigame.rs13
-rw-r--r--server/src/entity/demand_sink.rs12
-rw-r--r--server/src/lib.rs9
-rw-r--r--server/src/server.rs10
-rw-r--r--server/src/state.rs4
6 files changed, 28 insertions, 34 deletions
diff --git a/server/src/commands.rs b/server/src/commands.rs
index 1d260631..05384849 100644
--- a/server/src/commands.rs
+++ b/server/src/commands.rs
@@ -23,9 +23,7 @@ use anyhow::Result;
use clap::{Parser, ValueEnum};
use hurrycurry_bot::algos::ALGO_CONSTRUCTORS;
use hurrycurry_locale::{TrError, tre, trm};
-use hurrycurry_protocol::{
- GameConfig, Hand, ItemLocation, Menu, Message, PacketC, PacketS, PlayerID, VoteSubject,
-};
+use hurrycurry_protocol::{GameConfig, Menu, Message, PacketC, PacketS, PlayerID, VoteSubject};
use std::{fmt::Write, str::FromStr};
#[derive(Parser)]
@@ -68,8 +66,6 @@ enum Command {
},
/// Abort the current game
End,
- /// Send an effect
- Effect { name: String },
/// Send an item message
Item { name: String },
/// Send a tile message
@@ -216,14 +212,6 @@ impl Server {
Command::Book => {
replies.push(PacketC::Menu(Menu::Book(self.priv_gamedata.book.clone())))
}
- Command::Effect { name } => {
- self.broadcast
- .send(PacketC::Effect2 {
- name,
- location: ItemLocation::Player(player, Hand(0)),
- })
- .ok();
- }
Command::Item { name } => {
let item = self
.game
diff --git a/server/src/entity/ctf_minigame.rs b/server/src/entity/ctf_minigame.rs
index 03261e41..d2b23aee 100644
--- a/server/src/entity/ctf_minigame.rs
+++ b/server/src/entity/ctf_minigame.rs
@@ -18,6 +18,7 @@
use super::{Entity, EntityContext};
use anyhow::Result;
use hurrycurry_locale::TrError;
+use hurrycurry_protocol::{Effect, Hand};
use hurrycurry_protocol::{ItemIndex, ItemLocation, Message, PacketC, PlayerID, glam::IVec2};
use std::collections::{HashMap, HashSet};
use std::fmt::Write;
@@ -36,11 +37,11 @@ struct TeamData {
}
impl TeamData {
- fn effect(&self, c: &mut EntityContext, name: &str) -> Result<(), TrError> {
+ fn effect(&self, c: &mut EntityContext, effect: Effect) -> Result<(), TrError> {
for pid in self.players.iter() {
- c.packet_out.push_back(PacketC::Effect2 {
- name: name.to_string(),
- location: ItemLocation::Player(*pid, hurrycurry_protocol::Hand(0)),
+ c.packet_out.push_back(PacketC::Effect {
+ effect: effect.clone(),
+ location: ItemLocation::Player(*pid, Hand(0)),
});
}
Ok(())
@@ -257,14 +258,14 @@ impl Entity for CtfMinigame {
.is_some_and(|a| a == from_team_idx)
{
for i in self.player_flags(&mut c, from)? {
- self.teams.get(&i).unwrap().effect(&mut c, "angry")?;
+ self.teams.get(&i).unwrap().effect(&mut c, Effect::Angry)?;
self.return_flag(&mut c, i)?;
self.teams.get_mut(&from_team_idx).unwrap().score += 10;
}
self.teams
.get(&from_team_idx)
.unwrap()
- .effect(&mut c, "satisfied")?;
+ .effect(&mut c, Effect::Satisfied)?;
self.send_table(&mut c)?;
}
Ok(true)
diff --git a/server/src/entity/demand_sink.rs b/server/src/entity/demand_sink.rs
index 6fcfa643..45244e91 100644
--- a/server/src/entity/demand_sink.rs
+++ b/server/src/entity/demand_sink.rs
@@ -19,7 +19,7 @@
use crate::entity::{Entity, EntityContext};
use anyhow::Result;
use hurrycurry_locale::TrError;
-use hurrycurry_protocol::{ItemLocation, PacketC, glam::IVec2};
+use hurrycurry_protocol::{Effect, ItemLocation, PacketC, glam::IVec2};
pub struct DemandSink {
pub pos: IVec2,
@@ -36,8 +36,14 @@ impl Entity for DemandSink {
c.game.score.demands_completed += 1;
c.game.score.points += demand.points;
*c.score_changed = true;
- c.packet_out.push_back(PacketC::Effect2 {
- name: "satisfied".to_string(),
+ c.packet_out.push_back(PacketC::Effect {
+ effect: Effect::Satisfied,
+ location: ItemLocation::Tile(self.pos),
+ });
+ c.packet_out.push_back(PacketC::Effect {
+ effect: Effect::Points {
+ amount: demand.points,
+ },
location: ItemLocation::Tile(self.pos),
});
} else {
diff --git a/server/src/lib.rs b/server/src/lib.rs
index b5dec60d..b0e93d05 100644
--- a/server/src/lib.rs
+++ b/server/src/lib.rs
@@ -62,7 +62,7 @@ mod test {
ConnectionID,
server::{Server, ServerConfig},
};
- use hurrycurry_protocol::{Character, GameConfig, PacketS, PlayerClass, PlayerID};
+ use hurrycurry_protocol::{Character, GameConfig, Hand, PacketS, PlayerClass, PlayerID};
use tokio::sync::broadcast;
fn server() -> Server {
@@ -122,12 +122,13 @@ mod test {
let mut s = server();
for (conn, p) in [
- PacketS::Effect {
+ PacketS::Leave {
player: PlayerID(0),
- name: "test".to_owned(),
},
- PacketS::Leave {
+ PacketS::Interact {
+ hand: Hand(0),
player: PlayerID(0),
+ target: None,
},
PacketS::ReplayTick { dt: 1. },
]
diff --git a/server/src/server.rs b/server/src/server.rs
index 9e91ff9c..9066475c 100644
--- a/server/src/server.rs
+++ b/server/src/server.rs
@@ -30,7 +30,7 @@ use hurrycurry_locale::{
tre, trm,
};
use hurrycurry_protocol::{
- Character, GameConfig, Gamedata, Hand, ItemLocation, Menu, MessageTimeout, PacketC, PacketS,
+ Character, GameConfig, Gamedata, ItemLocation, Menu, MessageTimeout, PacketC, PacketS,
PlayerClass, PlayerID, Score, Serverdata, VoteSubject, glam::Vec2, movement::MovementBase,
};
use log::{info, warn};
@@ -353,11 +353,9 @@ impl Server {
self.last_movement_update.remove(&player);
self.vote_state.leave(player);
}
- PacketS::Effect { player, name } => {
- self.packet_out.push_back(PacketC::Effect2 {
- name,
- location: ItemLocation::Player(player, Hand(0)),
- });
+ PacketS::Effect { effect, location } => {
+ self.packet_out
+ .push_back(PacketC::Effect { effect, location });
}
PacketS::Movement {
pos,
diff --git a/server/src/state.rs b/server/src/state.rs
index 12f6f6e4..150214ba 100644
--- a/server/src/state.rs
+++ b/server/src/state.rs
@@ -331,12 +331,12 @@ fn get_packet_player(packet: &PacketS) -> Option<PlayerID> {
| PacketS::Communicate { player, .. }
| PacketS::ReplaceHand { player, .. }
| PacketS::InitiateVote { player, .. }
- | PacketS::CastVote { player, .. }
- | PacketS::Effect { player, .. } => Some(*player),
+ | PacketS::CastVote { player, .. } => Some(*player),
PacketS::Join { .. }
| PacketS::Idle { .. }
| PacketS::Ready
| PacketS::ApplyScore(_)
+ | PacketS::Effect { .. }
| PacketS::ReplayTick { .. }
| PacketS::Debug(_)
| PacketS::Keepalive => None,