@@ -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