diff --git a/source/funkin/FreeplayState.hx b/source/funkin/FreeplayState.hx index 277db9873..bc3d9bbce 100644 --- a/source/funkin/FreeplayState.hx +++ b/source/funkin/FreeplayState.hx @@ -393,7 +393,7 @@ class FreeplayState extends MusicBeatSubState case "ALL": generateSongList(null, true); default: - generateSongList({filterType: STARTSWITH, filterData: str}, true); + generateSongList({filterType: REGEXP, filterData: str}, true); } }; @@ -477,6 +477,13 @@ class FreeplayState extends MusicBeatSubState { switch (filterStuff.filterType) { + case REGEXP: + // filterStuff.filterData has a string with the first letter of the sorting range, and the second one + // this creates a filter to return all the songs that start with a letter between those two + var filterRegexp = new EReg("^[" + filterStuff.filterData + "].*", "i"); + tempSongs = tempSongs.filter(str -> { + return filterRegexp.match(str.songName); + }); case STARTSWITH: tempSongs = tempSongs.filter(str -> { return str.songName.toLowerCase().startsWith(filterStuff.filterData); @@ -1045,6 +1052,7 @@ typedef SongFilter = enum abstract FilterType(String) { var STARTSWITH; + var REGEXP; var FAVORITE; var ALL; }