Angenommen, Sie haben zwei Ereignisse: Aktion1 und Aktion2. Wenn Sie Action1 erhalten, möchten Sie einige beliebige Daten speichern, die beim nächsten Rolling von Action2 verwendet werden sollen. Optimalerweise ist Aktion1 normalerweise ein Befehl, es können jedoch auch andere Ereignisse sein. Die Idee ist immer noch dieselbe.
Die aktuelle Art, wie ich dies implementiere, besteht darin, den Status zu speichern und dann einfach zu überprüfen, wann Action2 aufgerufen wird, ob dieser bestimmte Status vorhanden ist. Dies ist offensichtlich etwas chaotisch und führt zu viel redundantem Code. Hier ist ein Beispiel dafür, wie ich das mache, in Pseudocode-Form (und offensichtlich ziemlich aufgeschlüsselt):
void onAction1(event) {
Player = event.getPlayer()
Player.addState("my_action_to_do")
}
void onAction2(event) {
Player = event.getPlayer()
if not Player.hasState("my_action_to_do") {
return
}
// Do something
}
Wenn ich dies für viele andere Aktionen mache, wird es etwas hässlich und ich wollte wissen, ob ich etwas tun kann, um es zu verbessern.
Ich dachte an so etwas, für das keine Daten weitergegeben werden müssten, aber ist das auch nicht die richtige Richtung?
void onAction1(event) {
Player = event.getPlayer()
Player.onAction2(new Runnable() {
public void run() {
// Do something
}
})
}
Wenn man noch weiter gehen wollte, konnte man das nicht einfach tun?
void onPlayerEnter(event) { // When they join the server
Player = event.getPlayer()
Player.onAction1(new Runnable() {
public void run() {
// Now wait for action 2
Player.onAction2(new Runnable() {
// Do something
})
}
}, true) // TRUE would be to repeat the event,
// not remove it after it is called.
}
Jede Eingabe wäre wunderbar.