diff --git a/readme.md b/readme.md
index 321b348..bf88c5a 100644
--- a/readme.md
+++ b/readme.md
@@ -35,7 +35,8 @@ _these features are implemented_
## todo
- swap to chrono instead of `(TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.MS'))` (thats REALLY ugly!!)
-- patch `upload_level` to use 2.2 unlisted (friends only stuff)
+- patch `upload_level` and `download_level` to use 2.2 unlisted after we get social shit (friends only stuff)
- in our level parsing, check for dual portals rather than just starting dual
- green name users...
-- add more logging
\ No newline at end of file
+- add more old endpoints
+- add events, weekly, daily
\ No newline at end of file
diff --git a/src/helpers.rs b/src/helpers.rs
index dcc409e..d583aa1 100644
--- a/src/helpers.rs
+++ b/src/helpers.rs
@@ -1,5 +1,6 @@
pub mod accounts;
pub mod clean;
+pub mod difficulty;
pub mod encryption;
pub mod format;
pub mod levels;
\ No newline at end of file
diff --git a/src/helpers/difficulty.rs b/src/helpers/difficulty.rs
new file mode 100644
index 0000000..38f1a8b
--- /dev/null
+++ b/src/helpers/difficulty.rs
@@ -0,0 +1,23 @@
+pub enum LevelDifficulty {
+ Auto,
+ Easy,
+ Normal,
+ Hard,
+ Harder,
+ Insane,
+ Demon
+}
+
+impl LevelDifficulty {
+ pub fn to_star_difficulty(&self) -> i32 {
+ match self {
+ LevelDifficulty::Auto => 5,
+ LevelDifficulty::Easy => 1,
+ LevelDifficulty::Normal => 2,
+ LevelDifficulty::Hard => 3,
+ LevelDifficulty::Harder => 4,
+ LevelDifficulty::Insane => 5,
+ LevelDifficulty::Demon => 5,
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/helpers/levels.rs b/src/helpers/levels.rs
index c5d1e50..b9e8e58 100644
--- a/src/helpers/levels.rs
+++ b/src/helpers/levels.rs
@@ -46,40 +46,38 @@ impl ObjectData {
object_prop_bool!("13", checked);
}
-pub mod portal_speed {
- pub enum PortalSpeed {
- Slow,
- Normal,
- Medium,
- Fast,
- VeryFast
- }
+pub enum PortalSpeed {
+ Slow,
+ Normal,
+ Medium,
+ Fast,
+ VeryFast
+}
- impl PortalSpeed {
- pub fn portal_speed(&self) -> f64 {
- match self {
- PortalSpeed::Slow => 251.16,
- PortalSpeed::Normal => 311.58,
- PortalSpeed::Medium => 387.42,
- PortalSpeed::Fast => 478.0,
- PortalSpeed::VeryFast => 576.0
- }
+impl PortalSpeed {
+ pub fn portal_speed(&self) -> f64 {
+ match self {
+ PortalSpeed::Slow => 251.16,
+ PortalSpeed::Normal => 311.58,
+ PortalSpeed::Medium => 387.42,
+ PortalSpeed::Fast => 478.0,
+ PortalSpeed::VeryFast => 576.0
}
}
}
-pub fn id_to_portal_speed(id: i32) -> Option {
+pub fn id_to_portal_speed(id: i32) -> Option {
match id {
- 200 => Some(portal_speed::PortalSpeed::Slow),
- 201 => Some(portal_speed::PortalSpeed::Normal),
- 202 => Some(portal_speed::PortalSpeed::Medium),
- 203 => Some(portal_speed::PortalSpeed::Fast),
- 1334 => Some(portal_speed::PortalSpeed::VeryFast),
+ 200 => Some(PortalSpeed::Slow),
+ 201 => Some(PortalSpeed::Normal),
+ 202 => Some(PortalSpeed::Medium),
+ 203 => Some(PortalSpeed::Fast),
+ 1334 => Some(PortalSpeed::VeryFast),
_ => None,
}
}
-pub fn get_seconds_from_xpos(pos: f64, start_speed: portal_speed::PortalSpeed, portals: Vec) -> f64 {
+pub fn get_seconds_from_xpos(pos: f64, start_speed: PortalSpeed, portals: Vec) -> f64 {
let mut speed;
let mut last_obj_pos = 0.0;
let mut last_segment = 0.0;
@@ -110,12 +108,12 @@ pub fn get_seconds_from_xpos(pos: f64, start_speed: portal_speed::PortalSpeed, p
pub fn measure_length(objects: Vec, ka4: i32) -> f64 {
let start_speed = match ka4 {
- 0 => portal_speed::PortalSpeed::Normal,
- 1 => portal_speed::PortalSpeed::Slow,
- 2 => portal_speed::PortalSpeed::Medium,
- 3 => portal_speed::PortalSpeed::Fast,
- 4 => portal_speed::PortalSpeed::VeryFast,
- _ => portal_speed::PortalSpeed::Normal
+ 0 => PortalSpeed::Normal,
+ 1 => PortalSpeed::Slow,
+ 2 => PortalSpeed::Medium,
+ 3 => PortalSpeed::Fast,
+ 4 => PortalSpeed::VeryFast,
+ _ => PortalSpeed::Normal
};
let max_x_pos = objects