Skip to content

Commit

Permalink
Music Select : show status of song/table updater, refactor, fix previ…
Browse files Browse the repository at this point in the history
…ous merge
  • Loading branch information
exch-bms2 committed Sep 2, 2017
1 parent cbdcde8 commit 6d974c9
Show file tree
Hide file tree
Showing 22 changed files with 858 additions and 703 deletions.
80 changes: 79 additions & 1 deletion src/bms/player/beatoraja/MainController.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.logging.Logger;

import bms.player.beatoraja.play.TargetProperty;
import bms.player.beatoraja.select.bar.TableBar;
import bms.player.beatoraja.skin.SkinLoader;
import bms.player.beatoraja.skin.SkinProperty;
import com.badlogic.gdx.Graphics;
Expand Down Expand Up @@ -338,7 +339,12 @@ public void render() {
systemfont.draw(sprite, "Screen shot saved : " + screenshot.path, 100,
config.getResolution().height - 2);
sprite.end();
}
} else if(updateSong != null && updateSong.isAlive()) {
sprite.begin();
systemfont.setColor(0,1,1,0.5f + (System.currentTimeMillis() % 500) / 1000.0f);
systemfont.draw(sprite, updateSong.message, 100, config.getResolution().height - 2);
sprite.end();
}

final long time = System.currentTimeMillis();
if(time > prevtime) {
Expand Down Expand Up @@ -530,4 +536,76 @@ public void run() {
savetime = System.currentTimeMillis();
}
}

private UpdateThread updateSong;

public void updateSong(String path) {
if (updateSong == null || !updateSong.isAlive()) {
updateSong = new SongUpdateThread(path);
updateSong.start();
} else {
Logger.getGlobal().warning("楽曲更新中のため、更新要求は取り消されました");
}
}

public void updateTable(TableBar reader) {
if (updateSong == null || !updateSong.isAlive()) {
updateSong = new TableUpdateThread(reader);
updateSong.start();
} else {
Logger.getGlobal().warning("楽曲更新中のため、更新要求は取り消されました");
}
}

abstract class UpdateThread extends Thread {

private String message;

public UpdateThread(String message) {
this.message = message;
}
}

/**
* 楽曲データベース更新用スレッド
*
* @author exch
*/
class SongUpdateThread extends UpdateThread {

private final String path;

public SongUpdateThread(String path) {
super("updating folder : " + (path == null ? "ALL" : path));
this.path = path;
}

public void run() {
getSongDatabase().updateSongDatas(path, false, getInfoDatabase());
}
}

/**
* 難易度表更新用スレッド
*
* @author exch
*/
class TableUpdateThread extends UpdateThread {

private final TableBar accessor;

public TableUpdateThread(TableBar bar) {
super("updating table : " + bar.getReader().name);
accessor = bar;
}

public void run() {
TableData td = accessor.getReader().read();
if (td != null) {
new TableDataAccessor().write(td);
accessor.setTableData(td);
}
}
}

}
15 changes: 11 additions & 4 deletions src/bms/player/beatoraja/TableDataAccessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -147,16 +147,23 @@ public TableData read(String name) {
return td;
}

