Skip to content

Commit b20ab00

Browse files
Moved save file loading to its own file
1 parent 9a02783 commit b20ab00

File tree

4 files changed

+57
-44
lines changed

4 files changed

+57
-44
lines changed

src/game/load_save.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
use crate::types::MainLevel;
2+
3+
pub fn load_save_file(save_file: String, main_levels: &mut Vec<MainLevel>, online_levels_beaten: &mut Vec<u32>, username: &mut String, password: &mut String, stars: &mut u32) {
4+
// Totally not copied from the old client at all
5+
let values_levels: Vec<&str> = save_file.split(";;;").collect();
6+
let save_pairs: Vec<&str> = values_levels[0].split(";").collect();
7+
let levels_completed: Vec<&str> = values_levels[1].split(";").collect();
8+
let online_levels_completed: Vec<&str> = values_levels[2].split(";").collect();
9+
for pair in save_pairs {
10+
let key_value: Vec<&str> = pair.split(":").collect();
11+
12+
if key_value[0] == "stars" {
13+
*stars = key_value[1].parse::<u32>().unwrap();
14+
}
15+
16+
if key_value[0] == "user" {
17+
if key_value[1] != "0" {
18+
*username = key_value[1].to_string();
19+
}
20+
}
21+
22+
if key_value[0] == "pass" {
23+
if key_value[1] != "0" {
24+
*password = key_value[1].to_string();
25+
}
26+
}
27+
}
28+
29+
// This is for checking what main levels you have completed
30+
let mut level_index: u8 = 0;
31+
for level in levels_completed {
32+
let key_value: Vec<&str> = level.split(":").collect();
33+
if key_value[1] == "1" {
34+
main_levels[level_index as usize].completed = true
35+
}
36+
37+
level_index += 1;
38+
}
39+
40+
// This is for checking what online levels you have completed
41+
for level in online_levels_completed {
42+
online_levels_beaten.push(level.parse().unwrap());
43+
}
44+
}

src/game/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ pub mod object_types;
44
pub mod saving;
55
pub mod loading;
66
pub mod parsing;
7-
pub mod main_levels;
7+
pub mod main_levels;
8+
pub mod load_save;

src/game/playing/hitboxes.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ pub fn hitbox_collision(
3434
level_mode: u8,
3535
current_level: u8,
3636
current_mode: String,
37-
online_levels_beaten: &mut Vec<u16>,
37+
online_levels_beaten: &mut Vec<u32>,
3838
online_level_diff: u8,
3939
online_level_rated: bool,
40-
level_id: u16
40+
level_id: u32
4141
) {
4242
for object in obj_grid {
4343
let obj_y = ((screen_height() / 1.15 - 25.0) + (object.y as f32 - 500.0)) + 6.0;

src/main.rs

Lines changed: 9 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ async fn main() {
229229
let mut current_difficulty: u8 = 0;
230230
let mut bg_offset: f32 = 0.0;
231231
let mut current_mode: String = "1".to_string();
232-
let mut online_levels_beaten: Vec<u16> = vec![];
232+
let mut online_levels_beaten: Vec<u32> = vec![];
233233
let mut chats: String = "".to_string();
234234
let mut chat_timer: Timer = Timer::new(5.0);
235235
let (sender, receiver) = crossbeam::channel::bounded::<String>(1);
@@ -312,46 +312,14 @@ async fn main() {
312312
.expect("Failed to load save file");
313313

314314
println!("Loading save data...");
315-
// Totally not copied from the old client at all
316-
let values_levels: Vec<&str> = save_file.split(";;;").collect();
317-
let save_pairs: Vec<&str> = values_levels[0].split(";").collect();
318-
let levels_completed: Vec<&str> = values_levels[1].split(";").collect();
319-
let online_levels_completed: Vec<&str> = values_levels[2].split(";").collect();
320-
for pair in save_pairs {
321-
let key_value: Vec<&str> = pair.split(":").collect();
322-
323-
if key_value[0] == "stars" {
324-
stars = key_value[1].parse::<u32>().unwrap();
325-
}
326-
327-
if key_value[0] == "user" {
328-
if key_value[1] != "0" {
329-
username = key_value[1].to_string();
330-
}
331-
}
332-
333-
if key_value[0] == "pass" {
334-
if key_value[1] != "0" {
335-
password = key_value[1].to_string();
336-
}
337-
}
338-
}
339-
340-
// This is for checking what main levels you have completed
341-
let mut level_index: u8 = 0;
342-
for level in levels_completed {
343-
let key_value: Vec<&str> = level.split(":").collect();
344-
if key_value[1] == "1" {
345-
main_levels[level_index as usize].completed = true
346-
}
347-
348-
level_index += 1;
349-
}
350-
351-
// This is for checking what online levels you have completed
352-
for level in online_levels_completed {
353-
online_levels_beaten.push(level.parse().unwrap());
354-
}
315+
load_save::load_save_file(
316+
save_file,
317+
&mut main_levels,
318+
&mut online_levels_beaten,
319+
&mut username,
320+
&mut password,
321+
&mut stars
322+
);
355323

356324
// This is for auto login
357325
// Auto login only runs if you have already logged in using the login page

0 commit comments

Comments
 (0)