Skip to content

Commit deef60b

Browse files
committed
Add a way to force set a highscore saves
1 parent 1d2a391 commit deef60b

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

source/funkin/savedata/FunkinSave.hx

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,29 +97,36 @@ class FunkinSave {
9797
*/
9898
public static inline function getSongHighscore(name:String, diff:String, ?variation:String, ?changes:Array<HighscoreChange>) {
9999
if (changes == null) changes = [];
100-
return safeGetHighscore(HSongEntry(name.toLowerCase(), diff.toLowerCase(), variation, changes));
100+
return safeGetHighscore(getSongEntry(name, diff, variation, changes));
101101
}
102102

103-
public static inline function setSongHighscore(name:String, diff:String, ?variation:String, highscore:SongScore, ?changes:Array<HighscoreChange>) {
103+
public static inline function setSongHighscore(name:String, diff:String, ?variation:String, highscore:SongScore, ?changes:Array<HighscoreChange>, ?force:Bool) {
104104
if (changes == null) changes = [];
105-
if (safeRegisterHighscore(HSongEntry(name.toLowerCase(), diff.toLowerCase(), variation, changes), highscore)) {
105+
if (safeRegisterHighscore(getSongEntry(name, diff, variation, changes), highscore, force)) {
106106
flush();
107107
return true;
108108
}
109109
return false;
110110
}
111111

112+
public static inline function getSongEntry(name:String, diff:String, ?variation:String, ?changes:Array<HighscoreChange>):HighscoreEntry
113+
return HSongEntry(name.toLowerCase(), diff.toLowerCase(), variation, changes);
114+
112115
public static inline function getWeekHighscore(name:String, diff:String)
113-
return safeGetHighscore(HWeekEntry(name.toLowerCase(), diff.toLowerCase()));
116+
return safeGetHighscore(getWeekEntry(name, diff));
114117

115-
public static inline function setWeekHighscore(name:String, diff:String, highscore:SongScore) {
116-
if (safeRegisterHighscore(HWeekEntry(name.toLowerCase(), diff.toLowerCase()), highscore)) {
118+
public static inline function setWeekHighscore(name:String, diff:String, highscore:SongScore, ?force:Bool) {
119+
if (safeRegisterHighscore(getWeekEntry(name, diff), highscore, force)) {
117120
flush();
118121
return true;
119122
}
120123
return false;
121124
}
122125

126+
127+
public static inline function getWeekEntry(name, diff:String):HighscoreEntry
128+
return HWeekEntry(name.toLowerCase(), diff.toLowerCase());
129+
123130
private static function safeGetHighscore(entry:HighscoreEntry):SongScore {
124131
if (!highscores.exists(entry)) {
125132
return {
@@ -133,9 +140,9 @@ class FunkinSave {
133140
return highscores.get(entry);
134141
}
135142

136-
private static function safeRegisterHighscore(entry:HighscoreEntry, highscore:SongScore) {
143+
private static function safeRegisterHighscore(entry:HighscoreEntry, highscore:SongScore, force = false) {
137144
var oldHigh = safeGetHighscore(entry);
138-
if (oldHigh.date == null || oldHigh.score < highscore.score) {
145+
if (force || oldHigh.date == null || oldHigh.score < highscore.score) {
139146
highscores.set(entry, highscore);
140147
return true;
141148
}

0 commit comments

Comments
 (0)