From a41ff099fcc1dbf8356f995ee2532050003853a9 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Fri, 11 Sep 2020 11:33:56 +0900 Subject: [PATCH] Include initial Display Manager form to handle creating Displays. --- Calibrate DivaBot.bat | 2 + DivaBot/addDisplay.png | Bin 0 -> 10060 bytes DivaBot/backgroundCol.png | Bin 0 -> 11061 bytes DivaBot/button.xcf | Bin 0 -> 22760 bytes DivaBot/config.txt | 3 + DivaBot/cross.png | Bin 0 -> 8634 bytes DivaBot/src/sig/ColorPanel.java | 35 +++ DivaBot/src/sig/DisplayManager.java | 187 +++++++++++++++ DivaBot/src/sig/DrawCanvas.java | 335 +++++++++++++++++---------- DivaBot/src/sig/MyRobot.java | 58 +++-- DivaBot/src/sig/utils/FileUtils.java | 8 +- Run DivaBot.bat | 2 + 12 files changed, 492 insertions(+), 138 deletions(-) create mode 100644 Calibrate DivaBot.bat create mode 100644 DivaBot/addDisplay.png create mode 100644 DivaBot/backgroundCol.png create mode 100644 DivaBot/button.xcf create mode 100644 DivaBot/config.txt create mode 100644 DivaBot/cross.png create mode 100644 DivaBot/src/sig/ColorPanel.java create mode 100644 DivaBot/src/sig/DisplayManager.java create mode 100644 Run DivaBot.bat diff --git a/Calibrate DivaBot.bat b/Calibrate DivaBot.bat new file mode 100644 index 0000000..5169359 --- /dev/null +++ b/Calibrate DivaBot.bat @@ -0,0 +1,2 @@ +cd DivaBot +java -jar "DivaBot.jar" calibrate \ No newline at end of file diff --git a/DivaBot/addDisplay.png b/DivaBot/addDisplay.png new file mode 100644 index 0000000000000000000000000000000000000000..16e402fd087bc677088a00ab6ff3d3b824fec065 GIT binary patch literal 10060 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 literal 0 HcmV?d00001 diff --git a/DivaBot/button.xcf b/DivaBot/button.xcf new file mode 100644 index 0000000000000000000000000000000000000000..e4d6ba8b50d3c592fc8cfc725bc35a2af0624b29 GIT binary patch literal 22760 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 J+#BWj{{n5{)inSB literal 0 HcmV?d00001 diff --git a/DivaBot/config.txt b/DivaBot/config.txt new file mode 100644 index 0000000..c404a95 --- /dev/null +++ b/DivaBot/config.txt @@ -0,0 +1,3 @@ +WIDTH 546 +HEIGHT 384 +BACKGROUND -10092442 diff --git a/DivaBot/cross.png b/DivaBot/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..147f637f1ce5601c7cf6de0e7c84a0c1a6c06529 GIT binary patch literal 8634 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 a_e@~l2elT1l|8^4e2}_|j&iM{RmA@;-yo#` literal 0 HcmV?d00001 diff --git a/DivaBot/src/sig/ColorPanel.java b/DivaBot/src/sig/ColorPanel.java new file mode 100644 index 0000000..8258154 --- /dev/null +++ b/DivaBot/src/sig/ColorPanel.java @@ -0,0 +1,35 @@ +package sig; + +import java.awt.Color; +import java.awt.Dimension; + +import javax.swing.JColorChooser; +import javax.swing.JPanel; + +public class ColorPanel extends JPanel{ + public ColorPanel() { + } + + public Color getBackgroundColor() { + if (DrawCanvas.configData.containsKey("BACKGROUND")) { + try { + return JColorChooser.showDialog(this, "Color Picker", + new Color( + Integer.parseInt(DrawCanvas.configData.get("BACKGROUND")))); + } catch (NumberFormatException e) { + return JColorChooser.showDialog(this, "Color Picker", Color.MAGENTA); + } + } else { + System.out.println("Running"); + return JColorChooser.showDialog(this, "Color Picker", Color.MAGENTA); + } + } + + public Color getColor(Color color) { + return JColorChooser.showDialog(this, "Color Picker", color); + } + + public Dimension getPreferredSize() { + return new Dimension(640,480); + } +} diff --git a/DivaBot/src/sig/DisplayManager.java b/DivaBot/src/sig/DisplayManager.java new file mode 100644 index 0000000..dc9e7ec --- /dev/null +++ b/DivaBot/src/sig/DisplayManager.java @@ -0,0 +1,187 @@ +package sig; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GraphicsEnvironment; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.ListCellRenderer; + +public class DisplayManager extends JPanel implements MouseListener{ + JFrame f = new JFrame(); + GridBagConstraints g = new GridBagConstraints(); + Font[] fontList = null; + ColorButton colorButton; + ColorButton colorButton2; + JTextField fontSizeInput; + + DisplayManager() { + + List tempFontList = new ArrayList(Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts())); + + for (int i=0;i configData = new HashMap(); DrawCanvas() throws FontFormatException, IOException { - Font originalProgramFont = Font.createFont(Font.TRUETYPE_FONT,new File("Alata-Regular.ttf")); - programFont = originalProgramFont.deriveFont(36f); - programFontSmall = originalProgramFont.deriveFont(24f); - try { - bar = ImageUtils.toCompatibleImage(ImageIO.read(new File("divabar.png"))); - overallbar = ImageUtils.toCompatibleImage(ImageIO.read(new File("overlaybar.png"))); - exextreme = ImageUtils.toCompatibleImage(ImageIO.read(new File("exex.png"))); - extreme = ImageUtils.toCompatibleImage(ImageIO.read(new File("ex.png"))); - hard = ImageUtils.toCompatibleImage(ImageIO.read(new File("hd.png"))); - panel = ImageUtils.toCompatibleImage(ImageIO.read(new File("panel.png"))); - songpanel = ImageUtils.toCompatibleImage(ImageIO.read(new File("songpanel.png"))); - paneloverlay = ImageUtils.toCompatibleImage(ImageIO.read(new File("paneloverlay.png"))); - songpaneloverlay = ImageUtils.toCompatibleImage(ImageIO.read(new File("songpanel_overlay.png"))); - - - Thread t = new Thread() { - public void run() { - while (true) { - displayTimer++; - MyRobot.p.repaint(0, 0, 1400, 1000); - try { - Thread.sleep(10000); - } catch (InterruptedException e) { - e.printStackTrace(); - } + loadConfig(); + addConfigButton = ImageIO.read(new File("addDisplay.png")); + backgroundColorButton = ImageIO.read(new File("backgroundCol.png")); + Thread t = new Thread() { + public void run() { + while (true) { + displayTimer++; + MyRobot.p.repaint(0, 0, MyRobot.p.getWidth(),MyRobot.p.getHeight()); + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + e.printStackTrace(); } } - }; - t.start(); - } catch (IOException e) { - e.printStackTrace(); - } + } + }; + t.start(); } public void pullData(final String songname,final String difficulty) { @@ -113,7 +106,7 @@ public class DrawCanvas extends JPanel implements KeyListener{ passes=0; fcCount=0; artist=""; - this.repaint(0,0,1400,1000); + this.repaint(0,0,this.getWidth(),this.getHeight()); if (t!=null && t.isAlive()) { t.stop(); } @@ -160,7 +153,7 @@ public class DrawCanvas extends JPanel implements KeyListener{ scrolling=false; } scrollX = 0; - MyRobot.p.repaint(0,0,1400,1000); + MyRobot.p.repaint(0,0,MyRobot.p.getWidth(),MyRobot.p.getHeight()); } } } catch (JSONException | IOException e) { @@ -170,7 +163,38 @@ public class DrawCanvas extends JPanel implements KeyListener{ }; t.start(); } + + public static void saveConfig() { + String[] data = new String[configData.size()]; + int i = 0; + for (String s : configData.keySet()) { + data[i++]=s+"\t"+configData.get(s).replaceAll("\t", ""); + } + FileUtils.writetoFile(data, "config.txt", false); + } + + public static void loadConfig() throws IOException { + String[] data = FileUtils.readFromFile("config.txt"); + for (int i=0;i0)?romanizedname:englishname) + " - " + artist; - Rectangle2D bounds = TextUtils.calculateStringBoundsFont(songDisplay, programFont); - if (bounds.getWidth()>675) { - DrawUtils.drawOutlineText(g2, programFontSmall, 8, 42, 1, Color.WHITE, new Color(0,0,0,64), songDisplay); - } else { - DrawUtils.drawOutlineText(g2, programFont, 8, 42, 1, Color.WHITE, new Color(0,0,0,64), songDisplay); - } - if ((bestPlayTime>System.currentTimeMillis()-10000)) { - DrawUtils.drawOutlineText(g2, programFont, 8, 935+42, 1, new Color(220,220,255,(int)Math.min(((System.currentTimeMillis()-bestPlayTime))/5,255)), new Color(0,0,0,64),"New Record!"); - } else { - DrawUtils.drawOutlineText(g2, programFontSmall, 8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),((bestPlay!=null)?bestPlay.display():"")); - } - if ((ratingTime>System.currentTimeMillis()-10000)) { - DrawUtils.drawOutlineText(g2, programFontSmall, 484+8, 935+42, 1, new Color(220,220,255,(int)Math.min(((System.currentTimeMillis()-ratingTime))/5,255)), new Color(0,0,0,64),"Rating up! "+lastRating+" -> "+overallrating); - } else { - DrawUtils.drawOutlineText(g2, programFont, 484+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),Integer.toString(overallrating)); - } - if (displayTimer%3==0) { - DrawUtils.drawOutlineText(g2, programFont, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),difficultyRating + " - " + fullNameDifficulty()); - } else - if (displayTimer%3==1) { - if (plays>0) { - DrawUtils.drawOutlineText(g2, programFontSmall, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),""+(passes)+"/"+(plays)+" play"+((plays!=1)?"s":"")+" "+"("+((int)(Math.floor(((float)passes)/plays*100)))+"% pass rate)"); - } else { - DrawUtils.drawOutlineText(g2, programFont, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),"No plays"); - } - } else { - if (fcCount>0) { - DrawUtils.drawOutlineText(g2, programFont, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),fcCount +" FC"+(fcCount==1?"":"s")+" "+((int)(Math.floor(((float)fcCount)/plays*100)))+"% FC rate"); - } else { - DrawUtils.drawOutlineText(g2, programFont, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),difficultyRating + " - " + fullNameDifficulty()); - } - } - - /* - if (ratingTime>System.currentTimeMillis()-10000) { - DrawUtils.drawOutlineText(g, programFont, 32, 36, 1, new Color(220,220,255,(int)Math.min(((System.currentTimeMillis()-ratingTime))/5,255)), new Color(0,0,0,64), "Rating up! "+lastRating+" -> "+overallrating); - } else { - String text = songname+" / "+((romanizedname.length()>0)?romanizedname:englishname)+" "+(artist.length()>0?"by "+artist:"")+" "+((plays>0)?("Plays - "+(passes)+"/"+(plays)):"")+" "+((plays!=0)?"("+((int)(Math.floor(((float)passes)/plays*100)))+"% pass rate"+((fcCount>0)?" - "+fcCount+" FC"+(fcCount==1?"":"s")+" "+((int)(Math.floor(((float)fcCount)/plays*100)))+"% FC rate":"")+")":"No plays")+" "+((bestPlay!=null)?"Best Play - "+bestPlay.display():"")+" Overall Rating: "+overallrating; - Rectangle2D bounds = TextUtils.calculateStringBoundsFont(text, programFont); - if (scrollX<-bounds.getWidth()-100) { - scrollX=0; - } - DrawUtils.drawOutlineText(g2, programFont, 32+scrollX, 36, 1, Color.WHITE, new Color(0,0,0,64), text); - if (scrolling) { - DrawUtils.drawOutlineText(g2, programFont, 32+scrollX+(int)bounds.getWidth()+100, 36, 1, Color.WHITE, new Color(0,0,0,64), text); - } - }*/ - - - /*switch (difficulty) { - case "H":{ - g2.drawImage(hard,0,0,20,51,null); - }break; - case "EX":{ - g2.drawImage(extreme,0,0,20,51,null); - }break; - case "EXEX":{ - g2.drawImage(exextreme,0,0,20,51,null); - }break; - }*/ - //} - //as.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD); - //g2.drawString(songname, 24, 32); - //g2.drawImage(overallbar, 1349, 0,null); - g2.drawImage(songpaneloverlay, 0,0,null); - g2.drawImage(paneloverlay, 0,935,null); - g2.drawImage(paneloverlay, 484,935,null); - g2.drawImage(paneloverlay, 968,935,null); - //System.out.println(System.currentTimeMillis()-startTime+"ms"); +// String songDisplay = ((romanizedname.length()>0)?romanizedname:englishname) + " - " + artist; +// Rectangle2D bounds = TextUtils.calculateStringBoundsFont(songDisplay, programFont); +// if (bounds.getWidth()>675) { +// DrawUtils.drawOutlineText(g2, programFontSmall, 8, 42, 1, Color.WHITE, new Color(0,0,0,64), songDisplay); +// } else { +// DrawUtils.drawOutlineText(g2, programFont, 8, 42, 1, Color.WHITE, new Color(0,0,0,64), songDisplay); +// } +// +// if ((bestPlayTime>System.currentTimeMillis()-10000)) { +// DrawUtils.drawOutlineText(g2, programFont, 8, 935+42, 1, new Color(220,220,255,(int)Math.min(((System.currentTimeMillis()-bestPlayTime))/5,255)), new Color(0,0,0,64),"New Record!"); +// } else { +// DrawUtils.drawOutlineText(g2, programFontSmall, 8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),((bestPlay!=null)?bestPlay.display():"")); +// } +// if ((ratingTime>System.currentTimeMillis()-10000)) { +// DrawUtils.drawOutlineText(g2, programFontSmall, 484+8, 935+42, 1, new Color(220,220,255,(int)Math.min(((System.currentTimeMillis()-ratingTime))/5,255)), new Color(0,0,0,64),"Rating up! "+lastRating+" -> "+overallrating); +// } else { +// DrawUtils.drawOutlineText(g2, programFont, 484+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),Integer.toString(overallrating)); +// } +// if (displayTimer%3==0) { +// DrawUtils.drawOutlineText(g2, programFont, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),difficultyRating + " - " + fullNameDifficulty()); +// } else +// if (displayTimer%3==1) { +// if (plays>0) { +// DrawUtils.drawOutlineText(g2, programFontSmall, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),""+(passes)+"/"+(plays)+" play"+((plays!=1)?"s":"")+" "+"("+((int)(Math.floor(((float)passes)/plays*100)))+"% pass rate)"); +// } else { +// DrawUtils.drawOutlineText(g2, programFont, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),"No plays"); +// } +// } else { +// if (fcCount>0) { +// DrawUtils.drawOutlineText(g2, programFont, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),fcCount +" FC"+(fcCount==1?"":"s")+" "+((int)(Math.floor(((float)fcCount)/plays*100)))+"% FC rate"); +// } else { +// DrawUtils.drawOutlineText(g2, programFont, 968+8, 935+42, 1, Color.WHITE, new Color(0,0,0,64),difficultyRating + " - " + fullNameDifficulty()); +// } +// } } private String fullNameDifficulty() { @@ -292,7 +275,6 @@ public class DrawCanvas extends JPanel implements KeyListener{ @Override public void keyPressed(KeyEvent e) { - System.out.println(e.getKeyChar()); } @Override @@ -300,4 +282,117 @@ public class DrawCanvas extends JPanel implements KeyListener{ // TODO Auto-generated method stub } + + @Override + public void componentResized(ComponentEvent e) { + configData.put("WIDTH",Integer.toString(this.getWidth()+MyRobot.FRAME.getInsets().left+MyRobot.FRAME.getInsets().right)); + configData.put("HEIGHT",Integer.toString(this.getHeight()+MyRobot.FRAME.getInsets().top+MyRobot.FRAME.getInsets().bottom)); + } + + @Override + public void componentMoved(ComponentEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void componentShown(ComponentEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void componentHidden(ComponentEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowOpened(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowClosing(WindowEvent e) { + saveConfig(); + } + + @Override + public void windowClosed(WindowEvent e) { + } + + @Override + public void windowIconified(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowDeiconified(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowActivated(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void windowDeactivated(WindowEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseClicked(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mousePressed(MouseEvent e) { + Point cursor = e.getPoint(); + cursor.translate(-MyRobot.FRAME.getInsets().left,-MyRobot.FRAME.getInsets().top); + System.out.println(cursor+"/"+addConfigButton.getHeight()); + if (cursor.x>=getWidth()-addConfigButton.getWidth()&& + cursor.x<=getWidth()&& + cursor.y>=0&& + cursor.y<=addConfigButton.getHeight()) { + MyRobot.FRAME.setCursor(new Cursor(Cursor.HAND_CURSOR)); + } else + if (cursor.x>=getWidth()-addConfigButton.getWidth()&& + cursor.x<=getWidth()&& + cursor.y>=addConfigButton.getHeight()+1&& + cursor.y<=addConfigButton.getHeight()+1+addConfigButton.getHeight()) { + Color c = MyRobot.CP.getBackgroundColor(); + if (c!=null) { + configData.put("BACKGROUND",Integer.toString(c.getRGB())); + applyConfig(); + } + } else + { + MyRobot.FRAME.setCursor(Cursor.getDefaultCursor()); + } + } + + @Override + public void mouseReleased(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseEntered(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseExited(MouseEvent e) { + // TODO Auto-generated method stub + + } } diff --git a/DivaBot/src/sig/MyRobot.java b/DivaBot/src/sig/MyRobot.java index 9fa5ac2..7936634 100644 --- a/DivaBot/src/sig/MyRobot.java +++ b/DivaBot/src/sig/MyRobot.java @@ -89,6 +89,7 @@ public class MyRobot{ static CustomRobot MYROBOT; Color SCREEN[][]; static SongData SONGS[]; + public static JFrame FRAME; /*static String SONGNAMES[] = new String[] {"Yellow","The secret garden","Tell Your World","愛言葉","Weekender Girl","歌に形はないけれど","えれくとりっく・えんじぇぅ","神曲","カンタレラ","巨大少女","クローバー♣クラブ","恋スルVOC@LOID","桜ノ雨","39","深海シティアンダーグラウンド","深海少女","積乱雲グラフィティ","千年の独奏歌","ダブルラリアット","ハジメテノオト","初めての恋が終わる時","packaged","Palette","FREELY TOMORROW","from Y to Y","みくみくにしてあげる♪","メルト","モノクロ∞ブルースカイ","ゆめゆめ","16 -out of the gravity-","ACUTE","インタビュア","LOL -lots of laugh-","Glory 3usi9","soundless voice","ジェミニ","白い雪のプリンセスは","スキキライ","タイムマシン","Dear","DECORATOR","トリコロール・エア・ライン","Nostalogic","Hand in Hand","Fire◎Flower","ブラック★ロックシューター","メテオ","ワールドイズマイン","アマツキツネ","erase or zero","エレクトロサチュレイタ","on the rocks","からくりピエロ","カラフル×メロディ","Catch the Wave","キャットフード","サマーアイドル","shake it!","Just Be Friends","スイートマジック","SPiCa -39's Giving Day Edition-","番凩","テレカクシ思春期","天樂","どういうことなの!?","東京テディベア","どりーみんチュチュ","トリノコシティ","ネトゲ廃人シュプレヒコール","No Logic","ハイハハイニ","はじめまして地球人さん","*ハロー、プラネット。 (I.M.PLSE-EDIT)","Hello, Worker","忘却心中","magnet","右肩の蝶","結ンデ開イテ羅刹ト骸","メランコリック","リモコン","ルカルカ★ナイトフィーバー","炉心融解","WORLD'S END UMBRELLA","アカツキアライヴァル","アゲアゲアゲイン","1925","え?あぁ、そう。","エイリアンエイリアン","ODDS&ENDS","君の体温","こっち向いて Baby","壊セ壊セ","39みゅーじっく!","サンドリヨン","SING&SMILE","スノーマン","DYE","なりすましゲンガー","ヒバナ","ヒビカセ","ブラックゴールド","ミラクルペイント","指切り","ありふれたせかいせいふく","アンハッピーリフレイン","大江戸ジュリアナイト","ゴーストルール","こちら、幸福安心委員会です。","孤独の果て -extend edition-","ジターバグ","Sweet Devil","砂の惑星","テオ","初音ミクの消失 -DEAD END-","秘密警察","妄想スケッチ","リンちゃんなう!","ローリンガール","ロキ","ロミオとシンデレラ","エンヴィキャットウォーク","骸骨楽団とリリア","サイハテ","ジグソーパズル","千本桜","ピアノ×フォルテ×スキャンダル","Blackjack","ぽっぴっぽー","裏表ラバーズ","Sadistic.Music∞Factory","デンパラダイム","二次元ドリームフィーバー","ネガポジ*コンティニューズ","初音ミクの激唱","ワールズエンド・ダンスホール","ココロ","システマティック・ラヴ","Knife","二息歩行","PIANOGIRL","夢喰い白黒バク","ブレス・ユア・ブレス","恋は戦争","あなたの歌姫","Starduster","StargazeR","リンリンシグナル","Rosary Pale","多重未来のカルテット~QUARTET THEME~","LIKE THE WIND","AFTER BURNER", "ストロボナイツ","VOiCE","恋色病棟","ねこみみスイッチ","パラジクロロベンゼン","カラフル×セクシィ","劣等上等","Star Story","パズル","キップル・インダストリー","夢の続き","MEGANE","Change me"};*/ static SongInfo SONGNAMES[] = new SongInfo[] {}; @@ -151,6 +152,9 @@ public class MyRobot{ static boolean repaintCalled = false; public static Overlay OVERLAY; public static boolean CALIBRATION_MODE=false; + public static boolean DEBUG_MODE=false; + public static ColorPanel CP; + public static DisplayManager DM; public static ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); @@ -160,6 +164,9 @@ public class MyRobot{ if (args[0].equalsIgnoreCase("calibrate")) { CALIBRATION_MODE=true; } + if (args[0].equalsIgnoreCase("debug")) { + DEBUG_MODE=true; + } } JSONObject obj = FileUtils.readJsonFromUrl("http://www.projectdivar.com/songs"); SONGNAMES = new SongInfo[JSONObject.getNames(obj).length]; @@ -500,6 +507,7 @@ public class MyRobot{ void go() throws FontFormatException, IOException { initialize(); + DrawCanvas.loadConfig(); //gotoxy(100, 100); SCREEN = new Color[SCREEN_X][SCREEN_Y]; long startTime = System.currentTimeMillis(); @@ -507,8 +515,8 @@ public class MyRobot{ SongData.loadSongsFromFile(); System.setProperty("awt.useSystemAAFontSettings","on"); - JFrame f = new JFrame(); - f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + FRAME = new JFrame(); + FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); p = new DrawCanvas(); p.difficulty="EXEX"; p.songname = "Dear"; @@ -574,26 +582,44 @@ public class MyRobot{ }); if (CALIBRATION_MODE) { JFrame.setDefaultLookAndFeelDecorated(true); - f.setUndecorated(true); + FRAME.setUndecorated(true); OVERLAY = new Overlay(); - OVERLAY.setBounds(f.getGraphicsConfiguration().getBounds()); + OVERLAY.setBounds(FRAME.getGraphicsConfiguration().getBounds()); OVERLAY.setOpaque(false); - f.addMouseListener(OVERLAY); - f.addMouseMotionListener(OVERLAY); - screenSize=new Dimension(f.getGraphicsConfiguration().getBounds().width,f.getGraphicsConfiguration().getBounds().height); - f.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); + FRAME.addMouseListener(OVERLAY); + FRAME.addMouseMotionListener(OVERLAY); + screenSize=new Dimension(FRAME.getGraphicsConfiguration().getBounds().width,FRAME.getGraphicsConfiguration().getBounds().height); + FRAME.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); //f.add(p); //System.out.println(f.getGraphicsConfiguration().getBounds().width+"/"+f.getGraphicsConfiguration().getBounds().height); - f.setSize(f.getGraphicsConfiguration().getBounds().width,f.getGraphicsConfiguration().getBounds().height); - f.add(OVERLAY); - f.setBackground(new Color(0,0,0,0)); + FRAME.setSize(FRAME.getGraphicsConfiguration().getBounds().width,FRAME.getGraphicsConfiguration().getBounds().height); + FRAME.add(OVERLAY); + FRAME.setBackground(new Color(0,0,0,0)); } else { - RunTests(); - f.setSize(1362, 1036); - f.add(p); + if (DEBUG_MODE) { + RunTests(); + } + FRAME.addComponentListener(p); + FRAME.addWindowListener(p); + FRAME.addMouseListener(p); + if (DrawCanvas.configData.containsKey("WIDTH")&&DrawCanvas.configData.containsKey("HEIGHT")) { + try { + FRAME.setSize( + Integer.parseInt(DrawCanvas.configData.get("WIDTH")), + Integer.parseInt(DrawCanvas.configData.get("HEIGHT"))); + } catch (NumberFormatException e) { + FRAME.setSize(640, 480); + } + } else { + FRAME.setSize(640, 480); + } + CP = new ColorPanel(); + DM = new DisplayManager(); + FRAME.add(p); } - f.setVisible(true); - f.setTitle("DivaBot"); + FRAME.setIconImage(ImageIO.read(new File("cross.png"))); + FRAME.setVisible(true); + FRAME.setTitle("DivaBot"); title = new JTextField(); title.setSize(200,100); title.setText((currentSong>=SONGNAMES.length)?"DONE!":SONGNAMES[currentSong].name); diff --git a/DivaBot/src/sig/utils/FileUtils.java b/DivaBot/src/sig/utils/FileUtils.java index 994329a..bce5562 100644 --- a/DivaBot/src/sig/utils/FileUtils.java +++ b/DivaBot/src/sig/utils/FileUtils.java @@ -282,6 +282,10 @@ public class FileUtils { } public static void writetoFile(String[] data, String filename) { + writetoFile(data,filename,true); + } + + public static void writetoFile(String[] data, String filename, boolean append) { File file = new File(filename); try { @@ -289,10 +293,10 @@ public class FileUtils { file.createNewFile(); } - OutputStream out = new FileOutputStream(file,true); + OutputStream out = new FileOutputStream(file,append); Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8); PrintWriter pw = new PrintWriter(writer); - pw.print('\uFEFF'); + //pw.print('\uFEFF'); for (String s : data) { pw.println(s); } diff --git a/Run DivaBot.bat b/Run DivaBot.bat new file mode 100644 index 0000000..ea930df --- /dev/null +++ b/Run DivaBot.bat @@ -0,0 +1,2 @@ +cd DivaBot +java -jar "DivaBot.jar" \ No newline at end of file