Giả sử bạn có hai sự kiện: Action1 và Action2. Khi bạn nhận được Action1, bạn muốn lưu trữ một số dữ liệu tùy ý sẽ được sử dụng vào lần tiếp theo Action2 xuất hiện. Tối ưu, Action1 thường là một lệnh tuy nhiên nó cũng có thể là các sự kiện khác. Ý tưởng vẫn vậy.
Cách hiện tại tôi đang thực hiện điều này là bằng cách lưu trữ trạng thái và sau đó chỉ cần kiểm tra khi Action2 được gọi nếu trạng thái cụ thể đó ở đó. Điều này rõ ràng là một chút lộn xộn và dẫn đến rất nhiều mã dư thừa. Đây là một ví dụ về cách tôi đang làm điều đó, ở dạng mã giả (và bị phá vỡ khá nhiều, rõ ràng):
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
}
Khi làm điều này cho rất nhiều hành động khác, nó trở nên hơi xấu và tôi muốn biết liệu tôi có thể làm gì để cải thiện nó không.
Tôi đã nghĩ về một cái gì đó như thế này, sẽ không yêu cầu truyền dữ liệu xung quanh, nhưng đây có phải là hướng đi đúng không?
void onAction1(event) {
Player = event.getPlayer()
Player.onAction2(new Runnable() {
public void run() {
// Do something
}
})
}
Nếu một người muốn đưa nó đi xa hơn, bạn có thể không đơn giản làm điều này?
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.
}
Bất kỳ đầu vào sẽ là tuyệt vời.