Add utility methods to SpriteCollection

This commit is contained in:
Yash Karandikar 2022-03-29 13:21:55 -05:00
parent 8afa9e2485
commit b1c40979df
2 changed files with 39 additions and 3 deletions

View file

@ -49,7 +49,7 @@
//! }
//! ```
use std::{cell::Cell, path::Path, ops::{DerefMut, Deref}};
use std::{cell::Cell, path::Path, ops::{DerefMut, Deref}, slice::IterMut};
use sdl2::{
image::ImageRWops,
@ -265,6 +265,42 @@ impl SpriteCollection {
Ok(())
}
pub fn push(&mut self, s: Sprite) {
self.v.push(s);
}
pub fn insert(&mut self, s: Sprite, index: usize) {
self.v.insert(index, s);
}
pub fn pop(&mut self) -> Option<Sprite> {
self.v.pop()
}
pub fn remove(&mut self, index: usize) -> Sprite {
self.v.remove(index)
}
pub fn iter(&mut self) -> IterMut<'_, Sprite> {
self.v.iter_mut()
}
pub fn clear(&mut self) {
self.v.clear();
}
pub fn concat(&mut self, mut other: SpriteCollection) {
self.v.append(&mut *other);
}
pub fn len(&self) -> usize {
self.v.len()
}
pub fn get(&self, index: usize) -> Option<&Sprite> {
self.v.get(index)
}
}
impl Deref for SpriteCollection {

View file

@ -39,7 +39,7 @@ fn main() {
let angle = (y_diff as f64).atan2(x_diff as f64);
s.set_angle(angle.to_degrees());
for spr in coll.iter_mut() {
for spr in coll.iter() {
let (start_x, start_y) = spr.position();
let m = sdl2::mouse::MouseState::new(event_pump.as_ref());
let x_diff = m.x() - start_x;
@ -68,7 +68,7 @@ fn main() {
s.translate(offset);
for spr in coll.iter_mut() {
for spr in coll.iter() {
spr.translate(offset);
}
}