@@ -14,9 +14,9 @@ pub struct LinSplitData {
1414 splits : SplitData ,
1515 socket : Arc < SplitterSocket > ,
1616 game_data : RwLock < GameData > ,
17- exiting_chapter : RwLock < bool > ,
1817 events : Arc < Mutex < VecDeque < Event > > > ,
1918 event_notifications : Arc < Notify > ,
19+ exiting_chapter : Mutex < bool > ,
2020 current_split : Mutex < i32 > ,
2121 last_area_id : Mutex < Area > ,
2222 last_area_difficulty : Mutex < AreaMode > ,
@@ -37,7 +37,7 @@ impl LinSplitData {
3737 splits,
3838 socket,
3939 game_data,
40- exiting_chapter : RwLock :: new ( false ) ,
40+ exiting_chapter : Mutex :: new ( false ) ,
4141 events,
4242 event_notifications,
4343 current_split : Mutex :: new ( -1 ) ,
@@ -59,21 +59,21 @@ impl LinSplitData {
5959 }
6060 Event :: Splitted | Event :: Finished => {
6161 * self . current_split . lock ( ) . await += 1 ;
62- * self . exiting_chapter . write ( ) . await = false ;
62+ * self . exiting_chapter . lock ( ) . await = false ;
6363 }
6464 Event :: Reset => {
6565 * self . current_split . lock ( ) . await = -1 ;
66- * self . exiting_chapter . write ( ) . await = false ;
66+ * self . exiting_chapter . lock ( ) . await = false ;
6767 * self . last_area_id . lock ( ) . await = Area :: Unknown ;
6868 * self . last_area_difficulty . lock ( ) . await = AreaMode :: Unknown ;
6969 }
7070 Event :: SplitUndone => {
7171 * self . current_split . lock ( ) . await -= 1 ;
72- * self . exiting_chapter . write ( ) . await = false ;
72+ * self . exiting_chapter . lock ( ) . await = false ;
7373 }
7474 Event :: SplitSkipped => {
7575 * self . current_split . lock ( ) . await += 1 ;
76- * self . exiting_chapter . write ( ) . await = false ;
76+ * self . exiting_chapter . lock ( ) . await = false ;
7777 }
7878 _ => { }
7979 }
@@ -89,20 +89,20 @@ impl LinSplitData {
8989 completed : bool ,
9090 last_completed : bool ,
9191 ) -> bool {
92- if !* self . exiting_chapter . read ( ) . await {
92+ let mut exiting_chapter = self . exiting_chapter . lock ( ) . await ;
93+ if !* exiting_chapter {
9394 let level_name = if chapter_area == Area :: TheSummit {
9495 Some ( level)
9596 } else {
9697 None
9798 } ;
98- let mut chap = self . exiting_chapter . write ( ) . await ;
99- * chap = area_id == chapter_area
99+ * exiting_chapter = area_id == chapter_area
100100 && completed
101101 && !last_completed
102102 && ( chapter_area != Area :: TheSummit
103103 || ( level_name
104104 . is_some_and ( |name| !name. to_lowercase ( ) . starts_with ( "credits" ) ) ) ) ;
105- return * self . exiting_chapter . read ( ) . await && self . splits . il_splits ;
105+ return * exiting_chapter && self . splits . il_splits ;
106106 }
107107 !completed && last_completed
108108 }
@@ -254,7 +254,7 @@ impl LinSplitData {
254254 //println!("{:?}", opt_split);
255255 if let Some ( split) = opt_split {
256256 match split {
257- Split :: Manual => { } // TODO: increment split id when a split is detected
257+ Split :: Manual => { }
258258 Split :: LevelEnter { level } => should_split = area_id != Area :: Menu && level_name != last_level_name && level. to_lowercase ( ) == level_name. to_lowercase ( ) ,
259259 Split :: LevelExit { level } => should_split = area_id != Area :: Menu && level_name != last_level_name && level. to_lowercase ( ) == last_level_name. to_lowercase ( ) ,
260260 Split :: ChapterA => {
@@ -394,7 +394,7 @@ impl LinSplitData {
394394 let should_reset = self . splits . auto_reset
395395 && self . splits . il_splits
396396 && self . game_data . read ( ) . await . area_id == Area :: Menu ;
397- let mut chap = self . exiting_chapter . write ( ) . await ;
397+ let mut chap = self . exiting_chapter . lock ( ) . await ;
398398 if should_reset {
399399 self . socket
400400 . send_command ( Command :: Reset {
0 commit comments