diff options
Diffstat (limited to 'server/src')
| -rw-r--r-- | server/src/commands.rs | 14 | ||||
| -rw-r--r-- | server/src/entity/ctf_minigame.rs | 13 | ||||
| -rw-r--r-- | server/src/entity/demand_sink.rs | 12 | ||||
| -rw-r--r-- | server/src/lib.rs | 9 | ||||
| -rw-r--r-- | server/src/server.rs | 10 | ||||
| -rw-r--r-- | server/src/state.rs | 4 |
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, |