Add window resizing

main
Elnu 3 years ago
parent 2e2dccc033
commit 819aea8163

@ -7,6 +7,7 @@ use sfml::graphics::*;
use sfml::system::*; use sfml::system::*;
use sfml::window::*; use sfml::window::*;
use std::io::Write; use std::io::Write;
use std::thread::current;
mod structs; mod structs;
use structs::*; use structs::*;
@ -31,14 +32,64 @@ fn get_update_interval(level: u32) -> u32 {
((0.8 - (level as i32 - 1) as f32 * 0.007).powi(level as i32 - 1) * 1000.0) as u32 ((0.8 - (level as i32 - 1) as f32 * 0.007).powi(level as i32 - 1) * 1000.0) as u32
} }
fn handle_resize_events(code: Key, current_scale: &mut u32, render_window: &mut RenderWindow, scale_file_path: &std::path::PathBuf) {
let new_current_scale = match code {
Key::NUM0 | Key::NUM1 => 1,
Key::NUM2 => 2,
Key::NUM4 => 4,
Key::HYPHEN => match current_scale {
2 => 1,
4 => 2,
_ => 1
},
Key::EQUAL => match current_scale {
1 => 2,
2 => 4,
4 => 4,
_ => 1
},
_ => *current_scale
};
if *current_scale != new_current_scale {
render_window.set_size(Vector2u::new(WINDOW_WIDTH, WINDOW_HEIGHT) * new_current_scale);
let mut file = std::fs::OpenOptions::new()
.write(true)
.open(&scale_file_path)
.unwrap();
file.write_all(new_current_scale.to_string().as_bytes()).unwrap();
file.flush().unwrap();
*current_scale = new_current_scale;
}
}
fn main() { fn main() {
let context_settings = ContextSettings::default(); let context_settings = ContextSettings::default();
let scale_file_path = home::home_dir().unwrap().join(".septadrop-scale");
let mut current_scale: u32;
if scale_file_path.exists() {
current_scale = std::fs::read_to_string(&scale_file_path)
.unwrap()
.trim()
.parse::<u32>()
.unwrap();
} else {
let mut scale_file = std::fs::File::create(&scale_file_path).unwrap();
write!(&mut scale_file, "1").unwrap();
current_scale = 1;
}
let mut window = RenderWindow::new( let mut window = RenderWindow::new(
VideoMode::new(WINDOW_WIDTH, WINDOW_HEIGHT, 16), VideoMode::new(WINDOW_WIDTH, WINDOW_HEIGHT, 16),
"septadrop", "septadrop",
Style::TITLEBAR | Style::CLOSE, Style::TITLEBAR | Style::CLOSE,
&context_settings, &context_settings,
); );
if current_scale != 1 {
window.set_size(Vector2u::new(WINDOW_WIDTH, WINDOW_HEIGHT) * current_scale);
}
window.set_framerate_limit(FPS); window.set_framerate_limit(FPS);
window.set_key_repeat_enabled(false); window.set_key_repeat_enabled(false);
@ -159,14 +210,20 @@ fn main() {
loop { loop {
match window.poll_event() { match window.poll_event() {
Some(event) => match event { Some(event) => match event {
Event::Closed => { Event::Closed => window.close(),
window.close();
break;
}
Event::LostFocus => { Event::LostFocus => {
toggle_pause = true; toggle_pause = true;
paused_from_lost_focus = true; paused_from_lost_focus = true;
} }
Event::KeyPressed {
code,
alt: _,
ctrl: true,
shift: _,
system: _,
} => {
handle_resize_events(code, &mut current_scale, &mut window, &scale_file_path);
},
Event::KeyPressed { Event::KeyPressed {
code, code,
alt: _, alt: _,
@ -237,6 +294,16 @@ fn main() {
loop { loop {
match window.wait_event() { match window.wait_event() {
Some(event) => match event { Some(event) => match event {
Event::Closed => window.close(),
Event::KeyPressed {
code,
alt: _,
ctrl: true,
shift: _,
system: _,
} => {
handle_resize_events(code, &mut current_scale, &mut window, &scale_file_path);
}
Event::KeyPressed { Event::KeyPressed {
code: Key::ESCAPE, code: Key::ESCAPE,
alt: _, alt: _,

Loading…
Cancel
Save