您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

1234567891011121314151617181920212223242526272829303132333435
  1. use specs::prelude::*;
  2. use sdl2::rect::{Point, Rect};
  3. use sdl2::pixels::Color;
  4. use sdl2::render::{WindowCanvas, Texture};
  5. use crate::components::*;
  6. pub type SystemData<'a> = (
  7. ReadStorage<'a, Position>,
  8. ReadStorage<'a, Sprite>,
  9. );
  10. pub fn render(
  11. canvas: &mut WindowCanvas,
  12. background: Color,
  13. textures: &[Texture],
  14. data: SystemData
  15. ) -> Result<(), String> {
  16. canvas.set_draw_color(background);
  17. canvas.clear();
  18. let (width, height) = canvas.output_size()?;
  19. for (pos, sprite) in (&data.0, &data.1).join() {
  20. let current_frame = sprite.region;
  21. let screen_position = pos.0 + Point::new(width as i32 / 2, height as i32 / 2);
  22. let screen_rect = Rect::from_center(screen_position, current_frame.width(), current_frame.height());
  23. canvas.copy(&textures[sprite.spritesheet], current_frame, screen_rect)?;
  24. }
  25. canvas.present();
  26. Ok(())
  27. }