Skip to main content

ex1/
ex1.rs

1use sunshine::player::Player;
2use sunshine::framebuffer::{Framebuffer, RGB};
3use sunshine::map::Map;
4use sunshine::renderer::render;
5use sunshine::sprite::{Sprite, Sprites};
6use sunshine::texture::Texture;
7
8const PI: f64 = std::f64::consts::PI;
9
10fn main() {
11    let win_w: usize = 1024;
12    let win_h: usize = 512;
13
14    let mut framebuffer: Framebuffer = Framebuffer::new(win_h, win_w);
15
16    let map_string = "0000222222220000\
17                      1              0\
18                      1      11111   0\
19                      1     0        0\
20                      0     0  1110000\
21                      0     3        0\
22                      0   10000      0\
23                      0   3   11100  0\
24                      5   4   0      0\
25                      5   4   1  00000\
26                      0       1      0\
27                      2       1      0\
28                      0       0      0\
29                      0 0000000      0\
30                      0              0\
31                      0002222222200000";
32    let mut map: Map = Map::new(16, 16, map_string);
33
34    let mut player: Player = Player{
35        x: 3.456,
36        y: 2.345,
37        direction: 1.523,
38        fov: PI / 3.,
39    };
40
41    let mut sprites: Sprites = vec![
42        Sprite::new(3.523, 3.812, 2),
43        Sprite::new(1.843, 8.765, 0),
44        Sprite::new(5.323, 5.365, 1),
45        Sprite::new(4.123, 10.265, 1),
46    ];
47
48    let wall_textures: Texture = Texture::new("./examples/walltex.png");
49    let mon_textures: Texture = Texture::new("./examples/montex.png");
50
51    render(&mut framebuffer, &mut map, &mut player, &mut sprites, &mon_textures, &wall_textures);
52    framebuffer.write_file("frame.ppm");
53}