public interface TableReader {
public static abstract class TableReader {

public TableData read();
public final String name;

public TableReader(String name) {
this.name = name;
}

public abstract TableData read();
}

public static class DifficultyTableReader implements TableReader {
public static class DifficultyTableReader extends TableReader {

private final String url;
private String url;

public DifficultyTableReader(String url) {
super(url);
this.url = url;
}

Expand Down
8 changes: 6 additions & 2 deletions src/bms/player/beatoraja/external/BMSSearchAccessor.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@
import bms.player.beatoraja.*;
import bms.player.beatoraja.TableData.TableFolder;

public class BMSSearchAccessor implements TableDataAccessor.TableReader {

public class BMSSearchAccessor extends TableDataAccessor.TableReader {

public BMSSearchAccessor() {
super("BMS Search");
}

public TableData read() {
TableData td = null;
try (InputStream input = new URL("http://qstol.info/bmssearch/api/services/?method=bms.new").openStream()) {
Expand Down
Loading

3 comments on commit 6d974c9

@parataxia
Copy link
Contributor

@parataxia parataxia commented on 6d974c9 Sep 2, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this compilation fails on my Arch Linux desktop, using "openjdk version 1.8.0_144" and 64-bit JDK/JVM. Here's the log of the diagnostic messages:

beatoraja-master $ ant
Buildfile: /home/adam/beatoraja-master/build.xml

clean:
   [delete] Deleting directory /home/adam/beatoraja-master/build
    [mkdir] Created dir: /home/adam/beatoraja-master/build

compile:
    [javac] /home/adam/beatoraja-master/build.xml:17: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 141 source files to /home/adam/beatoraja-master/build
    [javac] /home/adam/beatoraja-master/src/bms/player/beatoraja/select/MusicSelector.java:833: error: incompatible types: bms.player.beatoraja.select.TableBar cannot be converted to bms.player.beatoraja.select.bar.TableBar
    [javac] 			getMainController().updateTable((TableBar) selected);
    [javac] 			                                ^
    [javac] /home/adam/beatoraja-master/src/bms/player/beatoraja/select/BarRenderer.java:570: error: no suitable method found for sort(bms.player.beatoraja.select.Bar[],BarSorter)
    [javac] 			Arrays.sort(currentsongs, BarSorter.values()[select.getSort()]);
    [javac] 			      ^
    [javac]     method Arrays.<T#1>sort(T#1[],Comparator<? super T#1>) is not applicable
    [javac]       (inferred type does not conform to upper bound(s)
    [javac]         inferred: bms.player.beatoraja.select.Bar
    [javac]         upper bound(s): bms.player.beatoraja.select.bar.Bar,Object)
    [javac]     method Arrays.<T#2>sort(T#2[],int,int,Comparator<? super T#2>) is not applicable
    [javac]       (cannot infer type-variable(s) T#2
    [javac]         (actual and formal argument lists differ in length))
    [javac]   where T#1,T#2 are type-variables:
    [javac]     T#1 extends Object declared in method <T#1>sort(T#1[],Comparator<? super T#1>)
    [javac]     T#2 extends Object declared in method <T#2>sort(T#2[],int,int,Comparator<? super T#2>)
    [javac] /home/adam/beatoraja-master/src/bms/player/beatoraja/select/SearchTextField.java:63: error: incompatible types: bms.player.beatoraja.select.bar.SearchWordBar cannot be converted to bms.player.beatoraja.select.SearchWordBar
    [javac] 							selector.getBarRender().addSearch(swb);
    [javac] 							                                  ^
    [javac] /home/adam/beatoraja-master/src/bms/player/beatoraja/select/SkinDistributionGraph.java:61: error: incompatible types: Bar cannot be converted to DirectoryBar
    [javac]         if (r != null && state.getMainController().getPlayerResource().getConfig().isFolderlamp() && ((MusicSelector)state).getSelectedBar() instanceof DirectoryBar) {
    [javac]                                                                                                                                           ^
    [javac] /home/adam/beatoraja-master/src/bms/player/beatoraja/select/SkinDistributionGraph.java:62: error: incompatible types: Bar cannot be converted to DirectoryBar
    [javac]             DirectoryBar current = (DirectoryBar)((MusicSelector)state).getSelectedBar();
    [javac]                                                                                       ^
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.
    [javac] Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
    [javac] 5 errors

BUILD FAILED

Seems like it's failing on upcasting or downcasting?

@exch-bms2
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete bms.player.beatoraja.select.Bar. Bar.java is moved to package bms.player.beatoraja.select.bar.

@parataxia
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, sorry I don't have a github repo set up locally, downloading directly from web. need to get on that so it updates properly when code is refactored.

Please sign in to comment.