From 1bec491c61a11660ce53b50ba5163a59dc3cea66 Mon Sep 17 00:00:00 2001 From: Chazoshtare Date: Sat, 7 Aug 2021 01:02:28 +0200 Subject: [PATCH 1/2] Remove leftover whitespace --- src/bms/player/beatoraja/BMSResource.java | 4 +-- src/bms/player/beatoraja/MainLoader.java | 4 +-- .../player/beatoraja/select/BarRenderer.java | 26 +++++++++---------- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/bms/player/beatoraja/BMSResource.java b/src/bms/player/beatoraja/BMSResource.java index 8ff47ba90..3a7dd8983 100644 --- a/src/bms/player/beatoraja/BMSResource.java +++ b/src/bms/player/beatoraja/BMSResource.java @@ -99,7 +99,7 @@ public boolean setBMSFile(BMSModel model, final Path f, final Config config, BMS while(!bgaloaders.isEmpty() && !bgaloaders.getFirst().isAlive()) { bgaloaders.removeFirst(); } - + if(MainLoader.getIllegalSongCount() == 0) { // Audio, BGAともキャッシュがあるため、何があっても全リロードする BGALoaderThread bgaloader = new BGALoaderThread( @@ -108,7 +108,7 @@ public boolean setBMSFile(BMSModel model, final Path f, final Config config, BMS bgaloader.start(); AudioLoaderThread audioloader = new AudioLoaderThread(model); audioloaders.addLast(audioloader); - audioloader.start(); + audioloader.start(); } return true; } diff --git a/src/bms/player/beatoraja/MainLoader.java b/src/bms/player/beatoraja/MainLoader.java index afd918414..bb1081f96 100644 --- a/src/bms/player/beatoraja/MainLoader.java +++ b/src/bms/player/beatoraja/MainLoader.java @@ -102,9 +102,7 @@ public static void main(String[] args) { } } - - - if (Files.exists(MainController.configpath) && (bmsPath != null || auto != null)) { + if(Files.exists(MainController.configpath) && (bmsPath != null || auto != null)) { IRConnectionManager.getAllAvailableIRConnectionName(); play(bmsPath, auto, true, null, null, bmsPath != null); } else { diff --git a/src/bms/player/beatoraja/select/BarRenderer.java b/src/bms/player/beatoraja/select/BarRenderer.java index c932dbe46..274ce8131 100644 --- a/src/bms/player/beatoraja/select/BarRenderer.java +++ b/src/bms/player/beatoraja/select/BarRenderer.java @@ -126,7 +126,7 @@ public BarRenderer(MusicSelector select) { TableData[] unsortedtables = tdaccessor.readAll(); Array sortedtables = new Array(unsortedtables.length); - + for(String url : select.main.getConfig().getTableURL()) { for(int i = 0;i < unsortedtables.length;i++) { final TableData td = unsortedtables[i]; @@ -137,7 +137,7 @@ public BarRenderer(MusicSelector select) { } } } - + for(TableData td : unsortedtables) { if(td != null) { sortedtables.add(td); @@ -184,7 +184,7 @@ public BarRenderer(MusicSelector select) { song.setUrl(chart.url); song.setAppendurl(chart.appendurl); if(chart.mode != null) { - song.setMode(chart.mode.id); + song.setMode(chart.mode.id); } songs[j] = song; } @@ -208,7 +208,7 @@ public BarRenderer(MusicSelector select) { song.setUrl(chart.url); song.setAppendurl(chart.appendurl); if(chart.mode != null) { - song.setMode(chart.mode.id); + song.setMode(chart.mode.id); } songs[j] = song; } @@ -229,7 +229,7 @@ public BarRenderer(MusicSelector select) { } td.setCourse(course); if(td.validate()) { - table.add(new TableBar(select, td, new TableDataAccessor.DifficultyTableAccessor(main.getConfig().getTablepath(), td.getUrl()))); + table.add(new TableBar(select, td, new TableDataAccessor.DifficultyTableAccessor(main.getConfig().getTablepath(), td.getUrl()))); } } } else { @@ -464,17 +464,15 @@ public boolean mousePressed(SkinBar baro, int button, int x, int y) { } private long time; - + public void prepare(MusicSelectSkin skin, SkinBar baro, long time) { - this.time = time; - final long timeMillis = System.currentTimeMillis(); + this.time = time;final long timeMillis = System.currentTimeMillis(); boolean applyMovement = duration != 0 && duration > timeMillis; float angleLerp = 0; if (applyMovement) { angleLerp = angle < 0 ? ((float) (timeMillis - duration)) / angle : ((float) (duration - timeMillis)) / angle; } - for (int i = 0; i < barlength; i++) { // calcurate song bar position final BarArea ba = bararea[i]; @@ -579,11 +577,11 @@ public void render(SkinObjectRenderer sprite, MusicSelectSkin skin, SkinBar baro for (char c : charset) { chars[i++] = c; } - + for(int index = 0;index < SkinBar.BARTEXT_COUNT;index++) { if(baro.getText(index) != null) { - baro.getText(index).prepareFont(String.valueOf(chars)); - } + baro.getText(index).prepareFont(String.valueOf(chars)); + } } } @@ -635,7 +633,7 @@ public void render(SkinObjectRenderer sprite, MusicSelectSkin skin, SkinBar baro final SkinText text = baro.getText(ba.text); if(text != null) { text.setText(ba.sd.getTitle()); - text.draw(sprite, ba.x, ba.y); + text.draw(sprite, ba.x, ba.y); } } @@ -652,7 +650,7 @@ public void render(SkinObjectRenderer sprite, MusicSelectSkin skin, SkinBar baro if (TROPHY[j].equals(trophy.getName())) { final SkinImage trophyImage = baro.getTrophy(j); if(trophyImage != null) { - trophyImage.draw(sprite, ba.x, ba.y); + trophyImage.draw(sprite, ba.x, ba.y); } break; } From 35bce16a2a19407309abfc8d7b1212f627b5e0e7 Mon Sep 17 00:00:00 2001 From: Chazoshtare Date: Sat, 7 Aug 2021 01:10:25 +0200 Subject: [PATCH 2/2] Extract verification and include song paths in error message, remove unused checks Displayed error paths are capped to 30 lines to limit potential big dialog window size. More will be shown once the user deletes the folders. --- src/bms/player/beatoraja/BMSResource.java | 26 ++++++------ src/bms/player/beatoraja/MainLoader.java | 40 +++++++++---------- .../player/beatoraja/select/BarRenderer.java | 4 +- 3 files changed, 33 insertions(+), 37 deletions(-) diff --git a/src/bms/player/beatoraja/BMSResource.java b/src/bms/player/beatoraja/BMSResource.java index 3a7dd8983..1483478d9 100644 --- a/src/bms/player/beatoraja/BMSResource.java +++ b/src/bms/player/beatoraja/BMSResource.java @@ -1,9 +1,5 @@ package bms.player.beatoraja; -import java.nio.file.Path; -import java.util.ArrayDeque; -import java.util.logging.Logger; - import bms.model.BMSModel; import bms.player.beatoraja.audio.AudioDriver; import bms.player.beatoraja.play.bga.BGAProcessor; @@ -11,6 +7,10 @@ import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import java.nio.file.Path; +import java.util.ArrayDeque; +import java.util.logging.Logger; + /** * BMSの音源、BGAリソースを管理するクラス * @@ -100,16 +100,14 @@ public boolean setBMSFile(BMSModel model, final Path f, final Config config, BMS bgaloaders.removeFirst(); } - if(MainLoader.getIllegalSongCount() == 0) { - // Audio, BGAともキャッシュがあるため、何があっても全リロードする - BGALoaderThread bgaloader = new BGALoaderThread( - config.getBga() == Config.BGA_ON || (config.getBga() == Config.BGA_AUTO && (mode.mode == BMSPlayerMode.Mode.AUTOPLAY || mode.mode == BMSPlayerMode.Mode.REPLAY)) ? model : null); - bgaloaders.addLast(bgaloader); - bgaloader.start(); - AudioLoaderThread audioloader = new AudioLoaderThread(model); - audioloaders.addLast(audioloader); - audioloader.start(); - } + // Audio, BGAともキャッシュがあるため、何があっても全リロードする + BGALoaderThread bgaloader = new BGALoaderThread( + config.getBga() == Config.BGA_ON || (config.getBga() == Config.BGA_AUTO && (mode.mode == BMSPlayerMode.Mode.AUTOPLAY || mode.mode == BMSPlayerMode.Mode.REPLAY)) ? model : null); + bgaloaders.addLast(bgaloader); + bgaloader.start(); + AudioLoaderThread audioloader = new AudioLoaderThread(model); + audioloaders.addLast(audioloader); + audioloader.start(); return true; } diff --git a/src/bms/player/beatoraja/MainLoader.java b/src/bms/player/beatoraja/MainLoader.java index bb1081f96..8f87165f1 100644 --- a/src/bms/player/beatoraja/MainLoader.java +++ b/src/bms/player/beatoraja/MainLoader.java @@ -8,6 +8,7 @@ import java.util.*; import java.util.logging.FileHandler; import java.util.logging.Logger; +import java.util.stream.Collectors; import javax.swing.JOptionPane; @@ -115,19 +116,13 @@ public static void play(Path f, BMSPlayerMode auto, boolean forceExit, Config co config = Config.read(); } + verifyIllegalSongs(); + if(config.isUseDiscordRPC()) { discord = new Discord("", ""); discord.startup(); } - for(SongData song : getScoreDatabaseAccessor().getSongDatas(SongUtils.illegalsongs)) { - MainLoader.putIllegalSong(song.getSha256()); - } - if(illegalSongs.size() > 0) { - JOptionPane.showMessageDialog(null, "This Application detects " + illegalSongs.size() + " illegal BMS songs. \n Remove them, update song database and restart.", "Error", JOptionPane.ERROR_MESSAGE); - System.exit(1); - } - try { MainController main = new MainController(f, config, player, auto, songUpdated); @@ -201,6 +196,23 @@ public static void play(Path f, BMSPlayerMode auto, boolean forceExit, Config co } } + private static void verifyIllegalSongs() { + SongData[] foundIllegalSongs = getScoreDatabaseAccessor().getSongDatas(SongUtils.illegalsongs); + if (foundIllegalSongs.length > 0) { + String paths = Arrays.stream(foundIllegalSongs) + .limit(30) + .map(song -> Paths.get(song.getPath()).getParent().toString()) + .distinct() + .collect(Collectors.joining("\n")); + JOptionPane.showMessageDialog(null, + "This Application detects " + foundIllegalSongs.length + " illegal BMS songs.\nRemove them, update song database and restart.\n\n" + + "Do not use this application to play copyrighted content.\n\n" + paths, + "Error", + JOptionPane.ERROR_MESSAGE); + System.exit(1); + } + } + public static Graphics.DisplayMode[] getAvailableDisplayMode() { return LwjglApplicationConfiguration.getDisplayModes(); } @@ -239,18 +251,6 @@ public static Path getBMSPath() { return bmsPath; } - public static void putIllegalSong(String hash) { - illegalSongs.add(hash); - } - - public static String[] getIllegalSongs() { - return illegalSongs.toArray(new String[illegalSongs.size()]); - } - - public static int getIllegalSongCount() { - return illegalSongs.size(); - } - @Override public void start(javafx.stage.Stage primaryStage) throws Exception { Config config = Config.read(); diff --git a/src/bms/player/beatoraja/select/BarRenderer.java b/src/bms/player/beatoraja/select/BarRenderer.java index 274ce8131..d45479062 100644 --- a/src/bms/player/beatoraja/select/BarRenderer.java +++ b/src/bms/player/beatoraja/select/BarRenderer.java @@ -860,9 +860,7 @@ public boolean updateBar(Bar bar) { boolean showInvisibleCharts = false; boolean isSortable = true; - if (MainLoader.getIllegalSongCount() > 0) { - l.addAll(SongBar.toSongBarArray(select.getSongDatabase().getSongDatas(MainLoader.getIllegalSongs()))); - } else if (bar == null) { + if (bar == null) { if (dir.size > 0) { prevbar = dir.first(); }