aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
blob: f9c52f934a0f3aacf0aee24524422bb7eb13ff28 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
extern crate sdl2;

mod font;
pub mod generated;
mod interpolation;
mod render;

use std::time::{Duration, SystemTime};

use sdl2::{event::Event, keyboard::Keycode};

pub fn main() {
  let sdl_context = sdl2::init().unwrap();
  let video_subsystem = sdl_context.video().unwrap();

  let window = &mut video_subsystem
    .window("Cosin25 Invite", 512, 256)
    .position_centered()
    .build()
    .unwrap();

  let mut canvas = window.clone().into_canvas().build().unwrap();
  let texture_creator = canvas.texture_creator();

  render::render(&mut canvas, &texture_creator, 0.001);

  canvas.present();
  let mut event_pump = sdl_context.event_pump().unwrap();

  // amount to incr sin_offset by per frame
  let start_time = SystemTime::now();
  'running: loop {
    let time = SystemTime::now()
      .duration_since(start_time)
      .expect("Time went back between frames");
    let time = f64::from(time.as_millis() as u32) / 1000.0;

    render::render(&mut canvas, &texture_creator, time);

    for event in event_pump.poll_iter() {
      match event {
        Event::Quit { .. }
        | Event::KeyDown {
          keycode: Some(Keycode::Escape),
          ..
        } => break 'running,
        _ => {}
      }
    }

    // The rest of the game loop goes here...
    canvas.present();
    ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 12000));
  }
}