@@ -1225,28 +1225,29 @@ bool DTLayer::createDeathsString(const Deaths& deaths, const LevelMetadeta& meta
12251225
12261226 auto & runSplit = runSplitRes.unwrap ();
12271227
1228- bool includeRunStart = runSplit.start != - 1 ;
1228+ bool includeRunStart = runSplit.start != std:: nullopt ;
12291229
12301230 std::string nbDeColor = " " ;
12311231 std::string nbColor = " " ;
12321232
12331233 if (includeRunStart && !ignoreExtraSettings){
12341234 if (!meta.showAnyRun && meta.runsToShow .size ()){
1235- if (meta.runsToShow .contains (runSplit.start )){
1236- if (meta.runsToShow .at (runSplit.start ) > runSplit.end )
1235+ if (meta.runsToShow .contains (runSplit.start . value () )){
1236+ if (meta.runsToShow .at (runSplit.start . value () ) > runSplit.end )
12371237 continue ;
12381238 }
12391239 else {
12401240 continue ;
12411241 }
12421242 }
12431243 else {
1244- if (meta.sharedRunToShow > runSplit.end - runSplit.start )
1244+ if (meta.sharedRunToShow > runSplit.end - runSplit.start . value () )
12451245 continue ;
12461246 }
12471247 }
12481248 else if (!includeRunStart && !ignoreExtraSettings){
1249- if (meta.hideUpto > runSplit.end )
1249+ log::info (" a {}" , runSplit.end );
1250+ if (meta.hideUpto > runSplit.end && runSplit.end >= 0 )
12501251 continue ;
12511252
12521253 if (newBests.has_value () && newBests.value ().contains (runSplit.end )){
@@ -1255,16 +1256,16 @@ bool DTLayer::createDeathsString(const Deaths& deaths, const LevelMetadeta& meta
12551256 }
12561257 }
12571258
1258- if (prevStart != runSplit.start ){
1259+ if (prevStart != runSplit.start . value_or (- 1 ) ){
12591260 if (prevStart != -2 ){
12601261 out += " ----------{nl}" ;
12611262 }
1262- prevStart = runSplit.start ;
1263+ prevStart = runSplit.start . value_or (- 1 ) ;
12631264 }
12641265
12651266 auto format = custom.format ;
12661267
1267- std::string toReplaceWith = includeRunStart ? fmt::format (" {}-{}" , runSplit.start , runSplit.end ) : fmt::format (" {}" , runSplit.end );
1268+ std::string toReplaceWith = includeRunStart ? fmt::format (" {}-{}" , runSplit.start . value () , runSplit.end ) : fmt::format (" {}" , runSplit.end );
12681269 format = std::regex_replace (
12691270 format,
12701271 std::regex (" \\ {per\\ }" ),
@@ -2265,7 +2266,7 @@ void DTLayer::modifyRun(int startPer, int amount, std::optional<int> sessionNumb
22652266 }
22662267
22672268 auto newNum = data[runStr] + amount;
2268- log::info (" {} | {} | {}" , amount, data[runStr], newNum);
2269+ // log::info("{} | {} | {}", amount, data[runStr], newNum);
22692270
22702271 if (newNum <= 0 ){
22712272 data.erase (runStr);
@@ -2678,10 +2679,10 @@ long long DTLayer::calcPlaytime(const Deaths& deaths){
26782679 if (runSplitRes.isErr ()) continue ;
26792680
26802681 float runLength;
2681- if (runSplitRes.unwrap ().start == - 1 )
2682+ if (runSplitRes.unwrap ().start == std:: nullopt )
26822683 runLength = runSplitRes.unwrap ().end ;
26832684 else
2684- runLength = (runSplitRes.unwrap ().end - runSplitRes.unwrap ().start );
2685+ runLength = (runSplitRes.unwrap ().end - runSplitRes.unwrap ().start . value () );
26852686 // log::info("{} | {} | {}", runLength, runSplitRes.unwrap().end, runSplitRes.unwrap().start);
26862687 // log::info("{}", death.second);
26872688
@@ -2866,10 +2867,12 @@ UpdateFuture DTLayer::onBestRunsKey(){
28662867 if (splitRunRes.isErr ()) continue ;
28672868 auto splitRun = splitRunRes.unwrap ();
28682869
2869- if (!bestRuns.contains (splitRun.start ))
2870- bestRuns.insert ({splitRun.start , splitRun.end });
2871- else if (bestRuns[splitRun.start ] < splitRun.end ){
2872- bestRuns[splitRun.start ] = splitRun.end ;
2870+ auto realStart = splitRun.start .value_or (-1 );
2871+
2872+ if (!bestRuns.contains (realStart))
2873+ bestRuns.insert ({realStart, splitRun.end });
2874+ else if (bestRuns[realStart] < splitRun.end ){
2875+ bestRuns[realStart] = splitRun.end ;
28732876 }
28742877 }
28752878
@@ -2941,10 +2944,12 @@ UpdateFuture DTLayer::onSessionBestRunsKey(){
29412944 if (splitRunRes.isErr ()) continue ;
29422945 auto splitRun = splitRunRes.unwrap ();
29432946
2944- if (!bestRuns.contains (splitRun.start ))
2945- bestRuns.insert ({splitRun.start , splitRun.end });
2946- else if (bestRuns[splitRun.start ] < splitRun.end ){
2947- bestRuns[splitRun.start ] = splitRun.end ;
2947+ auto realStart = splitRun.start .value_or (-1 );
2948+
2949+ if (!bestRuns.contains (realStart))
2950+ bestRuns.insert ({realStart, splitRun.end });
2951+ else if (bestRuns[realStart] < splitRun.end ){
2952+ bestRuns[realStart] = splitRun.end ;
29482953 }
29492954 }
29502955
@@ -3145,7 +3150,7 @@ UpdateFuture DTLayer::onSectionKey(){
31453150 if (splitDeathRes.isErr ()) continue ;
31463151 auto splitDeath = splitDeathRes.unwrap ();
31473152
3148- if (splitDeath.start == - 1 ){
3153+ if (splitDeath.start == std:: nullopt ){
31493154 CreateSectioIDForSectionPair (splitDeath, std::nullopt , death.second );
31503155 continue ;
31513156 }
@@ -3154,7 +3159,7 @@ UpdateFuture DTLayer::onSectionKey(){
31543159
31553160 for (const auto & section : validSections)
31563161 {
3157- if (!section.isPercentInSection (splitDeath.start )) continue ;
3162+ if (!section.isPercentInSection (splitDeath.start . value_or (- 1 ) )) continue ;
31583163
31593164 startingSectionsForDeath.push_back (section);
31603165 }
@@ -3224,8 +3229,9 @@ UpdateFuture DTLayer::onLevelRunsKey() {
32243229 auto res = StatsManager::splitRunKey (key);
32253230 if (res.isOk ()) {
32263231 Run run = res.unwrap ();
3227- if (run.start <= -1 ) run.start = 0 ;
3228- if (count > 0 && run.end > run.start ) {
3232+ auto runStartReal = run.start .value_or (-1 );
3233+ if (runStartReal <= -1 ) runStartReal = 0 ;
3234+ if (count > 0 && run.end > runStartReal) {
32293235 validRuns.push_back (run);
32303236 }
32313237 }
0 commit comments