Skip to content

Commit 605da5a

Browse files
committed
Replace jbmstable-parser with kbmstable-parser
1 parent 14d98f7 commit 605da5a

3 files changed

Lines changed: 37 additions & 36 deletions

File tree

core/build.gradle.kts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ version = libs.versions.beatoraja.get()
3232

3333
sourceSets {
3434
main {
35-
java.srcDirs(listOf("src/", "dependencies/jbms-parser/", "dependencies/jbmstable-parser"))
35+
java.srcDirs(listOf("src/", "dependencies/jbms-parser/"))
3636
resources.srcDirs(listOf("src/"))
3737
}
3838
}
@@ -159,6 +159,9 @@ dependencies {
159159
implementation(libs.javawebsocket)
160160
implementation(libs.bundles.slf4j)
161161

162+
implementation(libs.kotlin.reflect)
163+
implementation(libs.kbmstableparser)
164+
162165
// non-gradle managed file dependencies. jportaudio not on maven. "custom" scares me.
163166
implementation(":jportaudio")
164167
implementation(":luaj-jse:3.0.2-custom")

core/src/bms/player/beatoraja/TableDataAccessor.java

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
import java.security.MessageDigest;
66
import java.security.NoSuchAlgorithmException;
77
import java.util.*;
8+
9+
import bms.table.DifficultyTable;
10+
import bms.table.DifficultyTableElement;
11+
import bms.table.DifficultyTableParser;
812
import org.slf4j.Logger;
913
import org.slf4j.LoggerFactory;
1014
import java.util.stream.Collectors;
@@ -14,8 +18,6 @@
1418
import bms.model.Mode;
1519
import bms.player.beatoraja.CourseData.TrophyData;
1620
import bms.player.beatoraja.song.SongData;
17-
import bms.table.Course.Trophy;
18-
import bms.table.*;
1921

2022
/**
2123
* 難易度表データアクセス用クラス
@@ -168,44 +170,39 @@ public DifficultyTableAccessor(String tabledir, String url) {
168170

169171
@Override
170172
public TableData read() {
171-
DifficultyTableParser dtp = new DifficultyTableParser();
172-
DifficultyTable dt = new DifficultyTable();
173-
if (url.endsWith(".json")) {
174-
dt.setHeadURL(url);
175-
} else {
176-
dt.setSourceURL(url);
177-
}
173+
DifficultyTableParser parser = new DifficultyTableParser();
178174
try {
179-
dtp.decode(true, dt);
175+
DifficultyTable dt = parser.parse(url);
180176
TableData td = new TableData();
181177
td.setUrl(url);
182178
td.setName(dt.getName());
183-
td.setTag(dt.getTag());
184-
Mode defaultMode = dt.getMode() != null ? Mode.getMode(dt.getMode()) : null;
179+
// td.setTag(dt.getTag());
180+
// Mode defaultMode = dt.getMode() != null ? Mode.getMode(dt.getMode()) : null;
181+
Mode defaultMode = null;
185182
td.setFolder(Stream.of(dt.getLevelDescription()).map(lv -> {
186183
TableData.TableFolder tde = new TableData.TableFolder();
187184
tde.setName(td.getTag() + lv);
188-
tde.setSong(Stream.of(dt.getElements()).filter(dte -> lv.equals(dte.getLevel()))
185+
tde.setSong(dt.getElements().stream().filter(dte -> lv.equals(dte.getLevel()))
189186
.map(dte -> toSongData(dte, defaultMode)).toArray(SongData[]::new));
190187
return tde;
191188
}).toArray(TableData.TableFolder[]::new));
192189

193-
if (dt.getCourse() != null && dt.getCourse().length > 0) {
194-
td.setCourse(Stream.of(dt.getCourse()).flatMap(courses -> Stream.of(courses)).map(g -> {
190+
if (!dt.getCourse().isEmpty()) {
191+
td.setCourse(dt.getCourse().stream().map(g -> {
195192
CourseData cd = new CourseData();
196193
cd.setName(g.getName());
197-
cd.setSong(Stream.of(g.getCharts()).map(chart -> toSongData(chart, defaultMode))
194+
cd.setSong(g.getCharts().stream().map(chart -> toSongData(chart, defaultMode))
198195
.toArray(SongData[]::new));
199196

200-
cd.setConstraint(Stream.of(g.getConstraint()).map(c -> CourseData.CourseDataConstraint.getValue(c))
197+
cd.setConstraint(g.getConstraint().stream().map(CourseData.CourseDataConstraint::getValue)
201198
.filter(Objects::nonNull).toArray(CourseData.CourseDataConstraint[]::new));
202199

203-
if (g.getTrophy() != null) {
204-
cd.setTrophy(Stream.of(g.getTrophy()).map(trophy -> {
200+
if (!g.getTrophy().isEmpty()) {
201+
cd.setTrophy(g.getTrophy().stream().map(trophy -> {
205202
TrophyData t = new TrophyData();
206203
t.setName(trophy.getName());
207-
t.setMissrate((float) trophy.getMissrate());
208-
t.setScorerate((float) trophy.getScorerate());
204+
t.setMissrate((float) trophy.getMissRate());
205+
t.setScorerate((float) trophy.getScoreRate());
209206
return t;
210207
}).toArray(TrophyData[]::new));
211208
}
@@ -229,27 +226,24 @@ public void write(TableData td) {
229226
}
230227
}
231228

232-
private static SongData toSongData(BMSTableElement te, Mode defaultMode) {
229+
private static SongData toSongData(DifficultyTableElement te, Mode defaultMode) {
233230
SongData song = new SongData();
234-
if(te.getMD5() != null) {
235-
song.setMd5(te.getMD5().toLowerCase());
231+
if(te.getMd5() != null) {
232+
song.setMd5(te.getMd5().toLowerCase());
236233
}
237-
if(te.getSHA256() != null) {
238-
song.setSha256(te.getSHA256().toLowerCase());
234+
if(te.getSha256() != null) {
235+
song.setSha256(te.getSha256().toLowerCase());
239236
}
240237
song.setTitle(te.getTitle());
241238
song.setArtist(te.getArtist());
242239
Mode mode = te.getMode() != null ? Mode.getMode(te.getMode()) : null;
243240
song.setMode(mode != null ? mode.id : (defaultMode != null ? defaultMode.id : 0));
244-
song.setUrl(te.getURL());
245-
song.setIpfs(te.getIPFS());
246-
song.setOrg_md5(te.getParentHash());
247-
if(te instanceof DifficultyTableElement) {
248-
DifficultyTableElement dte = (DifficultyTableElement) te;
249-
song.setAppendurl(dte.getAppendURL());
250-
song.setAppendIpfs(dte.getAppendIPFS());
251-
}
252-
241+
song.setUrl(te.getUrl());
242+
song.setIpfs(te.getIpfs());
243+
// song.setOrg_md5(te.getParentHash());
244+
song.setAppendurl(te.getAppendURL());
245+
song.setAppendIpfs(te.getAppendIPFS());
246+
253247
return song;
254248
}
255249
}

gradle/libs.versions.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ ebur128java = "1.2.6-2"
2323
jna = "5.13.0"
2424
websocket = "1.6.0"
2525
slf4j = "2.0.17"
26+
kbmstable-parser = "1.0.0"
2627

2728

2829
[libraries]
2930
kotlin-gradle-plugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
3031
kotlin-serialization-gradle-plugin = { group = "org.jetbrains.kotlin", name = "kotlin-serialization", version.ref = "kotlin" }
32+
kotlin-reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", version.ref = "kotlin" }
3133

3234
gdx-core = { group = "com.badlogicgames.gdx", name = "gdx", version.ref = "gdx" }
3335
gdx-backend = { group = "com.badlogicgames.gdx", name = "gdx-backend-lwjgl3", version.ref = "gdx" }
@@ -83,6 +85,8 @@ javawebsocket = { group = "org.java-websocket", name = "Java-WebSocket", version
8385
slf4j = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" }
8486
slf4j-jul = { group = "org.slf4j", name = "slf4j-jdk14", version.ref = "slf4j" }
8587

88+
kbmstableparser = { group = "io.github.catizard", name = "kbmstable-parser", version.ref = "kbmstable-parser" }
89+
8690
[bundles]
8791
libgdx = ["gdx-core", "gdx-backend", "gdx-freetype", "gdx-controllers-core", "gdx-controllers-desktop"]
8892
lwjgl3 = ["lwjgl", "lwjgl-jemalloc", "lwjgl-glfw", "lwjgl-openal", "lwjgl-opengl", "lwjgl-stb"]

0 commit comments

Comments
 (0)