From 4802fbf5df60de93e4b5f9ca6d6ae65d98e107ca Mon Sep 17 00:00:00 2001 From: Lionarius Date: Tue, 25 Apr 2023 21:37:54 +0300 Subject: [PATCH] fix death --- src/bot/commands/lobby.rs | 3 ++- src/image_manipulation.rs | 25 ++++++++++--------------- src/mixer/player.rs | 2 +- src/mixer/team.rs | 6 +++--- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/bot/commands/lobby.rs b/src/bot/commands/lobby.rs index 308d2ff..ee8335d 100644 --- a/src/bot/commands/lobby.rs +++ b/src/bot/commands/lobby.rs @@ -348,9 +348,10 @@ impl LobbyCommand { let team1_rank = team1.average_rating(&players); let team2_rank = team2.average_rating(&players); - image_gen.draw_teams_to_png( + image_gen.draw_teams_to_vec( player_names, [team1_rank.value as i32, team2_rank.value as i32], + image::ImageOutputFormat::Png ) }; diff --git a/src/image_manipulation.rs b/src/image_manipulation.rs index 5e86f1a..921ae9f 100644 --- a/src/image_manipulation.rs +++ b/src/image_manipulation.rs @@ -1,8 +1,8 @@ -use image::{codecs::png, ImageEncoder}; +use image::ImageOutputFormat; use imageproc::drawing::text_size; use rusttype::{Font, Scale}; use serenity::prelude::TypeMapKey; -use std::{io::BufWriter, sync::Arc}; +use std::{io::Cursor, sync::Arc}; pub struct ImageGenerator<'a> { pub player_font: Font<'a>, @@ -11,7 +11,7 @@ pub struct ImageGenerator<'a> { } impl<'a> ImageGenerator<'a> { - pub fn draw_teams_to_png(&self, player_names: Vec, teams_rating: [i32; 2]) -> Vec { + pub fn draw_teams_to_vec(&self, player_names: Vec, teams_rating: [i32; 2], format: ImageOutputFormat) -> Vec { let mut image: image::ImageBuffer, Vec> = self.teams_image.clone(); let player_text_scale = Scale::uniform(60.0); @@ -47,8 +47,8 @@ impl<'a> ImageGenerator<'a> { } let rating_text_scale = Scale::uniform(86.5); - for i in 0..2 { - let rating = teams_rating[i].to_string(); + for (i, rating) in teams_rating.iter().enumerate() { + let rating = rating.to_string(); let size = text_size(rating_text_scale, &self.player_font, &rating); imageproc::drawing::draw_text_mut( @@ -62,16 +62,11 @@ impl<'a> ImageGenerator<'a> { ); } - let mut buf = BufWriter::new(Vec::new()); - png::PngEncoder::new(&mut buf) - .write_image( - image.as_raw(), - image.width(), - image.height(), - image::ColorType::Rgb8, - ) - .unwrap(); - buf.into_inner().unwrap() + + let mut buf = Cursor::new(Vec::new()); + image.write_to(&mut buf, format).unwrap(); + + buf.into_inner() } } diff --git a/src/mixer/player.rs b/src/mixer/player.rs index d4caaf3..8a6d1fd 100644 --- a/src/mixer/player.rs +++ b/src/mixer/player.rs @@ -77,7 +77,7 @@ impl Player { for (i, role) in self.priority_roles.iter().enumerate() { if let Some(role) = role { - priorities.insert(role.clone(), priority_points / (i + 1) as f32); + priorities.insert(*role, priority_points / (i + 1) as f32); } } diff --git a/src/mixer/team.rs b/src/mixer/team.rs index be0bcbd..26f2143 100644 --- a/src/mixer/team.rs +++ b/src/mixer/team.rs @@ -47,7 +47,7 @@ impl Team { } pub fn count_role(&self, role: &Role) -> usize { - self.count_role.get(role).unwrap().clone() + *self.count_role.get(role).unwrap() } pub fn full_rating(&self, players: &[Player]) -> Rating { @@ -55,7 +55,7 @@ impl Team { .iter() .map(|((role, _), index)| { if let Some(index) = index { - players[*index].ranks.get(role).unwrap().clone() + *players[*index].ranks.get(role).unwrap() } else { Rating::zero() } @@ -77,7 +77,7 @@ impl Team { .filter(|((r, _), _)| r == role) .map(|((_, _), index)| { if let Some(index) = index { - players[*index].ranks.get(&role).unwrap().clone() + *players[*index].ranks.get(role).unwrap() } else { Rating::zero() }