# HG changeset patch # User alfadur # Date 1535398136 -10800 # Node ID e335daaa77a93d20df28d9708663e40a9624a81e # Parent 3264a26bbf8ba3b0e846963ea5966fd7ffdbb80d Add hogs per team named constant that absolutely no one asked for diff -r 3264a26bbf8b -r e335daaa77a9 gameServer2/src/protocol/parser.rs --- a/gameServer2/src/protocol/parser.rs Sun Aug 26 20:50:51 2018 +0200 +++ b/gameServer2/src/protocol/parser.rs Mon Aug 27 22:28:56 2018 +0300 @@ -18,7 +18,7 @@ test::gen_proto_msg }; use crate::server::coretypes::{ - HedgehogInfo, TeamInfo, GameCfg, VoteType + HedgehogInfo, TeamInfo, GameCfg, VoteType, MAX_HEDGEHOGS_PER_TEAM }; named!(end_of_message, tag!("\n\n")); @@ -42,7 +42,7 @@ named!(hog_line<&[u8], HedgehogInfo>, do_parse!(name: str_line >> eol >> hat: str_line >> (HedgehogInfo{name: name.to_string(), hat: hat.to_string()}))); -named!(_8_hogs<&[u8], [HedgehogInfo; 8]>, +named!(_8_hogs<&[u8], [HedgehogInfo; MAX_HEDGEHOGS_PER_TEAM as usize]>, do_parse!(h1: hog_line >> eol >> h2: hog_line >> eol >> h3: hog_line >> eol >> h4: hog_line >> eol >> h5: hog_line >> eol >> h6: hog_line >> eol >> diff -r 3264a26bbf8b -r e335daaa77a9 gameServer2/src/server/coretypes.rs --- a/gameServer2/src/server/coretypes.rs Sun Aug 26 20:50:51 2018 +0200 +++ b/gameServer2/src/server/coretypes.rs Mon Aug 27 22:28:56 2018 +0300 @@ -1,6 +1,8 @@ pub type ClientId = usize; pub type RoomId = usize; +pub const MAX_HEDGEHOGS_PER_TEAM: u8 = 8; + #[derive(PartialEq, Eq, Clone, Debug)] pub enum ServerVar { MOTDNew(String), @@ -34,7 +36,7 @@ pub flag: String, pub difficulty: u8, pub hedgehogs_number: u8, - pub hedgehogs: [HedgehogInfo; 8], + pub hedgehogs: [HedgehogInfo; MAX_HEDGEHOGS_PER_TEAM as usize], } #[derive(PartialEq, Eq, Clone, Debug)] diff -r 3264a26bbf8b -r e335daaa77a9 gameServer2/src/server/handlers/inroom.rs --- a/gameServer2/src/server/handlers/inroom.rs Sun Aug 26 20:50:51 2018 +0200 +++ b/gameServer2/src/server/handlers/inroom.rs Mon Aug 27 22:28:56 2018 +0300 @@ -2,7 +2,10 @@ use crate::{ server::{ - coretypes::{ClientId, RoomId, Voting, VoteType}, + coretypes::{ + ClientId, RoomId, Voting, VoteType, + MAX_HEDGEHOGS_PER_TEAM + }, server::HWServer, room::{HWRoom, RoomFlags}, actions::{Action, Action::*} @@ -53,7 +56,8 @@ match msg { [size, typ, body..] => VALID_MESSAGES.contains(typ) && match body { - [1...8, team, ..] if *typ == b'h' => team_indices.contains(team), + [1...MAX_HEDGEHOGS_PER_TEAM, team, ..] if *typ == b'h' => + team_indices.contains(team), _ => *typ != b'h' }, _ => false @@ -227,7 +231,7 @@ let actions = if let Some((_, team)) = r.find_team_and_owner_mut(|t| t.name == team_name) { if !c.is_master() { vec![ProtocolError("You're not the room master!".to_string())] - } else if number < 1 || number > 8 + } else if number < 1 || number > MAX_HEDGEHOGS_PER_TEAM || number > addable_hedgehogs + team.hedgehogs_number { vec![HedgehogsNumber(team.name.clone(), team.hedgehogs_number) .send_self().action()] @@ -377,7 +381,7 @@ }, VoteType::HedgehogsPerTeam(number) => { match number { - 1...8 => None, + 1...MAX_HEDGEHOGS_PER_TEAM => None, _ => Some("/callvote hedgehogs: Specify number from 1 to 8.".to_string()) } }, diff -r 3264a26bbf8b -r e335daaa77a9 gameServer2/src/server/room.rs --- a/gameServer2/src/server/room.rs Sun Aug 26 20:50:51 2018 +0200 +++ b/gameServer2/src/server/room.rs Mon Aug 27 22:28:56 2018 +0300 @@ -2,14 +2,18 @@ iter, collections::HashMap }; use crate::server::{ - coretypes::{ClientId, RoomId, TeamInfo, GameCfg, GameCfg::*, Voting}, + coretypes::{ + ClientId, RoomId, TeamInfo, GameCfg, GameCfg::*, Voting, + MAX_HEDGEHOGS_PER_TEAM + }, client::{HWClient} }; use serde::{Serialize, Deserialize}; use serde_yaml; -const MAX_HEDGEHOGS_IN_ROOM: u8 = 64; const MAX_TEAMS_IN_ROOM: u8 = 8; +const MAX_HEDGEHOGS_IN_ROOM: u8 = + MAX_HEDGEHOGS_PER_TEAM * MAX_HEDGEHOGS_PER_TEAM; #[derive(Clone, Serialize, Deserialize)] struct Ammo {