Ваш EventDispatcher
не должен проверять все возможные условия и уведомлять всех возможных слушателей.Просто оповестите слушателей, зарегистрированных на определенный тип события.
Зарегистрируйте Player
чтобы получать уведомления в зависимости от игрового события
eventDispatcher.register(player, Events.RESOURCE_DEPLETION_EVENT);
Тогда ваш Resource
будет предоставлять событие, когда ресурсы достигнут 0
class Resource {
public void deplete(int amount) {
this.amount -= amount;
if (this.amount <= 0)
eventDispatcher.notify(this, Events.RESOURCE_DEPLETION_EVENT);
}
}
В противном случае вы получите большой цикл событий, содержащий логику, который снижает производительность и затрудняет отладку.