Cause a rescan in the main thread and wait for controller rescanning to complete before processing controller configuration.

Co-authored-by: r3cp3ct <45179536+r3cp3ct@users.noreply.github.com>
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
main
sigonasr2, Sig, Sigo 2 years ago committed by GitHub
parent daf9122bcd
commit d3bc17a26e
  1. 8
      src/sig/RabiClone.java
  2. 73
      src/sig/objects/ConfigureControls.java

@ -75,6 +75,8 @@ public class RabiClone {
public static long TIME = 0; public static long TIME = 0;
public static long scaleTime; public static long scaleTime;
public static boolean reloadControllerList = false;
public static HashMap<Action,List<KeyBind>> DEFAULT_KEYBINDS = new HashMap<>(); public static HashMap<Action,List<KeyBind>> DEFAULT_KEYBINDS = new HashMap<>();
public static RenderingHints RENDERHINTS = new RenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF); public static RenderingHints RENDERHINTS = new RenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
@ -134,10 +136,14 @@ public class RabiClone {
KeyBind.poll(); KeyBind.poll();
if (Key.isKeyHeld(KeyEvent.VK_F5) && System.currentTimeMillis() - lastControllerScan > 5000) { if ((Key.isKeyHeld(KeyEvent.VK_F5)||reloadControllerList) && System.currentTimeMillis() - lastControllerScan > 5000) {
CONTROLLERS = ControllerEnvironment.getDefaultEnvironment().rescanControllers(); CONTROLLERS = ControllerEnvironment.getDefaultEnvironment().rescanControllers();
System.out.println(Arrays.toString(CONTROLLERS)); System.out.println(Arrays.toString(CONTROLLERS));
lastControllerScan = System.currentTimeMillis(); lastControllerScan = System.currentTimeMillis();
if (reloadControllerList) {
ConfigureControls.LoadControls();
}
reloadControllerList=false;
} }
FRIENDLY_OBJ.clear(); FRIENDLY_OBJ.clear();

@ -5,7 +5,6 @@ import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
@ -13,7 +12,6 @@ import java.util.List;
import net.java.games.input.Component; import net.java.games.input.Component;
import net.java.games.input.Controller; import net.java.games.input.Controller;
import net.java.games.input.ControllerEnvironment;
import net.java.games.input.Event; import net.java.games.input.Event;
import net.java.games.input.Component.Identifier; import net.java.games.input.Component.Identifier;
import net.java.games.input.Component.POV; import net.java.games.input.Component.POV;
@ -46,7 +44,7 @@ public class ConfigureControls extends Object{
super(panel); super(panel);
RabiClone.BACKGROUND_COLOR = PaletteColor.WHITE; RabiClone.BACKGROUND_COLOR = PaletteColor.WHITE;
if (GAME_CONTROLS_FILE.exists()) { if (GAME_CONTROLS_FILE.exists()) {
LoadControls(); RabiClone.reloadControllerList = true;
} }
updateHighlightSections(); updateHighlightSections();
} }
@ -54,7 +52,6 @@ public class ConfigureControls extends Object{
public static void LoadControls() { public static void LoadControls() {
try { try {
DataInputStream stream = new DataInputStream(new FileInputStream(GAME_CONTROLS_FILE)); DataInputStream stream = new DataInputStream(new FileInputStream(GAME_CONTROLS_FILE));
Controller[] CONTROLLERS = ControllerEnvironment.getDefaultEnvironment().rescanControllers();
KeyBind.KEYBINDS.clear(); KeyBind.KEYBINDS.clear();
while (stream.available()>0) { while (stream.available()>0) {
Action a = Action.valueOf(readString(stream)); Action a = Action.valueOf(readString(stream));
@ -67,13 +64,13 @@ public class ConfigureControls extends Object{
} else { } else {
java.lang.String controllerName = readString(stream); java.lang.String controllerName = readString(stream);
Controller controller=null; Controller controller=null;
for (int i = 0; i < CONTROLLERS.length; i++) { for (int i = 0; i < RabiClone.CONTROLLERS.length; i++) {
if (CONTROLLERS[i].getType() == Controller.Type.KEYBOARD if (RabiClone.CONTROLLERS[i].getType() == Controller.Type.KEYBOARD
|| CONTROLLERS[i].getType() == Controller.Type.MOUSE) { || RabiClone.CONTROLLERS[i].getType() == Controller.Type.MOUSE) {
continue; continue;
} else } else
if (CONTROLLERS[i].getName().equals(controllerName)) { if (RabiClone.CONTROLLERS[i].getName().equals(controllerName)) {
controller=CONTROLLERS[i]; controller=RabiClone.CONTROLLERS[i];
} }
} }
if (controller==null) { if (controller==null) {
@ -205,37 +202,41 @@ public class ConfigureControls extends Object{
@Override @Override
public void draw(byte[] p) { public void draw(byte[] p) {
int y = 4; if (!RabiClone.reloadControllerList) {
if (!assigningKey) { int y = 4;
selectedAction=null; if (!assigningKey) {
selectedKeybind=null; selectedAction=null;
for (Action a : Action.values()) { selectedKeybind=null;
if (RabiClone.MOUSE_POS.getY()>=getY()+y&&RabiClone.MOUSE_POS.getY()<getY()+y+Font.PROFONT_12.getGlyphHeight()+4) { for (Action a : Action.values()) {
selectedAction=a; if (RabiClone.MOUSE_POS.getY()>=getY()+y&&RabiClone.MOUSE_POS.getY()<getY()+y+Font.PROFONT_12.getGlyphHeight()+4) {
Draw_Rect(p,PaletteColor.PEACH,0,getY()+y,RabiClone.BASE_WIDTH,Font.PROFONT_12.getGlyphHeight()+4); selectedAction=a;
} Draw_Rect(p,PaletteColor.PEACH,0,getY()+y,RabiClone.BASE_WIDTH,Font.PROFONT_12.getGlyphHeight()+4);
for (int i=0;i<actionHighlightSections.get(a.ordinal()).size();i+=2) { }
List<Integer> sectionList = actionHighlightSections.get(a.ordinal()); for (int i=0;i<actionHighlightSections.get(a.ordinal()).size();i+=2) {
int startX=sectionList.get(i)*Font.PROFONT_12.getGlyphWidth()-4; List<Integer> sectionList = actionHighlightSections.get(a.ordinal());
int endX=sectionList.get(i+1)*Font.PROFONT_12.getGlyphWidth()+4; int startX=sectionList.get(i)*Font.PROFONT_12.getGlyphWidth()-4;
if (selectedKeybind==null&&RabiClone.MOUSE_POS.getY()>=getY()+y&&RabiClone.MOUSE_POS.getY()<getY()+y+Font.PROFONT_12.getGlyphHeight()+4&&RabiClone.MOUSE_POS.getX()>=startX&&RabiClone.MOUSE_POS.getX()<=endX) { int endX=sectionList.get(i+1)*Font.PROFONT_12.getGlyphWidth()+4;
Draw_Rect(p,PaletteColor.RED,startX,getY()+y,endX-startX,Font.PROFONT_12.getGlyphHeight()+4); if (selectedKeybind==null&&RabiClone.MOUSE_POS.getY()>=getY()+y&&RabiClone.MOUSE_POS.getY()<getY()+y+Font.PROFONT_12.getGlyphHeight()+4&&RabiClone.MOUSE_POS.getX()>=startX&&RabiClone.MOUSE_POS.getX()<=endX) {
storedX=startX; Draw_Rect(p,PaletteColor.RED,startX,getY()+y,endX-startX,Font.PROFONT_12.getGlyphHeight()+4);
storedY=y; storedX=startX;
storedEndX=endX; storedY=y;
selectedKeybind=KeyBind.KEYBINDS.get(a).get(i/2); storedEndX=endX;
break; selectedKeybind=KeyBind.KEYBINDS.get(a).get(i/2);
break;
}
} }
Draw_Text_Ext(4,getY()+y,DisplayActionKeys(a),Font.PROFONT_12,Alpha.ALPHA0,PaletteColor.MIDNIGHT_BLUE);
y+=Font.PROFONT_12.getGlyphHeight()+4;
} }
Draw_Text_Ext(4,getY()+y,DisplayActionKeys(a),Font.PROFONT_12,Alpha.ALPHA0,PaletteColor.MIDNIGHT_BLUE); if (selectedKeybind!=null) {
y+=Font.PROFONT_12.getGlyphHeight()+4; Draw_Line(p,storedX,getY()+storedY,storedEndX,getY()+storedY+Font.PROFONT_12.getGlyphHeight()+4,PaletteColor.BLACK,Alpha.ALPHA32);
} Draw_Line(p,storedX,getY()+storedY+Font.PROFONT_12.getGlyphHeight()+4,storedEndX,getY()+storedY,PaletteColor.BLACK,Alpha.ALPHA32);
if (selectedKeybind!=null) { }
Draw_Line(p,storedX,getY()+storedY,storedEndX,getY()+storedY+Font.PROFONT_12.getGlyphHeight()+4,PaletteColor.BLACK,Alpha.ALPHA32); } else {
Draw_Line(p,storedX,getY()+storedY+Font.PROFONT_12.getGlyphHeight()+4,storedEndX,getY()+storedY,PaletteColor.BLACK,Alpha.ALPHA32); Draw_Text_Ext(4, 4, new String("Press a key to assign to ").append(selectedAction), Font.PROFONT_12, Alpha.ALPHA0, PaletteColor.MIDNIGHT_BLUE);
} }
} else { } else {
Draw_Text_Ext(4, 4, new String("Press a key to assign to ").append(selectedAction), Font.PROFONT_12, Alpha.ALPHA0, PaletteColor.MIDNIGHT_BLUE); Draw_Text_Ext(4, 4, new String("Preparing controller list..."), Font.PROFONT_12, Alpha.ALPHA0, PaletteColor.MIDNIGHT_BLUE);
} }
} }

Loading…
Cancel
Save