Add window resizing
This commit is contained in:
parent
2e2dccc033
commit
819aea8163
1 changed files with 71 additions and 4 deletions
75
src/main.rs
75
src/main.rs
|
@ -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…
Add table
Reference in a new issue