diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-25 15:30:09 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-25 15:55:00 +0200 |
commit | 9587d6b4d4389f6108e2be0ff5c0f4a495ff842d (patch) | |
tree | 3cc2ea9a93de6dd39acd5396fddfbadafef471cf /server/bot/src | |
parent | 64564a25db65d7a578fee537a0cf91db1a7dbc60 (diff) | |
download | hurrycurry-9587d6b4d4389f6108e2be0ff5c0f4a495ff842d.tar hurrycurry-9587d6b4d4389f6108e2be0ff5c0f4a495ff842d.tar.bz2 hurrycurry-9587d6b4d4389f6108e2be0ff5c0f4a495ff842d.tar.zst |
player class decoupled from character id
Diffstat (limited to 'server/bot/src')
-rw-r--r-- | server/bot/src/algos/customer.rs | 12 | ||||
-rw-r--r-- | server/bot/src/algos/frank.rs | 4 | ||||
-rw-r--r-- | server/bot/src/main.rs | 5 |
3 files changed, 14 insertions, 7 deletions
diff --git a/server/bot/src/algos/customer.rs b/server/bot/src/algos/customer.rs index e602addc..6a45e379 100644 --- a/server/bot/src/algos/customer.rs +++ b/server/bot/src/algos/customer.rs @@ -20,7 +20,9 @@ use crate::{ BotAlgo, BotInput, }; use hurrycurry_client_lib::Game; -use hurrycurry_protocol::{glam::IVec2, DemandIndex, Message, PacketS, PlayerID, Score}; +use hurrycurry_protocol::{ + glam::IVec2, DemandIndex, Message, PacketS, PlayerClass, PlayerID, Score, +}; use log::info; use rand::{random, seq::IndexedRandom, thread_rng}; @@ -124,7 +126,7 @@ impl BotAlgo for Customer { .players .iter() .find(|(id, p)| { - p.character < 0 + p.class == PlayerClass::Customer && **id != me && p.movement.position.distance(chair.as_vec2() + 0.5) < 1. }) @@ -186,7 +188,11 @@ impl BotAlgo for Customer { if !*pinned { let mut pin = false; game.players_spatial_index.query(pos, 3., |pid, _| { - if game.players.get(&pid).map_or(false, |p| p.character >= 0) { + if game + .players + .get(&pid) + .map_or(false, |p| p.class.is_cheflike()) + { pin = true } }); diff --git a/server/bot/src/algos/frank.rs b/server/bot/src/algos/frank.rs index 854c73bb..1e02e297 100644 --- a/server/bot/src/algos/frank.rs +++ b/server/bot/src/algos/frank.rs @@ -20,7 +20,7 @@ use crate::{ BotAlgo, BotInput, }; use hurrycurry_client_lib::Game; -use hurrycurry_protocol::{glam::Vec2, Message, PacketS, PlayerID}; +use hurrycurry_protocol::{glam::Vec2, Message, PacketS, PlayerClass, PlayerID}; use rand::{seq::IndexedRandom, thread_rng}; #[derive(Default)] @@ -116,7 +116,7 @@ fn find_chef(game: &Game, me: PlayerID) -> Option<PlayerID> { let chefs = game .players .iter() - .filter(|(i, p)| p.character >= 0 && **i != me) + .filter(|(i, p)| p.class == PlayerClass::Chef && **i != me) .map(|(i, _)| *i) .collect::<Vec<_>>(); chefs.choose(&mut thread_rng()).copied() diff --git a/server/bot/src/main.rs b/server/bot/src/main.rs index 0e6aed36..61ae1c1c 100644 --- a/server/bot/src/main.rs +++ b/server/bot/src/main.rs @@ -19,7 +19,7 @@ use anyhow::Result; use clap::Parser; use hurrycurry_bot::{algos::ALGO_CONSTRUCTORS, BotAlgo, BotInput}; use hurrycurry_client_lib::{network::sync::Network, Game}; -use hurrycurry_protocol::{PacketC, PacketS, PlayerID}; +use hurrycurry_protocol::{PacketC, PacketS, PlayerClass, PlayerID}; use log::warn; use std::{thread::sleep, time::Duration}; @@ -29,7 +29,7 @@ struct Args { #[arg(short, long)] username: Option<String>, /// Bot character id - #[arg(short, long, default_value_t = 51)] + #[arg(short, long, default_value_t = 0)] character: i32, algo: String, /// Websocket address of the server @@ -57,6 +57,7 @@ fn main() -> Result<()> { network.queue_out.push_back(PacketS::Join { name: format!("{}-bot", args.username.clone().unwrap_or(args.algo.clone())), character: args.character, + class: PlayerClass::Bot, id: None, }); |