parent
afae9ca413
commit
f281fb3fbf
Binary file not shown.
@ -0,0 +1,50 @@ |
|||||||
|
package sig.modules.Controller; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
|
import java.awt.Graphics; |
||||||
|
|
||||||
|
import net.java.games.input.Component.Identifier; |
||||||
|
import net.java.games.input.Controller; |
||||||
|
import sig.modules.ControllerModule; |
||||||
|
|
||||||
|
public class Button { |
||||||
|
double pct_x = 0; |
||||||
|
double pct_y = 0; |
||||||
|
double pct_width = 0; |
||||||
|
double pct_height = 0; |
||||||
|
Identifier ident; |
||||||
|
Controller parent_controller; |
||||||
|
Color pressed_col; |
||||||
|
ControllerModule parent; |
||||||
|
boolean square; |
||||||
|
|
||||||
|
public Button(double pct_x, double pct_width, double pct_y, double pct_height, Controller parent_controller, Identifier button_identifier, Color col, ControllerModule module) { |
||||||
|
this(pct_x,pct_width,pct_y,pct_height,parent_controller,button_identifier,col,module,false); |
||||||
|
} |
||||||
|
|
||||||
|
public Button(double pct_x, double pct_width, double pct_y, double pct_height, Controller parent_controller, Identifier button_identifier, Color col, ControllerModule module, boolean square) { |
||||||
|
this.pct_x = pct_x; |
||||||
|
this.pct_y = pct_y; |
||||||
|
this.pct_width=pct_width; |
||||||
|
this.pct_height=pct_height; |
||||||
|
this.parent_controller=parent_controller; |
||||||
|
this.ident = button_identifier; |
||||||
|
this.pressed_col=col; |
||||||
|
this.parent = module; |
||||||
|
this.square = square; |
||||||
|
} |
||||||
|
|
||||||
|
public void draw(Graphics g) { |
||||||
|
if (parent_controller.getComponent(ident).getPollData()==1) { |
||||||
|
Color col_identity = g.getColor(); |
||||||
|
g.setColor(pressed_col); |
||||||
|
g.fillOval((int)(parent.getPosition().getX() |
||||||
|
+parent.getPosition().getWidth()*pct_x) |
||||||
|
,(int)(parent.getPosition().getY() |
||||||
|
+parent.getPosition().getWidth()*pct_y) |
||||||
|
,(int)(parent.getPosition().getWidth()*pct_width), |
||||||
|
(int)(parent.getPosition().getWidth()*pct_height)); |
||||||
|
g.setColor(col_identity); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
package sig.modules.Controller; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
|
import java.awt.Graphics; |
||||||
|
import java.awt.Rectangle; |
||||||
|
import java.awt.event.MouseEvent; |
||||||
|
|
||||||
|
import sig.sigIRC; |
||||||
|
import sig.modules.ControllerModule; |
||||||
|
import sig.utils.DrawUtils; |
||||||
|
import sig.utils.TextUtils; |
||||||
|
|
||||||
|
public class ClickableButton { |
||||||
|
int x,y,width,height; |
||||||
|
String label; |
||||||
|
ControllerModule module; |
||||||
|
|
||||||
|
public ClickableButton(Rectangle position, String button_label, ControllerModule parent_module) { |
||||||
|
this.x = (int)position.getX(); |
||||||
|
this.y = (int)position.getY(); |
||||||
|
this.width = (int)position.getWidth(); |
||||||
|
this.height = (int)position.getHeight(); |
||||||
|
this.label=button_label; |
||||||
|
this.module = parent_module; |
||||||
|
} |
||||||
|
|
||||||
|
public void onClickEvent(MouseEvent ev) { |
||||||
|
if (mouseInsideBounds(ev)) { |
||||||
|
System.out.println("Click performed!"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private boolean mouseInsideBounds(MouseEvent ev) { |
||||||
|
return ev.getX()>=x && ev.getX()<=x+width && |
||||||
|
ev.getY()>=y && ev.getY()<=y+height; |
||||||
|
} |
||||||
|
|
||||||
|
public void draw(Graphics g) { |
||||||
|
Color color_identity = g.getColor(); |
||||||
|
g.setColor(Color.WHITE); |
||||||
|
g.drawRect((int)module.getPosition().getX()+x, |
||||||
|
(int)module.getPosition().getY()+y, width, height); |
||||||
|
g.setColor(Color.BLACK); |
||||||
|
g.fillRect((int)module.getPosition().getX()+x+1, |
||||||
|
(int)module.getPosition().getY()+y+1, width-1, height-1); |
||||||
|
DrawUtils.drawTextFont(g, sigIRC.panel.userFont, module.getPosition().getX()+x-TextUtils.calculateStringBoundsFont(label, sigIRC.panel.userFont).getWidth()/2+width/2, module.getPosition().getY()+y+height-1, Color.WHITE, label); |
||||||
|
g.setColor(color_identity); |
||||||
|
} |
||||||
|
} |
@ -1,27 +1,106 @@ |
|||||||
package sig.modules; |
package sig.modules; |
||||||
|
|
||||||
|
import java.awt.Color; |
||||||
import java.awt.Graphics; |
import java.awt.Graphics; |
||||||
|
import java.awt.Image; |
||||||
|
import java.awt.Rectangle; |
||||||
|
import java.awt.event.MouseEvent; |
||||||
import java.awt.geom.Rectangle2D; |
import java.awt.geom.Rectangle2D; |
||||||
|
import java.io.File; |
||||||
|
import java.io.IOException; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import javax.imageio.ImageIO; |
||||||
|
|
||||||
|
import net.java.games.input.Component; |
||||||
|
import net.java.games.input.Component.Identifier; |
||||||
import net.java.games.input.Controller; |
import net.java.games.input.Controller; |
||||||
|
import net.java.games.input.Controller.Type; |
||||||
import net.java.games.input.ControllerEnvironment; |
import net.java.games.input.ControllerEnvironment; |
||||||
import sig.Module; |
import sig.Module; |
||||||
|
import sig.sigIRC; |
||||||
|
import sig.modules.Controller.Button; |
||||||
|
import sig.modules.Controller.ClickableButton; |
||||||
|
import sig.utils.DrawUtils; |
||||||
|
import sig.utils.FileUtils; |
||||||
|
|
||||||
public class ControllerModule extends Module{ |
public class ControllerModule extends Module{ |
||||||
|
public final static String CONTROLLERPATH = sigIRC.BASEDIR+"sigIRC/controller/"; |
||||||
|
List<Controller> controllers = new ArrayList<Controller>(); |
||||||
|
Image controller_img; |
||||||
|
double imgratio = 1; |
||||||
|
List<Button> buttons = new ArrayList<Button>(); |
||||||
|
List<ClickableButton> click_buttons = new ArrayList<ClickableButton>(); |
||||||
|
|
||||||
public ControllerModule(Rectangle2D bounds, String moduleName) { |
public ControllerModule(Rectangle2D bounds, String moduleName) { |
||||||
super(bounds, moduleName); |
super(bounds, moduleName); |
||||||
Controller[] ca = ControllerEnvironment.getDefaultEnvironment().getControllers(); |
Controller[] ca = ControllerEnvironment.getDefaultEnvironment().getControllers(); |
||||||
for (Controller c : ca) { |
for (Controller c : ca) { |
||||||
System.out.println(c.getName()); |
if (c.getType()==Type.GAMEPAD) { |
||||||
|
controllers.add(c); |
||||||
|
System.out.println("Recognized "+c.getName()+": "+c.getType()); |
||||||
|
//System.out.println("Components: ");
|
||||||
|
/*for (Component cp : c.getComponents()) { |
||||||
|
System.out.println(" "+cp.getName()+" ("+cp.getIdentifier().getName()+")"); |
||||||
|
}*/ |
||||||
|
} |
||||||
|
//System.out.println(c.getName()+": "+c.getType());
|
||||||
|
} |
||||||
|
try { |
||||||
|
controller_img = ImageIO.read(new File(CONTROLLERPATH+"controller_template.png")).getScaledInstance((int)position.getWidth(), -1, 0); |
||||||
|
} catch (IOException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
buttons.add(new Button(0.1,0.05,0.1,0.05,controllers.get(0),Identifier.Button._3,Color.RED,this)); |
||||||
|
click_buttons.add(new ClickableButton(new Rectangle( |
||||||
|
0,0,96,20),"Test",this)); |
||||||
} |
} |
||||||
|
|
||||||
|
public void mousePressed(MouseEvent ev) { |
||||||
|
super.mousePressed(ev); |
||||||
|
for (ClickableButton cb : click_buttons) { |
||||||
|
cb.onClickEvent(ev); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public Rectangle2D getPosition() { |
||||||
|
return position; |
||||||
} |
} |
||||||
|
|
||||||
public void run() { |
public void run() { |
||||||
super.run(); |
super.run(); |
||||||
|
for (Controller c : controllers) { |
||||||
|
//System.out.println("Data for "+c.getName()+" ("+c.getType()+"):");
|
||||||
|
c.poll(); |
||||||
|
/*for (Component cp : c.getComponents()) { |
||||||
|
if (!cp.isAnalog()) { |
||||||
|
if (cp.getPollData()!=0) { |
||||||
|
//System.out.println("Button "+cp.getIdentifier()+" held down!");
|
||||||
|
FileUtils.logToFile("Button "+cp.getIdentifier()+" held down!", CONTROLLERPATH+"test"); |
||||||
|
} |
||||||
|
} |
||||||
|
}*/ |
||||||
|
} |
||||||
} |
} |
||||||
|
|
||||||
public void draw(Graphics g) { |
public void draw(Graphics g) { |
||||||
super.draw(g); |
super.draw(g); |
||||||
|
for (int i=0;i<controllers.get(0).getComponents().length;i++) { |
||||||
|
Component cp = controllers.get(0).getComponents()[i]; |
||||||
|
if (!cp.isAnalog()) { |
||||||
|
if (cp.getPollData()!=0) { |
||||||
|
//System.out.println("Button "+cp.getIdentifier()+" held down!");
|
||||||
|
//DrawUtils.drawText(g,position.getX(),position.getY(),Color.BLACK,"Button "+cp.getIdentifier()+" held down!");
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
g.drawImage(controller_img, (int)(position.getX()+1), (int)(position.getY()+8), sigIRC.panel); |
||||||
|
for (Button b : buttons) { |
||||||
|
b.draw(g); |
||||||
|
} |
||||||
|
for (ClickableButton cb : click_buttons) { |
||||||
|
cb.draw(g); |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue