Add "substitute" images for images that cannot be found/downloaded.

Offline compatibility mode in progress.
beta
sigonasr2 7 years ago
parent 3d60722f68
commit 18f80ff87e
  1. 24
      sigIRCv2/.classpath
  2. 2
      sigIRCv2/sigIRCv2.bat
  3. BIN
      sigIRCv2/sigIRCv2.jar
  4. 11
      sigIRCv2/src/sig/Module.java
  5. 12
      sigIRCv2/src/sig/modules/Controller/ControlConfigurationWindow.java
  6. 9
      sigIRCv2/src/sig/modules/ControllerModule.java
  7. 8
      sigIRCv2/src/sig/modules/RabiRaceModule.java
  8. 81
      sigIRCv2/src/sig/modules/RabiRibiModule.java
  9. 27
      sigIRCv2/src/sig/modules/TouhouMotherModule.java
  10. 13
      sigIRCv2/src/sig/modules/Twitch/FancyNumber.java
  11. 42
      sigIRCv2/src/sig/modules/TwitchModule.java
  12. 37
      sigIRCv2/src/sig/sigIRC.java

@ -3,17 +3,17 @@
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="lib"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/commons-io-2.5.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/jna-4.5.0.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/jna-platform-4.5.0.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/lwjgl.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/lwjgl-glfw.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/lwjgl-glfw-natives-linux.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/lwjgl-glfw-natives-macos.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/lwjgl-glfw-natives-windows.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/lwjgl-natives-linux.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/lwjgl-natives-macos.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/lwjgl-natives-windows.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/Downloads/sigIRCv2-master/sigIRCv2/lib/twitch-api-wrapper-0.3-jar-with-dependencies.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/commons-io-2.5.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/jna-4.5.0.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/jna-platform-4.5.0.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-glfw.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-glfw-natives-linux.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-glfw-natives-macos.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-glfw-natives-windows.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-natives-linux.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-natives-macos.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/lwjgl-natives-windows.jar"/>
<classpathentry kind="lib" path="C:/Users/sigon/git/sigIRCv2/sigIRCv2/lib/twitch-api-wrapper-0.3-jar-with-dependencies.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

@ -1,2 +1,2 @@
cd "C:\Users\Joshua Sigona\git\sigIRCv2\"
java -jar sigIRCv2.jar > log
java -jar sigIRCv2.jar

Binary file not shown.

