diff --git a/src/lib.rs b/src/lib.rs index d3ba766..730f8ab 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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 { + 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 { diff --git a/src/main.rs b/src/main.rs index 8fa4253..0d7a8ac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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); } }