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. 19
      src/sig/objects/ConfigureControls.java

@ -75,6 +75,8 @@ public class RabiClone {
public static long TIME = 0;
public static long scaleTime;
public static boolean reloadControllerList = false;
public static HashMap<Action,List<KeyBind>> DEFAULT_KEYBINDS = new HashMap<>();
public static RenderingHints RENDERHINTS = new RenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
@ -134,10 +136,14 @@ public class RabiClone {
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();
System.out.println(Arrays.toString(CONTROLLERS));
lastControllerScan = System.currentTimeMillis();
if (reloadControllerList) {
ConfigureControls.LoadControls();
}
reloadControllerList=false;
}
FRIENDLY_OBJ.clear();

@ -5,7 +5,6 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
@ -13,7 +12,6 @@ import java.util.List;
import net.java.games.input.Component;
import net.java.games.input.Controller;
import net.java.games.input.ControllerEnvironment;
import net.java.games.input.Event;
import net.java.games.input.Component.Identifier;
import net.java.games.input.Component.POV;
@ -46,7 +44,7 @@ public class ConfigureControls extends Object{
super(panel);
RabiClone.BACKGROUND_COLOR = PaletteColor.WHITE;
if (GAME_CONTROLS_FILE.exists()) {
LoadControls();
RabiClone.reloadControllerList = true;
}
updateHighlightSections();
}
@ -54,7 +52,6 @@ public class ConfigureControls extends Object{
public static void LoadControls() {
try {
DataInputStream stream = new DataInputStream(new FileInputStream(GAME_CONTROLS_FILE));
Controller[] CONTROLLERS = ControllerEnvironment.getDefaultEnvironment().rescanControllers();
KeyBind.KEYBINDS.clear();
while (stream.available()>0) {
Action a = Action.valueOf(readString(stream));
@ -67,13 +64,13 @@ public class ConfigureControls extends Object{
} else {
java.lang.String controllerName = readString(stream);
Controller controller=null;
for (int i = 0; i < CONTROLLERS.length; i++) {
if (CONTROLLERS[i].getType() == Controller.Type.KEYBOARD
|| CONTROLLERS[i].getType() == Controller.Type.MOUSE) {
for (int i = 0; i < RabiClone.CONTROLLERS.length; i++) {
if (RabiClone.CONTROLLERS[i].getType() == Controller.Type.KEYBOARD
|| RabiClone.CONTROLLERS[i].getType() == Controller.Type.MOUSE) {
continue;
} else
if (CONTROLLERS[i].getName().equals(controllerName)) {
controller=CONTROLLERS[i];
if (RabiClone.CONTROLLERS[i].getName().equals(controllerName)) {
controller=RabiClone.CONTROLLERS[i];
}
}
if (controller==null) {
@ -205,6 +202,7 @@ public class ConfigureControls extends Object{
@Override
public void draw(byte[] p) {
if (!RabiClone.reloadControllerList) {
int y = 4;
if (!assigningKey) {
selectedAction=null;
@ -237,6 +235,9 @@ public class ConfigureControls extends Object{
} else {
Draw_Text_Ext(4, 4, new String("Press a key to assign to ").append(selectedAction), Font.PROFONT_12, Alpha.ALPHA0, PaletteColor.MIDNIGHT_BLUE);
}
} else {
Draw_Text_Ext(4, 4, new String("Preparing controller list..."), Font.PROFONT_12, Alpha.ALPHA0, PaletteColor.MIDNIGHT_BLUE);
}
}
@Override

Loading…
Cancel
Save