Digamos que você tenha dois eventos: Ação1 e Ação2. Ao receber o Action1, você deseja armazenar alguns dados arbitrários a serem usados na próxima vez que o Action2 for lançado. Idealmente, o Action1 normalmente é um comando, mas também pode ser outros eventos. A ideia ainda é a mesma.
A maneira atual de implementar isso é armazenando o estado e simplesmente verificando quando o Action2 é chamado, se esse estado específico estiver lá. Obviamente, isso é um pouco confuso e gera muitos códigos redundantes. Aqui está um exemplo de como estou fazendo isso, na forma de pseudocódigo (e dividido bastante, obviamente):
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
}
Ao fazer isso para muitas outras ações, fica um pouco feio e eu queria saber se há algo que eu possa fazer para melhorar isso.
Eu estava pensando em algo assim, que não exigiria a transmissão de dados, mas isso também não é a direção certa?
void onAction1(event) {
Player = event.getPlayer()
Player.onAction2(new Runnable() {
public void run() {
// Do something
}
})
}
Se alguém quisesse ir ainda mais longe, você não poderia simplesmente fazer isso?
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.
}
Qualquer contribuição seria maravilhosa.