From 8a60a181d122929b5632503571c8a8d57c2efee6 Mon Sep 17 00:00:00 2001 From: Mashy Date: Mon, 22 Jul 2019 19:55:57 +1000 Subject: [PATCH] fixed bots --- server/src/player.rs | 20 ++++++++++++++++---- server/src/vbox.rs | 5 +++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/server/src/player.rs b/server/src/player.rs index c3ca2aaa..ac4a8d6b 100644 --- a/server/src/player.rs +++ b/server/src/player.rs @@ -136,12 +136,19 @@ impl Player { } // get 2 colours and something else - if self.vbox.free[0].len() < 2 { + let free_colours = self.vbox.free[0].iter().fold(0, |count, item| { + match item.is_some() { + true => count + 1, + false => count + } + }); + if free_colours < 2 { break; } - self.vbox_accept(0, 0).expect("could't accept colour 0"); - self.vbox_accept(0, 0).expect("could't accept colour 1"); - self.vbox_accept(group_i, 0).expect("could't accept group 0"); + debug!("Looping"); + self.bot_vbox_accept(0).expect("could't accept colour 0"); + self.bot_vbox_accept(0).expect("could't accept colour 1"); + self.bot_vbox_accept(group_i).expect("could't accept group 0"); } // info!("{:?}", self.vbox.bound); @@ -168,6 +175,11 @@ impl Player { Ok(self) } + pub fn bot_vbox_accept(&mut self, group: usize) -> Result<&mut Player, Error> { + self.vbox.bot_accept(group)?; + Ok(self) + } + pub fn vbox_accept(&mut self, group: usize, index: usize) -> Result<&mut Player, Error> { self.vbox.accept(group, index)?; Ok(self) diff --git a/server/src/vbox.rs b/server/src/vbox.rs index fe93ab85..866bed49 100644 --- a/server/src/vbox.rs +++ b/server/src/vbox.rs @@ -128,6 +128,11 @@ impl Vbox { Ok(self) } + pub fn bot_accept(&mut self, i: usize) -> Result<&mut Vbox, Error> { + let buy_index = self.free[i].iter().position(|item| item.is_some()); + self.accept(i, buy_index.expect("no valid buys")) + } + pub fn reclaim(&mut self, i: usize) -> Result<&mut Vbox, Error> { self.bound.get(i).ok_or(format_err!("no item at index {:?}", i))?; let reclaimed = self.bound.remove(i);