@ -2,6 +2,7 @@ package sig;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
@ -21,8 +22,8 @@ public class Module {
public Rectangle2D position;
protected boolean enabled;
protected String name;
public static BufferedImage IMG_DRAGBAR;
public static BufferedImage MSG_SEPARATOR;
public static Image IMG_DRAGBAR;
public static Image MSG_SEPARATOR;
public static boolean inDragZone=false;
final protected int titleHeight;
@ -62,7 +63,7 @@ public class Module {
public boolean inDragBounds(int x, int y) {
return x>=position.getX() && x<=position.getX()+position.getWidth() &&
y>=(int)position.getY()-Module.IMG_DRAGBAR.getHeight() &&
y>=(int)position.getY()-Module.IMG_DRAGBAR.getHeight(sigIRC.panel) &&
y<=(int)position.getY();
}
@ -144,9 +145,9 @@ public class Module {
if (!sigIRC.overlayMode) {
g.drawImage(Module.IMG_DRAGBAR,
(int)position.getX()+2,
(int)position.getY()-Module.IMG_DRAGBAR.getHeight(),
(int)position.getY()-Module.IMG_DRAGBAR.getHeight(sigIRC.panel),
(int)position.getWidth()-4,
Module.IMG_DRAGBAR.getHeight(),
Module.IMG_DRAGBAR.getHeight(sigIRC.panel),
sigIRC.panel);
DrawUtils.drawTextFont(g, sigIRC.panel.smallFont, (int)position.getX(), (int)position.getY()-titleHeight/2+4, Color.BLACK, this.name);
//g.fillRect((int)position.getX(), (int)position.getY(), (int)position.getWidth(), (int)position.getHeight());

@ -268,21 +268,13 @@ public class ControlConfigurationWindow extends JFrame implements WindowListener
JPanel selectionPanel1 = new JPanel(){
public void paintComponent(Graphics g) {
super.paintComponent(g);
try {
g.drawImage(ImageIO.read(new File(ControllerModule.CONTROLLERPATH+"4-way_axis.png")), 0, 0, this);
} catch (IOException e) {
e.printStackTrace();
}
g.drawImage(sigIRC.readImage(ControllerModule.CONTROLLERPATH+"4-way_axis.png"), 0, 0, this);
}
};
JPanel selectionPanel2 = new JPanel(){
public void paintComponent(Graphics g) {
super.paintComponent(g);
try {
g.drawImage(ImageIO.read(new File(ControllerModule.CONTROLLERPATH+"2-way_axis.png")), 0, 0, this);
} catch (IOException e) {
e.printStackTrace();
}
g.drawImage(sigIRC.readImage(ControllerModule.CONTROLLERPATH+"2-way_axis.png"), 0, 0, this);
}
};
//selectionPanel.setLayout(new BoxLayout(selectionPanel,BoxLayout.LINE_AXIS));

@ -92,13 +92,8 @@ public class ControllerModule extends Module{
}
}
controllers.addAll(ca);
try {
controller_img = ImageIO.read(new File(CONTROLLERPATH+"controller_template.png")).getScaledInstance((int)position.getWidth(), -1, 0);
controller_overlay_img = ImageIO.read(new File(CONTROLLERPATH+"controller_overlay.png")).getScaledInstance((int)position.getWidth(), -1, 0);
//System.out.println("Size of controller: "+controller_img.getWidth(sigIRC.panel)+","+controller_img.getHeight(sigIRC.panel));
} catch (IOException e) {
e.printStackTrace();
}
controller_img = sigIRC.readImage(CONTROLLERPATH+"controller_template.png").getScaledInstance((int)position.getWidth(), -1, 0);
controller_overlay_img = sigIRC.readImage(CONTROLLERPATH+"controller_overlay.png").getScaledInstance((int)position.getWidth(), -1, 0);
//buttons.add(new Button(0.1,0.05,0.1,0.05,controllers.get(0),Identifier.Button._3,Color.RED,this));
LoadButtonAndAxisData();
click_buttons.add(new AddClickableButton(new Rectangle(

@ -140,12 +140,8 @@ public class RabiRaceModule extends Module{
}
images = filtered_images.toArray(new String[filtered_images.size()]);
for (String image : images) {
try {
//System.out.println("Loaded "+image);
image_map.put(image, ImageIO.read(new File(ITEMS_DIRECTORY+image)));
} catch (IOException e) {
e.printStackTrace();
}
//System.out.println("Loaded "+image);
image_map.put(image, sigIRC.readImage(ITEMS_DIRECTORY+image));
}
for (MemoryData md : MemoryData.values()) {

@ -83,10 +83,30 @@ public class RabiRibiModule extends Module{
private void Initialize() {
RabiUtils.module = this;
CheckRabiRibiClient();
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleWithFixedDelay(()->{
CheckRabiRibiClient();
}, 5000, 5000, TimeUnit.MILLISECONDS);
this.overlay = new Overlay(this);
EntityLookupData.parent=this;
EntityLookupData.loadEntityLookupData(lookup_table);
ScheduledExecutorService scheduler2 = Executors.newScheduledThreadPool(1);
scheduler2.scheduleWithFixedDelay(()->{
UpdateEntities();
//System.out.println("Called Entity creation "+callcount+" times.");
}, 1000, 1000, TimeUnit.MILLISECONDS);
}
private void CheckRabiRibiClient() {
List<Integer> pids;
try {
pids = PsapiTools.getInstance().enumProcesses();
pids = PsapiTools.getInstance().enumProcesses();
boolean found=false;
for (Integer pid : pids) {
HANDLE process = Kernel32.INSTANCE.OpenProcess(PROCESS_PERMISSIONS, true, pid);
List<sig.modules.utils.Module> hModules;
@ -95,38 +115,35 @@ public class RabiRibiModule extends Module{
for(sig.modules.utils.Module m: hModules){
//System.out.println(m.getFileName()+":"+m.getEntryPoint());
if (m.getFileName().contains("rabiribi")) {
rabiRibiMemOffset = Pointer.nativeValue(m.getLpBaseOfDll().getPointer());
System.out.println("Found an instance of Rabi-Ribi at 0x"+Long.toHexString(rabiRibiMemOffset));
rabiRibiPID=pid;
foundRabiRibi=true;
rabiribiProcess=process;
found=true;
if (!foundRabiRibi) {
rabiRibiMemOffset = Pointer.nativeValue(m.getLpBaseOfDll().getPointer());
System.out.println("Found an instance of Rabi-Ribi at 0x"+Long.toHexString(rabiRibiMemOffset)+" | File:"+m.getFileName()+","+m.getBaseName());
rabiRibiPID=pid;
foundRabiRibi=true;
rabiribiProcess=process;
break;
}
break;
}
}
if (found) {
break;
}
} catch (Exception e) {
e.printStackTrace();
}
if (foundRabiRibi) {
break;
}
if (process!=null) {
Kernel32.INSTANCE.CloseHandle(process);
}
}
if (!found && foundRabiRibi) {
foundRabiRibi=false;
System.out.println("Rabi-Ribi process lost.");
}
} catch (Exception e) {
e.printStackTrace();
}
this.overlay = new Overlay(this);
EntityLookupData.parent=this;
EntityLookupData.loadEntityLookupData(lookup_table);
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleWithFixedDelay(()->{
UpdateEntities();
//System.out.println("Called Entity creation "+callcount+" times.");
}, 1000, 1000, TimeUnit.MILLISECONDS);
}
public void ApplyConfigWindowProperties() {
@ -205,19 +222,21 @@ public class RabiRibiModule extends Module{
}
private void UpdateEntities() {
int callcount=0;
long arrayPtr = readIntFromMemory(MemoryOffset.ENTITY_ARRAY);
for (int i=0;i<MAX_ENTITIES_TO_UPDATE;i++) {
if (!entities.containsKey(i)) {
callcount++;
Entity ent = new Entity(arrayPtr,i,this);
if (ent.isActive()) {
//System.out.println("Found entity at index "+i);
//entities.add(ent);
entities.put(i, ent);
if (foundRabiRibi) {
int callcount=0;
long arrayPtr = readIntFromMemory(MemoryOffset.ENTITY_ARRAY);
for (int i=0;i<MAX_ENTITIES_TO_UPDATE;i++) {
if (!entities.containsKey(i)) {
callcount++;
Entity ent = new Entity(arrayPtr,i,this);
if (ent.isActive()) {
//System.out.println("Found entity at index "+i);
//entities.add(ent);
entities.put(i, ent);
}
}
arrayPtr += ENTITY_ARRAY_ELEMENT_SIZE;
}
arrayPtr += ENTITY_ARRAY_ELEMENT_SIZE;
}
}

@ -1,6 +1,7 @@
package sig.modules;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@ -56,7 +57,7 @@ public class TouhouMotherModule extends Module implements ActionListener{
int bossMaxHP=SemiValidInteger.ERROR_VALUE;
TouhouMotherBossData currentBoss = null;
BufferedImage bossImage = null;
Image bossImage = null;
int lastCharacterAttacked=0;
int lastBossHP=0;
final int TIME_BETWEEN_DATA_DISPLAYS = 5 * 6;
@ -145,21 +146,21 @@ public class TouhouMotherModule extends Module implements ActionListener{
public void DrawBossAndPlayerInfo(Graphics g) {
g.drawImage(bossImage, (int)position.getX()+4, (int)position.getY()+4, sigIRC.panel);
DrawUtils.drawOutlineText(g, sigIRC.panel.programFont, Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+4, (int)position.getY()+4+16, 1, Color.WHITE, new Color(30,0,86,255),
DrawUtils.drawOutlineText(g, sigIRC.panel.programFont, Math.min(bossImage.getWidth(sigIRC.panel)+4,160)+(int)position.getX()+4, (int)position.getY()+4+16, 1, Color.WHITE, new Color(30,0,86,255),
currentBoss.getName());
DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+4, (int)position.getY()+4+48, 1, Color.WHITE, new Color(30,0,86,255),
DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(bossImage.getWidth(sigIRC.panel)+4,160)+(int)position.getX()+4, (int)position.getY()+4+48, 1, Color.WHITE, new Color(30,0,86,255),
real_bossHP+" / "+bossMaxHP +" ("+Math.round(((real_bossHP/(double)bossMaxHP)*100))+"%)");
DrawUtils.drawHealthbar(g, new Rectangle(
Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+4,
Math.min(bossImage.getWidth(sigIRC.panel)+4,160)+(int)position.getX()+4,
(int)position.getY()+4+20,
(int)TextUtils.calculateStringBoundsFont(bossMaxHP+" / "+bossMaxHP +" ("+Math.round((1d*100))+"%", sigIRC.panel.userFont).getWidth(),
8
), real_bossHP/(double)bossMaxHP, ChooseHealthbarColor(real_bossHP/(double)bossMaxHP));
DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+16, (int)position.getY()+4+68, 1, Color.WHITE, new Color(30,0,86,255),
DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(bossImage.getWidth(sigIRC.panel)+4,160)+(int)position.getX()+16, (int)position.getY()+4+68, 1, Color.WHITE, new Color(30,0,86,255),
TextUtils.convertSecondsToTimeFormat(secondsCount));
int record = TimeRecord.getRecord(currentBoss.getID());
if (record!=TimeRecord.ERROR_VALUE) {
DrawUtils.drawOutlineText(g, sigIRC.panel.smallFont, Math.min(bossImage.getWidth()+4,160)+(int)position.getX()+
DrawUtils.drawOutlineText(g, sigIRC.panel.smallFont, Math.min(bossImage.getWidth(sigIRC.panel)+4,160)+(int)position.getX()+
TextUtils.calculateStringBoundsFont(TextUtils.convertSecondsToTimeFormat(secondsCount), sigIRC.panel.userFont).getWidth()+20,
(int)position.getY()+4+72, 1, Color.WHITE, new Color(30,0,86,255),
"RECORD "+TextUtils.convertSecondsToTimeFormat(record));
@ -175,18 +176,18 @@ public class TouhouMotherModule extends Module implements ActionListener{
int totaldmg = calculateDataPropertyTotalValue(property);
for (int i=0;i<sorteddmg.length;i++) {
if (sorteddmg[i]!=-1 && characterDatabase[sorteddmg[i]].getDataProperty(property)>0) {
DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(((bossImage!=null)?bossImage.getWidth():0)+4,160)+(int)position.getX()+4-Math.min(50, (bossImage!=null)?bossImage.getWidth():0)+x, (int)position.getY()+4+96+pos+y, 1, Color.WHITE, new Color(30,0,86,255),
DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, Math.min(((bossImage!=null)?bossImage.getWidth(sigIRC.panel):0)+4,160)+(int)position.getX()+4-Math.min(50, (bossImage!=null)?bossImage.getWidth(sigIRC.panel):0)+x, (int)position.getY()+4+96+pos+y, 1, Color.WHITE, new Color(30,0,86,255),
characterDatabase[sorteddmg[i]].getName());
DrawUtils.drawHealthbar(g,
new Rectangle(
Math.min(((bossImage!=null)?bossImage.getWidth():0)+4,160)+(int)position.getX()+4+Math.max(0, 50-((bossImage!=null)?bossImage.getWidth():0))+x,
Math.min(((bossImage!=null)?bossImage.getWidth(sigIRC.panel):0)+4,160)+(int)position.getX()+4+Math.max(0, 50-((bossImage!=null)?bossImage.getWidth(sigIRC.panel):0))+x,
(int)position.getY()+4+86+pos+y,
96,
10
)
, (double)characterDatabase[sorteddmg[i]].getDataProperty(property)/maxdmg, characterDatabase[sorteddmg[i]].getColor());
DecimalFormat df = new DecimalFormat("0.0");
DrawUtils.drawOutlineText(g, sigIRC.panel.smallFont, Math.min((bossImage!=null)?bossImage.getWidth():0+4,160)+(int)position.getX()+4+Math.max(0, 50-((bossImage!=null)?bossImage.getWidth():0))+108+x, (int)position.getY()+4+96+pos+y, 1, Color.WHITE, new Color(30,0,86,255),
DrawUtils.drawOutlineText(g, sigIRC.panel.smallFont, Math.min((bossImage!=null)?bossImage.getWidth(sigIRC.panel):0+4,160)+(int)position.getX()+4+Math.max(0, 50-((bossImage!=null)?bossImage.getWidth(sigIRC.panel):0))+108+x, (int)position.getY()+4+96+pos+y, 1, Color.WHITE, new Color(30,0,86,255),
characterDatabase[sorteddmg[i]].getDataProperty(property)+" "+"("+df.format(((((double)characterDatabase[sorteddmg[i]].getDataProperty(property)/totaldmg))*100))+"%)");
pos+=16;
}
@ -365,12 +366,8 @@ public class TouhouMotherModule extends Module implements ActionListener{
for (TouhouMotherCharacterData tmcd : characterDatabase) {
tmcd.setCurrentDamage(0);
}
try {
currentBoss.getFileManager().verifyAndFetchFileFromServer();
bossImage = ImageIO.read(new File(sigIRC.BASEDIR+"Boss Sprites/"+currentBoss.getImage()));
} catch (IOException e) {
e.printStackTrace();
}
currentBoss.getFileManager().verifyAndFetchFileFromServer();
bossImage = sigIRC.readImage(sigIRC.BASEDIR+"Boss Sprites/"+currentBoss.getImage());
}
}

@ -2,6 +2,7 @@ package sig.modules.Twitch;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
@ -15,7 +16,7 @@ import sig.utils.DrawUtils;
import sig.utils.TextUtils;
public class FancyNumber {
BufferedImage icon;
Image icon;
int displayedValue=0;
int lastValue=0;
int lastValueChange=0;
@ -25,11 +26,7 @@ public class FancyNumber {
final static String ICONDIR = sigIRC.BASEDIR+"sigIRC/";
public FancyNumber(String icon_name, int startingValue) {
try {
icon = ImageIO.read(new File(ICONDIR+icon_name));
} catch (IOException e) {
e.printStackTrace();
}
icon = sigIRC.readImage(ICONDIR+icon_name);
lastValue = startingValue;
}
@ -53,7 +50,7 @@ public class FancyNumber {
int xoffset = 0;
int yoffset = 0;
g.drawImage(icon, x, y, sigIRC.panel);
xoffset+=icon.getWidth()+4;
xoffset+=icon.getWidth(sigIRC.panel)+4;
if (displayedValue!=lastValue) {
if (delayCount==0) {
int diff = Math.abs(displayedValue-lastValue);
@ -83,7 +80,7 @@ public class FancyNumber {
lastValueChange--;
g.drawImage((upArrow)?TwitchModule.UPARROWIMAGE:TwitchModule.DOWNARROWIMAGE, x+xoffset, y+yoffset, sigIRC.panel);
}
xoffset+=((upArrow)?TwitchModule.UPARROWIMAGE.getWidth():TwitchModule.DOWNARROWIMAGE.getWidth())+4;
xoffset+=((upArrow)?TwitchModule.UPARROWIMAGE.getWidth(sigIRC.panel):TwitchModule.DOWNARROWIMAGE.getWidth(sigIRC.panel))+4;
return new Rectangle(x,y,xoffset,yoffset+16);
}
}

@ -3,6 +3,7 @@ package sig.modules;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.WindowEvent;
import java.awt.geom.Rectangle2D;
@ -44,8 +45,8 @@ public class TwitchModule extends Module{
final public static String SOUNDSDIR = sigIRC.BASEDIR+"sigIRC/follower_sounds/";
final public static String FOLLOWERQUEUEFILE = USERDIR+"followers.txt";
public static boolean streamOnline = false;
static BufferedImage follower_img;
BufferedImage followerUserLogo;
static Image follower_img;
Image followerUserLogo;
List<Announcement> follower_queue = new ArrayList<Announcement>();
final static int FOLLOWERCHECKTIMER = 900;
int lastFollowerCheck=300;
@ -59,9 +60,9 @@ public class TwitchModule extends Module{
Date uptime = Calendar.getInstance().getTime();
String currentlyPlaying=" ";
final public static int ARROWTIMER = 3000;
public static BufferedImage UPARROWIMAGE;
public static BufferedImage DOWNARROWIMAGE;
public static BufferedImage UPTIMEIMAGE;
public static Image UPARROWIMAGE;
public static Image DOWNARROWIMAGE;
public static Image UPTIMEIMAGE;
public TwitchModule(Rectangle2D bounds, String moduleName) {
this(bounds,moduleName,true);
@ -243,15 +244,10 @@ public class TwitchModule extends Module{
}
private void InitializeImages() {
try {
follower_img = ImageIO.read(new File(sigIRC.BASEDIR+sigIRC.twitchmodule_follower_img));
UPARROWIMAGE = ImageIO.read(new File(sigIRC.BASEDIR+"sigIRC/icon_up_arrow.png"));
DOWNARROWIMAGE = ImageIO.read(new File(sigIRC.BASEDIR+"sigIRC/icon_down_arrow.png"));
UPTIMEIMAGE = ImageIO.read(new File(sigIRC.BASEDIR+"sigIRC/icon_uptime.png"));
//System.out.println("Initialized Follower Image successfully.");
} catch (IOException e) {
e.printStackTrace();
}
follower_img = sigIRC.readImage(sigIRC.BASEDIR+sigIRC.twitchmodule_follower_img);
UPARROWIMAGE = sigIRC.readImage(sigIRC.BASEDIR+"sigIRC/icon_up_arrow.png");
DOWNARROWIMAGE = sigIRC.readImage(sigIRC.BASEDIR+"sigIRC/icon_down_arrow.png");
UPTIMEIMAGE = sigIRC.readImage(sigIRC.BASEDIR+"sigIRC/icon_uptime.png");
}
private void CreateFollowerQueueLog() {
@ -429,7 +425,7 @@ public class TwitchModule extends Module{
private void DrawStatisticsBar(Graphics g) {
g.setColor(new Color(25,25,25));
int xoffset = (int)position.getX()+4;
int yoffset = (int)(position.getY()+follower_img.getHeight()+sigIRC.twitchmodule_newfollowerImgLogoSize);
int yoffset = (int)(position.getY()+follower_img.getHeight(sigIRC.panel)+sigIRC.twitchmodule_newfollowerImgLogoSize);
g.fillPolygon(new int[]{(int)position.getX(),(int)(position.getX()+position.getWidth()),(int)(position.getX()+position.getWidth()),(int)position.getX()},
new int[]{yoffset-4,yoffset-4,yoffset+16,yoffset+16},
4);
@ -445,7 +441,7 @@ public class TwitchModule extends Module{
private Rectangle DrawUptime(Graphics g, int x, int y) {
int xoffset = 0;
int yoffset = 0;
g.drawImage(UPTIMEIMAGE, x+xoffset, y+yoffset-2, sigIRC.panel);xoffset+=UPTIMEIMAGE.getWidth()+4;
g.drawImage(UPTIMEIMAGE, x+xoffset, y+yoffset-2, sigIRC.panel);xoffset+=UPTIMEIMAGE.getWidth(sigIRC.panel)+4;
String timediff = TimeUtils.GetTimeDifferenceFromCurrentDate(uptime);
if (timediff.length()>0) {
DrawUtils.drawTextFont(g, sigIRC.panel.userFont, x+xoffset, y+yoffset+TextUtils.calculateStringBoundsFont(timediff, sigIRC.panel.userFont).getHeight()/2+3,new Color(184,181,192),timediff);xoffset+=TextUtils.calculateStringBoundsFont(timediff, sigIRC.panel.userFont).getWidth()+12;
@ -463,7 +459,7 @@ public class TwitchModule extends Module{
: 0;
final int canvasYOffset =
(sigIRC.twitchmodule_follower_img_animation)
? Math.min(follower_img.getHeight(),yAlteration)
? Math.min(follower_img.getHeight(sigIRC.panel),yAlteration)
: 0;
final int xAlteration =
(sigIRC.twitchmodule_follower_img_animation)
@ -471,13 +467,13 @@ public class TwitchModule extends Module{
: 0;
final int canvasXOffset =
(sigIRC.twitchmodule_follower_img_animation)
? Math.min(follower_img.getWidth(),xAlteration)
? Math.min(follower_img.getWidth(sigIRC.panel),xAlteration)
: 0;
//System.out.println(yAlteration);
//g.drawImage(follower_img, (int)bounds.getX()+xAlteration, (int)bounds.getY()+yAlteration, sigIRC.panel);
//g.drawImage(follower_img, (int)bounds.getX(), (int)bounds.getY(), , , sigIRC.panel)
g.drawImage(follower_img, (int)position.getX(), (int)position.getY()+canvasYOffset, (int)position.getX()+follower_img.getWidth()+canvasXOffset, (int)position.getY()+follower_img.getHeight(),
-xAlteration, 0, follower_img.getWidth(), follower_img.getHeight()-yAlteration, sigIRC.panel);
g.drawImage(follower_img, (int)position.getX(), (int)position.getY()+canvasYOffset, (int)position.getX()+follower_img.getWidth(sigIRC.panel)+canvasXOffset, (int)position.getY()+follower_img.getHeight(sigIRC.panel),
-xAlteration, 0, follower_img.getWidth(sigIRC.panel), follower_img.getHeight(sigIRC.panel)-yAlteration, sigIRC.panel);
Rectangle2D usernameTextsize = TextUtils.calculateStringBoundsFont(announcedFollowerUser.getDisplayName(), sigIRC.panel.programFont);
int textY = (int)position.getY()+sigIRC.twitchmodule_followerText_Y+yAlteration;
int textX = (int)position.getX()+sigIRC.twitchmodule_followerText_centerX+xAlteration;
@ -488,13 +484,13 @@ public class TwitchModule extends Module{
if (followerUserLogo!=null) {
final int image_size = sigIRC.twitchmodule_newfollowerImgLogoSize;
int img_startx = (int)(position.getX()+position.getWidth()-ticksPassed*3-(image_size+4));
int img_starty = (int)(position.getY()+follower_img.getHeight()+2-image_size/2);
int img_starty = (int)(position.getY()+follower_img.getHeight(sigIRC.panel)+2-image_size/2);
//g.setColor(Color.BLACK);
//g.drawRect(img_startx, img_starty, image_size, image_size);
g.drawImage(followerUserLogo, img_startx, img_starty, img_startx+image_size, img_starty+image_size, 0, 0, followerUserLogo.getWidth(), followerUserLogo.getHeight(), TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerImgBackgroundColor), sigIRC.panel);
g.drawImage(followerUserLogo, img_startx, img_starty, img_startx+image_size, img_starty+image_size, 0, 0, followerUserLogo.getWidth(sigIRC.panel), followerUserLogo.getHeight(sigIRC.panel), TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerImgBackgroundColor), sigIRC.panel);
}
if (announcedFollowerUser.getBio()!=null && announcedFollowerUser.getBio().length()>0) {
DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, position.getX()+position.getWidth()-ticksPassed*3, position.getY()+follower_img.getHeight()+2+8, 2, TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerTextColor), TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerShadowTextColor), announcedFollowerUser.getBio());
DrawUtils.drawOutlineText(g, sigIRC.panel.userFont, position.getX()+position.getWidth()-ticksPassed*3, position.getY()+follower_img.getHeight(sigIRC.panel)+2+8, 2, TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerTextColor), TextUtils.convertStringToColor(sigIRC.twitchmodule_newfollowerShadowTextColor), announcedFollowerUser.getBio());
}
}
}

@ -41,12 +41,14 @@ import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
@ -159,6 +161,7 @@ public class sigIRC{
public static int lastSubEmoteUpdate = -1;
public static boolean autoUpdateProgram = true;
public static Image programIcon;
public static Image missingImage;
public static int subchannelCount = 0;
public static HashMap<Long,String> subchannelIds = new HashMap<Long,String>();
@ -213,11 +216,11 @@ public class sigIRC{
touhoumothermodule_Y = config.getInteger("TOUHOUMOTHER_module_Y",312);
touhoumothermodule_width = config.getInteger("TOUHOUMOTHER_module_width",320);
touhoumothermodule_height = config.getInteger("TOUHOUMOTHER_module_height",312);
/*rabiribimodule_X = config.getInteger("RABIRIBI_module_X",0);
rabiribimodule_X = config.getInteger("RABIRIBI_module_X",0);
rabiribimodule_Y = config.getInteger("RABIRIBI_module_Y",312);
rabiribimodule_width = config.getInteger("RABIRIBI_module_width",320);
rabiribimodule_height = config.getInteger("RABIRIBI_module_height",312);
rabiribimodule_enabled = config.getBoolean("Module_rabiribi_Enabled", false);*/
rabiribimodule_enabled = config.getBoolean("Module_rabiribi_Enabled", false);
rabiracemodule_X = config.getInteger("RABIRACE_module_X",0);
rabiracemodule_Y = config.getInteger("RABIRACE_module_Y",312);
rabiracemodule_width = config.getInteger("RABIRACE_module_width",320);
@ -276,10 +279,28 @@ public class sigIRC{
}
private static void Initialize() {
programIcon = sigIRC.readImage(sigIRC.BASEDIR+"/sigIRC/sigIRCicon.png");
BufferedImage img = new BufferedImage(16,16,BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
g.drawRect(0, 0, 15, 15);
g.drawLine(0, 0, 15, 15);
g.drawLine(0, 15, 15, 0);
missingImage = img;
}
public static Image readImage(String file) {
Image img;
try {
programIcon = ImageIO.read(new File(sigIRC.BASEDIR+"/sigIRC/sigIRCicon.png"));
img = ImageIO.read(new File(file));
} catch (IOException e) {
e.printStackTrace();
return missingImage;
}
if (img!=null) {
return img;
} else {
return missingImage;
}
}
@ -362,12 +383,8 @@ public class sigIRC{
}
private static void InitializeModules() {
try {
Module.IMG_DRAGBAR = ImageIO.read(new File(sigIRC.BASEDIR+"drag_bar.png"));
Module.MSG_SEPARATOR = ImageIO.read(new File(sigIRC.BASEDIR+"sigIRC/message_separator.png"));
} catch (IOException e) {
e.printStackTrace();
}
Module.IMG_DRAGBAR = sigIRC.readImage(sigIRC.BASEDIR+"drag_bar.png");
Module.MSG_SEPARATOR = sigIRC.readImage(sigIRC.BASEDIR+"sigIRC/message_separator.png");
if (touhoumothermodule_enabled) {
modules.add(new TouhouMotherModule(
new Rectangle(touhoumothermodule_X,touhoumothermodule_Y,touhoumothermodule_width,touhoumothermodule_height),

Loading…
Cancel
Save