diff options
| author | Raymond Hogenson <rhogenson@posteo.net> | 2018-08-18 11:01:49 -0400 |
|---|---|---|
| committer | Raymond Hogenson <rhogenson@posteo.net> | 2018-08-18 11:01:49 -0400 |
| commit | dcf41c0ab884c124ffda8f616ec617c1e584255e (patch) | |
| tree | b7e44080dc9f607bd591ce2e52b30b04b668fb13 /src/main.rs | |
| parent | 950e60067ce036e831e81afeec180a63511f9e65 (diff) | |
| download | stallman-shooter-dcf41c0ab884c124ffda8f616ec617c1e584255e.tar.zst | |
Add textures
These were fun to make
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs index 76b7a5b..5c62576 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,6 +13,13 @@ enum Result { Nothing, } +struct Surfaces<'a> { + player: sdl2::surface::Surface<'a>, + enemy: sdl2::surface::Surface<'a>, + pbullet: sdl2::surface::Surface<'a>, + ebullet: sdl2::surface::Surface<'a>, +} + fn spawn(count: u64) -> Vec<state::Enemy> { if count == 0 { vec![state::Enemy::new()] @@ -21,7 +28,7 @@ fn spawn(count: u64) -> Vec<state::Enemy> { } } -fn frame(canvas: &mut sdl2::render::WindowCanvas, state: &mut state::State, events: &mut sdl2::event::EventPollIterator) -> Result { +fn frame(canvas: &mut sdl2::render::WindowCanvas, state: &mut state::State, events: &mut sdl2::event::EventPollIterator, surfaces: &Surfaces) -> Result { let mut new_bullets = Vec::new(); let count = state.count; for enemy in state.enemies.iter_mut() { @@ -57,15 +64,15 @@ fn frame(canvas: &mut sdl2::render::WindowCanvas, state: &mut state::State, even state.bullets.append(&mut new_bullets); state.player_bullets.retain(|bullet| !state::PBullet::outside(bullet)); for bullet in state.player_bullets.iter() { - bullet.draw(canvas); + bullet.draw(canvas, &surfaces.pbullet); } for enemy in state.enemies.iter() { - enemy.draw(canvas); + enemy.draw(canvas, &surfaces.enemy); } for bullet in state.bullets.iter() { - bullet.draw(canvas); + bullet.draw(canvas, &surfaces.ebullet); } - state.player.draw(canvas); + state.player.draw(canvas, &surfaces.player); state.count += 1; Result::Nothing } @@ -86,6 +93,11 @@ fn main() { let mut frame_count = 0; let mut state = state::State::new(); let mut won = false; + let player_surface = sdl2::image::LoadSurface::from_file("assets/stallman.png").unwrap(); + let enemy_surface = sdl2::image::LoadSurface::from_file("assets/gates.png").unwrap(); + let ebullet_surface = sdl2::image::LoadSurface::from_file("assets/binary_blob.png").unwrap(); + let pbullet_surface = sdl2::image::LoadSurface::from_file("assets/player_pepp.png").unwrap(); + let surfaces = Surfaces { player: player_surface, enemy: enemy_surface, pbullet: pbullet_surface, ebullet: ebullet_surface }; 'running: loop { if won { for event in event_pump.poll_iter() { @@ -99,7 +111,7 @@ fn main() { } else { canvas.set_draw_color(sdl2::pixels::Color::RGB(255, 255, 255)); canvas.clear(); - match frame(&mut canvas, &mut state, &mut event_pump.poll_iter()) { + match frame(&mut canvas, &mut state, &mut event_pump.poll_iter(), &surfaces) { Result::Loss => { break; } |
