Skip to content

Commit 86db2f2

Browse files
committed
Initial commit
0 parents  commit 86db2f2

File tree

4 files changed

+124
-0
lines changed

4 files changed

+124
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/target

Cargo.lock

Lines changed: 63 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "hacksoc-raycasting"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7+
8+
[dependencies]
9+
sdl2 = "0.35.2"

src/main.rs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
extern crate sdl2;
2+
3+
use sdl2::event::Event;
4+
use sdl2::keyboard::Keycode;
5+
use sdl2::pixels::Color;
6+
use std::time::Duration;
7+
8+
pub fn main() {
9+
// Create SDL context for video
10+
let sdl_context = sdl2::init().unwrap();
11+
let video_subsystem = sdl_context.video().unwrap();
12+
13+
// Create a window
14+
// position_centered - puts the window in the middle of the screen
15+
let window = video_subsystem
16+
.window("HackSoc Raysasting", 1280, 720)
17+
.position_centered()
18+
.build()
19+
.unwrap();
20+
21+
// Make the mouse relative - hides it like in a 3D game
22+
sdl_context.mouse().set_relative_mouse_mode(true);
23+
24+
// Create a canvas, which we use to draw to the window
25+
let mut canvas = window.into_canvas().build().unwrap();
26+
27+
canvas.set_draw_color(Color::RGB(0, 255, 255));
28+
canvas.clear();
29+
canvas.present();
30+
let mut event_pump = sdl_context.event_pump().unwrap();
31+
let mut i = 0;
32+
'running: loop {
33+
i = (i + 1) % 255;
34+
canvas.set_draw_color(Color::RGB(i, 64, 255 - i));
35+
canvas.clear();
36+
for event in event_pump.poll_iter() {
37+
match event {
38+
Event::Quit { .. }
39+
| Event::KeyDown {
40+
keycode: Some(Keycode::Escape),
41+
..
42+
} => break 'running,
43+
_ => {}
44+
}
45+
}
46+
// The rest of the game loop goes here...
47+
48+
canvas.present();
49+
std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60));
50+
}
51+
}

0 commit comments

Comments
 (0)