diff --git a/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt b/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt index d1b49d3e..3d7c50d4 100644 --- a/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt +++ b/src/main/java/icu/samnyan/aqua/net/utils/GameHelper.kt @@ -60,6 +60,7 @@ interface IGenericGamePlaylog { val isFullCombo: Boolean val beforeRating: Int val afterRating: Int + val isAllPerfect: Boolean } interface GenericPlaylogRepo { @@ -95,7 +96,7 @@ fun genericUserSummary( ranks = ranks.map { (k, v) -> RankCount(k, v) }, maxCombo = plays.maxOf { it.maxCombo }, fullCombo = plays.count { it.isFullCombo }, - allPerfect = plays.count { it.achievement == 1010000 }, + allPerfect = plays.count { it.isAllPerfect }, totalScore = user.totalScore, plays = plays.size, totalPlayTime = plays.count() * 3L, // TODO: Give a better estimate @@ -121,7 +122,7 @@ fun genericRanking( name = user.userName, accuracy = plays.sumOf { it.achievement }.toDouble() / plays.size / 10000.0, rating = user.playerRating, - allPerfect = plays.count { it.achievement == 1010000 }, + allPerfect = plays.count { it.isAllPerfect }, fullCombo = plays.count { it.isFullCombo }, lastSeen = user.lastPlayDate.toString() ) diff --git a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserPlaylog.java b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserPlaylog.java index 45ddac46..c509b337 100644 --- a/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserPlaylog.java +++ b/src/main/java/icu/samnyan/aqua/sega/chusan/model/userdata/UserPlaylog.java @@ -166,4 +166,9 @@ public class UserPlaylog implements Serializable, IGenericGamePlaylog { public int getBeforeRating() { return playerRating; // TODO: Get before rating } + + @Override + public boolean isAllPerfect() { + return isAllJustice; + } } diff --git a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/UserPlaylog.java b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/UserPlaylog.java index 25617dd5..21973614 100644 --- a/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/UserPlaylog.java +++ b/src/main/java/icu/samnyan/aqua/sega/maimai2/model/userdata/UserPlaylog.java @@ -269,4 +269,13 @@ public class UserPlaylog implements Serializable, IGenericGamePlaylog { public boolean isFullCombo() { return maxCombo == totalCombo; } + + @Override + public boolean isAllPerfect() { + return tapMiss + tapGood + tapGreat == 0 + && holdMiss + holdGood + holdGreat == 0 + && slideMiss + slideGood + slideGreat == 0 + && touchMiss + touchGood + touchGreat == 0 + && breakMiss + breakGood + breakGreat == 0; + } } diff --git a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserPlaylog.java b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserPlaylog.java index 00224613..49759d1e 100644 --- a/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserPlaylog.java +++ b/src/main/java/icu/samnyan/aqua/sega/ongeki/model/userdata/UserPlaylog.java @@ -174,4 +174,9 @@ public class UserPlaylog implements Serializable, IGenericGamePlaylog { public int getBeforeRating() { return playerRating; // TODO: Get before rating } + + @Override + public boolean isAllPerfect() { + return isAllBreak; + } }