package sig; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import java.util.Calendar; import org.json.JSONException; import org.json.JSONObject; import sig.utils.FileUtils; public class UpdateEvent implements ActionListener{ final static int MSGTIMER = 300; final static int AUTOSAVETIMER = 600; int last_authentication_msg = MSGTIMER; int last_autosave = AUTOSAVETIMER; long lasttime = System.currentTimeMillis(); int avgfps = 30; int counter = 0; int windowUpdateCounter=30; @Override public void actionPerformed(ActionEvent ev) { if (ev!=null) { UpdateScrollingText(); UpdateAuthenticationCountdownMessage(); UpdateWindowPosition(); UpdateSubEmoticons(); } } private void UpdateSubEmoticons() { if (!sigIRC.downloadedSubEmotes && sigIRC.subchannelCount==sigIRC.subchannelIds.size()) { Thread downloadThread = new Thread(){ public void run() { JSONObject data = GetSubEmoteJson(); sigIRC.downloadSubEmotes(data); } }; downloadThread.start(); sigIRC.downloadedSubEmotes=true; } } private JSONObject GetSubEmoteJson() { JSONObject subemotes = null; try { File filer = new File(sigIRC.SUBEMOTELISTFILE); if (!filer.exists()) { System.out.println("Local copy of Sub emotes not found. Downloading in background..."); subemotes = FileUtils.readJsonFromUrlWithFilter("https://twitchemotes.com/api_cache/v3/subscriber.json",sigIRC.subchannelIds,sigIRC.SUBEMOTELISTFILE,true); } else { if (sigIRC.lastSubEmoteUpdate == Calendar.getInstance().get(Calendar.DAY_OF_YEAR)) { System.out.println("Using local copy of Sub emote JSON."); subemotes = FileUtils.readJsonFromFileWithFilter(sigIRC.SUBEMOTELISTFILE,sigIRC.subchannelIds); } else { System.out.println("Local copy of Sub emote JSON out-of-date! Re-downloading in background..."); subemotes = FileUtils.readJsonFromFileWithFilter(sigIRC.SUBEMOTELISTFILE,sigIRC.subchannelIds); new Thread(){ public void run() { try { FileUtils.readJsonFromUrlWithFilter("https://twitchemotes.com/api_cache/v3/subscriber.json",sigIRC.subchannelIds,sigIRC.SUBEMOTELISTFILE,true); } catch (JSONException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }.start(); } } } catch (JSONException | IOException e) { e.printStackTrace(); } sigIRC.lastSubEmoteUpdate = Calendar.getInstance().get(Calendar.DAY_OF_YEAR); sigIRC.config.setInteger("lastSubEmote_APIUpdate", sigIRC.lastSubEmoteUpdate); return subemotes; } private void UpdateWindowPosition() { if (windowUpdateCounter--<=0) { if (sigIRC.lastWindowX!=(int)sigIRC.window.getLocationOnScreen().getX() || sigIRC.lastWindowY!=(int)sigIRC.window.getLocationOnScreen().getY()) { sigIRC.lastWindowX = (int)sigIRC.window.getLocationOnScreen().getX(); sigIRC.lastWindowY = (int)sigIRC.window.getLocationOnScreen().getY(); //Trigger Window Update. for (Component c : sigIRC.window.getComponents()) { MyPanel.UpdateComponent(c); } } windowUpdateCounter=30; } } private void UpdateAuthenticationCountdownMessage() { if (sigIRC.downloadsComplete) { if ((!sigIRC.authenticated || sigIRC.testMode) && last_authentication_msg=MSGTIMER) { last_authentication_msg=0; if (!sigIRC.authenticated && !sigIRC.testMode) { sigIRC.panel.addMessage("SYSTEM: Your oauthToken was not successful. Please go to the sigIRC folder and make sure your oauthToken.txt file is correct!!! SwiftRage",!sigIRC.playedoAuthSoundOnce); if (!sigIRC.playedoAuthSoundOnce) { sigIRC.playedoAuthSoundOnce=true; } } else { sigIRC.panel.addMessage("SYSTEM: This is a test message for your testing convenience. mikansBox",!sigIRC.playedoAuthSoundOnce); } } if (last_autosave=AUTOSAVETIMER) { last_autosave=0; sigIRC.windowX = (int)sigIRC.window.getLocationOnScreen().getX(); sigIRC.windowY = (int)sigIRC.window.getLocationOnScreen().getY(); sigIRC.windowWidth = sigIRC.window.getWidth(); sigIRC.windowHeight = sigIRC.window.getHeight(); sigIRC.config.setInteger("windowX", sigIRC.windowX); sigIRC.config.setInteger("windowY", sigIRC.windowY); sigIRC.config.setInteger("windowWidth", sigIRC.windowWidth); sigIRC.config.setInteger("windowHeight", sigIRC.windowHeight); sigIRC.config.saveProperties(); } if (sigIRC.lastPlayedDing>0) { sigIRC.lastPlayedDing--; } updateFPSCounter(); sigIRC.window.setTitle("sigIRCv2 - "+(avgfps)+" FPS"); lasttime=System.currentTimeMillis(); } } public void updateFPSCounter() { if (System.currentTimeMillis()-lasttime>1000/avgfps) { //System.out.println("WARNING! Last update took "+(System.currentTimeMillis()-lasttime)+"ms! Lagging?"); if (counter<30) { counter++; } else { counter=0; avgfps--; } } else { if (counter>-30) { counter--; } else { counter=0; avgfps++; } } } public void UpdateScrollingText() { for (int i=0;i