-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Core: Modellierung der KeyboardConfig überdenken #1544
Comments
@cagix Was ist deine Meinung dazu? |
Mir fehlt ehrlich gesagt der Überblick. Im Prinzip bin ich komplett bei Dir, aber am Ende braucht das vielleicht doch irgendwer irgendwo? Und so lange die DSL nicht de-integriert ist und noch so fies tief in Edit: @Flamtky Ein wenig liegt es auch an der nachträglichen Trennung eines Gesamtprojekts in ein absolutes "Bare"-Framework ( |
Stimme ich zu, aber das Movement wird erst im |
Ja, vermutlich. Davon abgesehen gefällt mir die Art der Umsetzung nicht mal ansatzweise. Man will eigentlich ein Enum haben, welches man überschreiben kann - das gibt es aber so in Java nicht. Nur die vorliegende Umsetzung ist einfach nur schräg.
Konsequent wäre, das in Dev-Dungeon zu machen 🤪 Aber das macht es nicht besser. Insofern ja, packe es mit nach |
Klingt eher nach einer simplen (String-/Char-/Key-...) Map (und Methoden zum Ändern/Hinzufügen) ... Eine Map, die die Zuordnungen vordefiniert, und noch eine Map, in der die aktuellen Zuordnungen gespeichert werden. Aber das ist nur (schnell, nicht gründlich) von oben betrachtet. |
Wir haben drei Stufen:
Und (3) soll nun noch dynamisch passieren, also per Einlesen aus einem File oder per Konfiguration aus der DSL oder per Konfiguration in einer Java-Klasse für ein konkretes Spiel. Damit der Code kompilierbar ist, brauchen wir sowas wie Konstanten. Das schreit eigentlich nach Enum - da könnte man auch die Werte (Key-Codes) gut verpacken. Nur muss das (a) zur Compile-Zeit feststehen und (b) kann man das nicht erweitern (Enums können nicht voneinander ableiten). Einfach nur einen Satz Konstanten ala Mir fehlt grad ein wenig die Fantasie, wie mir Maps da helfen könnten. Ich kann zwar eine |
Ganz grob hatte ich an so etwas gedacht (aber vielleicht falsch beschrieben): import com.badlogic.gdx.Input;
import java.util.HashMap;
import java.util.Map;
public class KeyRegistryExample {
private static Map<Integer, String> keyActionMap = new HashMap<>();
private static Map<String, Integer> actionKeyMap = new HashMap<>();
static {
// Default key bindings
// Hint: See com.badlogic.gdx.Input.Keys.toString for a list of key names
addKeyAction("Up", "moveUp");
addKeyAction("Down", "moveDown");
addKeyAction("Left", "moveLeft");
addKeyAction("Right", "moveRight");
}
public static void addKeyAction(String keyName, String action) {
addKeyAction(Input.Keys.valueOf(keyName), action);
}
private static void addKeyAction(int key, String action) {
keyActionMap.put(key, action);
actionKeyMap.put(action, key);
}
public static String getKeyForAction(String action) {
return Input.Keys.toString(actionKeyMap.get(action));
}
public static String getActionForKey(String keyName) {
return keyActionMap.get(Input.Keys.valueOf(keyName));
}
} Also, man speichert für die ~256 möglichen Keys Strings. Damit wäre libgbx gekapselt und wir könnten eine "Standardbelegung" vorgeben. Als "Action" habe ich hier im Beispiel einfach auch Strings verwendet. |
@tgrothe ich glaube, so einfach wird das nicht. im code sollten konstanten für die tasten nutzbar sein, die einen gemeinsamen typ haben, und deren einsatz vom compiler geprüft wird. dieses stringbasierte nachschlagen in maps finde ich furchtbar, das muss auch bei den texturen/animationen noch deutlich besser werden. die map für die verknüpfung taste/aktion haben wir an sich ja bereits - aktuell werden die konstanten für die tasten vom programmierer eines konkreten spiels selbst definiert und dann in der playercomponent mit einer action verknüpft. das problem ist nur, dass die tasten nicht in |
|
Ich finde es ja schon unnötig 3
KeyboardConfig
Dateien zu haben.Einmal haben wir die:
Jetzt habe ich noch die Implementierung von der Maussteuerung und den Cursor-Tasten. Sollen die jetzt neben den anderen Bewegungs-Tasten in
game
oder doch lieber in Dungeon weil da auch dieHeroFactory
ist wo das überhaupt auch erst verwendet wird? Später kommt auch noch die Steuerung von dem UI für die Maus.Um zum Punkt zu kommen. Warum überhaupt die Steuerung in
game
definieren wenn doch eh die erst inDungeon
benutzt wird? So wäre es doch sinnvoll Game's KeyboardConfig zu verschieben und mit reinzumergen in z.B. Dungeon's KeyboardConfigThe text was updated successfully, but these errors were encountered: