aboutsummaryrefslogtreecommitdiff
path: root/server/bot
diff options
context:
space:
mode:
authornokoe <nokoe@mailbox.org>2026-02-26 05:15:54 +0100
committernokoe <nokoe@mailbox.org>2026-02-27 19:31:14 +0100
commita859bceeddc8e746bba630b3cc197532b68adbcb (patch)
treef8e033595d21e4de34774e4caed8b483c7eba5c6 /server/bot
parent6419d8c8139d697af309b7db2e698effa8290582 (diff)
downloadhurrycurry-a859bceeddc8e746bba630b3cc197532b68adbcb.tar
hurrycurry-a859bceeddc8e746bba630b3cc197532b68adbcb.tar.bz2
hurrycurry-a859bceeddc8e746bba630b3cc197532b68adbcb.tar.zst
use stable rust toolchainstable-rust
Diffstat (limited to 'server/bot')
-rw-r--r--server/bot/Cargo.toml1
-rw-r--r--server/bot/src/algos/customer.rs11
-rw-r--r--server/bot/src/algos/frank.rs6
-rw-r--r--server/bot/src/lib.rs9
4 files changed, 14 insertions, 13 deletions
diff --git a/server/bot/Cargo.toml b/server/bot/Cargo.toml
index c78410b3..e73be6e9 100644
--- a/server/bot/Cargo.toml
+++ b/server/bot/Cargo.toml
@@ -11,6 +11,7 @@ anyhow = "1.0.99"
env_logger = "0.11.8"
rustls = { version = "0.23.31", features = ["ring"] }
clap = { version = "4.5.47", features = ["derive"] }
+rand = "0.10.0"
[features]
# default = ["debug_events"]
diff --git a/server/bot/src/algos/customer.rs b/server/bot/src/algos/customer.rs
index fe665f47..ba4d43a8 100644
--- a/server/bot/src/algos/customer.rs
+++ b/server/bot/src/algos/customer.rs
@@ -17,8 +17,7 @@
*/
use crate::{
BotAlgo, PacketSink,
- pathfinding::{Path, find_path},
- random_float,
+ pathfinding::{Path, find_path}, random_usize,
};
use hurrycurry_game_core::Game;
use hurrycurry_protocol::{
@@ -26,7 +25,7 @@ use hurrycurry_protocol::{
glam::{IVec2, Vec2},
};
use log::debug;
-use std::random::random;
+use rand::{random, seq::IndexedRandom};
#[derive(Debug, Clone)]
pub struct Customer {
@@ -107,7 +106,7 @@ impl CustomerState {
.filter(|(_, t)| game.data.tile_name(t.kind) == "chair")
.map(|(p, _)| *p)
.collect::<Vec<_>>();
- if let Some(&chair) = chairs.get(random::<usize>(..) % chairs.len().max(1))
+ if let Some(&chair) = chairs.choose(&mut rand::rng())
&& let Some(path) = find_path(game, pos.as_ivec2(), chair)
{
debug!("{me:?} -> entering");
@@ -129,10 +128,10 @@ impl CustomerState {
*ticks += 1;
let check = *ticks % 10 == 0;
if path.is_done() {
- let demand = DemandIndex(random::<usize>(..) % game.data.demands.len());
+ let demand = DemandIndex(random_usize(&mut rand::rng()) % game.data.demands.len());
let requested_item = game.data.demands[demand.0].input;
debug!("{me:?} -> waiting");
- let timeout = 90. + random_float() * 60.;
+ let timeout = 90. + random::<f32>() * 60.;
let mut facing = Vec2::ZERO;
for off in [IVec2::NEG_X, IVec2::NEG_Y, IVec2::X, IVec2::Y] {
if game.tiles.get(&(off + *chair)).is_some_and(|t| {
diff --git a/server/bot/src/algos/frank.rs b/server/bot/src/algos/frank.rs
index 8bd6d17b..156d655d 100644
--- a/server/bot/src/algos/frank.rs
+++ b/server/bot/src/algos/frank.rs
@@ -21,7 +21,7 @@ use crate::{
};
use hurrycurry_game_core::Game;
use hurrycurry_protocol::{Message, PacketS, PlayerClass, PlayerID, glam::Vec2};
-use std::random::random;
+use rand::{random, seq::IndexedRandom};
pub struct Frank {
me: PlayerID,
@@ -86,7 +86,7 @@ impl BotAlgo for Frank {
out.push(PacketS::Communicate {
player: self.me,
message: Some(Message::Translation {
- id: format!("s.bot.frank.line.{}", random::<u32>(..) % 8),
+ id: format!("s.bot.frank.line.{}", random::<u32>() % 8),
params: vec![Message::Text(player.name.clone())],
}),
timeout: Some(3.),
@@ -122,5 +122,5 @@ fn find_chef(game: &Game, me: PlayerID) -> Option<PlayerID> {
.filter(|(i, p)| p.class == PlayerClass::Chef && **i != me)
.map(|(i, _)| *i)
.collect::<Vec<_>>();
- chefs.get(random::<usize>(..) % chefs.len().max(1)).copied()
+ chefs.choose(&mut rand::rng()).copied()
}
diff --git a/server/bot/src/lib.rs b/server/bot/src/lib.rs
index 078314b1..31f2132a 100644
--- a/server/bot/src/lib.rs
+++ b/server/bot/src/lib.rs
@@ -15,7 +15,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-#![feature(random)]
+
pub mod algos;
pub mod pathfinding;
pub mod step;
@@ -24,7 +24,8 @@ use hurrycurry_game_core::Game;
use hurrycurry_protocol::PacketS;
#[cfg(feature = "debug_events")]
use hurrycurry_protocol::{PlayerID, glam::Vec3};
-use std::{collections::VecDeque, random::random};
+use rand::{Rng, RngExt};
+use std::{collections::VecDeque};
pub struct PacketSink<'a> {
buf: &'a mut VecDeque<PacketS>,
@@ -54,8 +55,8 @@ impl<T: BotAlgo + ?Sized> BotAlgo for Box<T> {
}
}
-fn random_float() -> f32 {
- random::<u32>(..) as f32 / u32::MAX as f32
+fn random_usize<T: Rng>(rng: &mut T) -> usize {
+ usize::from_ne_bytes(rng.random())
}
#[cfg(feature = "debug_events")]