2つのイベントがあるとします:Action1とAction2。Action1を受け取ったときに、次にAction2が回転するときに使用する任意のデータを保存する必要があります。最適には、Action1は通常コマンドですが、他のイベントにすることもできます。考え方は同じです。
これを実装する現在の方法は、状態を格納し、特定の状態が存在する場合にAction2が呼び出されたときに単純にチェックすることです。これは明らかに少し厄介であり、多くの冗長なコードにつながります。これが私がこれをどのように行っているかの例を、疑似コードの形式で(そして明らかにかなり細かく分解して)示します。
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
}
他の多くのアクションでこれを行うと、それはやや醜くなり、それを改善するために私にできることがあるかどうか知りたいと思いました。
データを渡す必要がないようなものを考えていましたが、これも正しい方向ではありませんか?
void onAction1(event) {
Player = event.getPlayer()
Player.onAction2(new Runnable() {
public void run() {
// Do something
}
})
}
それをさらに進めたい場合は、単にこれを行うことはできませんか?
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.
}
どんな入力でも素晴らしいでしょう。