diff --git a/src/main/kotlin/net/taehui/twilight/Component.kt b/src/main/kotlin/net/taehui/twilight/Component.kt index cb56b5f..0ddcba0 100644 --- a/src/main/kotlin/net/taehui/twilight/Component.kt +++ b/src/main/kotlin/net/taehui/twilight/Component.kt @@ -39,7 +39,8 @@ F(4), HIGHER_CLEAR(5), HIGHEST_CLEAR(6), - ASSIST_CLEAR(7); + ASSIST_CLEAR(7), + YELL1(8); @JsonValue fun getValue(): Int { @@ -60,6 +61,7 @@ 5 -> HIGHER_CLEAR 6 -> HIGHEST_CLEAR 7 -> ASSIST_CLEAR + 8 -> YELL1 else -> throw IllegalArgumentException(value.toString()) } } diff --git a/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt b/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt index f948351..2d03c75 100644 --- a/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt +++ b/src/main/kotlin/net/taehui/twilight/qwilight/QwilightAvatar.kt @@ -823,7 +823,7 @@ val comment = CommentOuterClass.Comment.parseFrom(commentFileContents) val commentFileData = commentFileContents.toByteArray() val commentIDNew = Utility.getID512(commentFileData) - val isP = comment.lowestJudgment == 0 + val isBand1 = comment.lowestJudgment == 0 val lowestAudioMultiplier = comment.audioMultipliersList.map { it.audioMultiplier } .plus(audioMultiplier).min() val commentID = DB.saveComment( @@ -841,7 +841,7 @@ lowestJudgmentConditionMode, stand, band, - isP, + isBand1, point, salt, commentIDNew, @@ -868,7 +868,8 @@ DB.saveHandled( avatarID, targetComputing.noteID, - isP, + isBand1, + point == 1.0, autoMode, judgmentMode, hitPointsMode, diff --git a/src/main/kotlin/net/taehui/twilight/system/DB.kt b/src/main/kotlin/net/taehui/twilight/system/DB.kt index 2ab00a6..49f9e37 100644 --- a/src/main/kotlin/net/taehui/twilight/system/DB.kt +++ b/src/main/kotlin/net/taehui/twilight/system/DB.kt @@ -135,7 +135,7 @@ Lowest_Judgment_Condition_Mode INTEGER, Stand INTEGER, Band INTEGER, - Is_P BOOLEAN, + Is_Band1 BOOLEAN, Point REAL, Salt INTEGER, Comment_ID CHAR(128) NOT NULL, @@ -785,7 +785,8 @@ val avatar: String, val noteID: String, val hitPointsMode: Int, - val isP: Boolean, + val isBand1: Boolean, + val isYell1: Boolean, val isDefaultHandled: Boolean ) @@ -793,7 +794,7 @@ pool.connection.use { it.prepareStatement( """ - SELECT Auto_Mode, Judgment_Mode, Hit_Points_Mode, Long_Note_Mode, Input_Favor_Mode, Note_Modify_Mode, Lowest_Audio_Multiplier, Avatar, Note_ID, Hit_Points_Mode, Is_P + SELECT Auto_Mode, Judgment_Mode, Hit_Points_Mode, Long_Note_Mode, Input_Favor_Mode, Note_Modify_Mode, Lowest_Audio_Multiplier, Avatar, Note_ID, Hit_Points_Mode, Is_Band1 FROM tw_comment WHERE Avatar > "" """.trimIndent() @@ -805,7 +806,8 @@ rows.getString("Avatar"), rows.getString("Note_ID"), rows.getInt("Hit_Points_Mode"), - rows.getBoolean("Is_P"), + rows.getBoolean("Is_Band1"), + rows.getDouble("Point") == 1.0, Utility.isStandardHandled( rows.getInt("Auto_Mode"), rows.getInt("Judgment_Mode"), @@ -852,7 +854,7 @@ dbStatement.setString(2, avatarNoteID.second) dbStatement.setInt( 3, - (if (defaultHandledComments.any { comment -> comment.isP }) Component.Handled.BAND1 else { + (if (defaultHandledComments.any { comment -> comment.isYell1 }) Component.Handled.YELL1 else if (defaultHandledComments.any { comment -> comment.isBand1 }) Component.Handled.BAND1 else { when (defaultHandledComments.maxBy { comment -> when (comment.hitPointsMode) { Component.HIGHEST_HIT_POINTS_MODE, Component.FAILED_HIT_POINTS_MODE -> 2 @@ -1009,7 +1011,7 @@ pool.connection.use { db -> db.prepareStatement( """ - SELECT tw_comment.Date, Avatar_ID, Avatar_Name, Multiplier, Auto_Mode, Note_Salt_Mode, Audio_Multiplier, Faint_Note_Mode, Judgment_Mode, Hit_Points_Mode, Note_Mobility_Mode, Long_Note_Mode, Input_Favor_Mode, Note_Modify_Mode, Lowest_Judgment_Condition_Mode, Stand, Band, Is_P, Point, Salt, Comment_ID, Is_Paused, Input_Flags + SELECT tw_comment.Date, Avatar_ID, Avatar_Name, Multiplier, Auto_Mode, Note_Salt_Mode, Audio_Multiplier, Faint_Note_Mode, Judgment_Mode, Hit_Points_Mode, Note_Mobility_Mode, Long_Note_Mode, Input_Favor_Mode, Note_Modify_Mode, Lowest_Judgment_Condition_Mode, Stand, Band, Is_Band1, Point, Salt, Comment_ID, Is_Paused, Input_Flags FROM tn_avatar INNER JOIN tw_comment ON tn_avatar.Avatar_ID = tw_comment.Avatar WHERE Note_ID = ? AND Is_Max = true @@ -1043,7 +1045,7 @@ val handled = getHandled(rowAvatarID, noteID) @JvmField - val isP = rows.getBoolean("Is_P") + val isBand1 = rows.getBoolean("Is_Band1") val point = rows.getDouble("Point") val salt = rows.getInt("Salt") val commentID = rows.getString("Comment_ID") ?: "" @@ -1941,7 +1943,7 @@ lowestJudgmentConditionMode: Int, stand: Int, band: Int, - isP: Boolean, + isBand1: Boolean, point: Double, salt: Int, commentIDNew: String, @@ -2010,7 +2012,7 @@ dbStatement.setInt(15, lowestJudgmentConditionMode) dbStatement.setInt(16, stand) dbStatement.setInt(17, band) - dbStatement.setBoolean(18, isP) + dbStatement.setBoolean(18, isBand1) dbStatement.setDouble(19, point) dbStatement.setInt(20, salt) dbStatement.setString(21, commentIDNew) @@ -2032,7 +2034,8 @@ fun saveHandled( avatarID: String, noteID: String, - isP: Boolean, + isBand1: Boolean, + isYell1: Boolean, autoMode: Int, judgmentMode: Int, hitPointsMode: Int, @@ -2052,36 +2055,42 @@ lowestAudioMultiplier ) ) { - if (handled != Component.Handled.BAND1) { - if (isP) { - handled = Component.Handled.BAND1 + if (handled != Component.Handled.YELL1) { + if (isYell1) { + handled = Component.Handled.YELL1 } else { - when (hitPointsMode) { - Component.HIGHEST_HIT_POINTS_MODE -> handled = Component.Handled.HIGHEST_CLEAR - Component.HIGHER_HIT_POINTS_MODE -> { - if (handled != Component.Handled.HIGHEST_CLEAR) { - handled = Component.Handled.HIGHER_CLEAR - } - } + if (handled != Component.Handled.BAND1) { + if (isBand1) { + handled = Component.Handled.BAND1 + } else { + when (hitPointsMode) { + Component.HIGHEST_HIT_POINTS_MODE -> handled = Component.Handled.HIGHEST_CLEAR + Component.HIGHER_HIT_POINTS_MODE -> { + if (handled != Component.Handled.HIGHEST_CLEAR) { + handled = Component.Handled.HIGHER_CLEAR + } + } - Component.DEFAULT_HIT_POINTS_MODE -> { - if (handled != Component.Handled.HIGHER_CLEAR && handled != Component.Handled.HIGHEST_CLEAR) { - handled = Component.Handled.CLEAR + Component.DEFAULT_HIT_POINTS_MODE -> { + if (handled != Component.Handled.HIGHER_CLEAR && handled != Component.Handled.HIGHEST_CLEAR) { + handled = Component.Handled.CLEAR + } + } } } - } - } - pool.connection.use { - it.prepareStatement( - """ - REPLACE INTO tw_handled - VALUES(?, ?, ?) - """.trimIndent() - ).use { dbStatement -> - dbStatement.setString(1, avatarID) - dbStatement.setString(2, noteID) - dbStatement.setInt(3, handled.value) - dbStatement.execute() + pool.connection.use { + it.prepareStatement( + """ + REPLACE INTO tw_handled + VALUES(?, ?, ?) + """.trimIndent() + ).use { dbStatement -> + dbStatement.setString(1, avatarID) + dbStatement.setString(2, noteID) + dbStatement.setInt(3, handled.value) + dbStatement.execute() + } + } } } } @@ -3107,6 +3116,8 @@ data[levelID] = object { val handledBand1Count = handledAvatarHandledItemMap.getOrDefault(Component.Handled.BAND1, emptyList()).size + val handledYell1Count = + handledAvatarHandledItemMap.getOrDefault(Component.Handled.YELL1, emptyList()).size val handledHighestClearCount = handledAvatarHandledItemMap.getOrDefault(Component.Handled.HIGHEST_CLEAR, emptyList()).size val handledHigherClearCount =