package regalowl.hyperconomy; import java.util.concurrent.CopyOnWriteArrayList; public class HyperEventHandler { private CopyOnWriteArrayList<DataLoadListener> dataLoadListeners = new CopyOnWriteArrayList<DataLoadListener>(); private CopyOnWriteArrayList<TransactionListener> transactionListeners = new CopyOnWriteArrayList<TransactionListener>(); private CopyOnWriteArrayList<ShopCreationListener> shopCreationListeners = new CopyOnWriteArrayList<ShopCreationListener>(); public void clearListeners() { dataLoadListeners.clear(); transactionListeners.clear(); shopCreationListeners.clear(); } public synchronized void registerDataLoadListener(DataLoadListener listener) { dataLoadListeners.add(listener); } public synchronized void fireDataLoadEvent() { for (DataLoadListener listener : dataLoadListeners) { listener.onDataLoad(); } } public synchronized void registerTransactionListener(TransactionListener listener) { transactionListeners.add(listener); } public synchronized void fireTransactionEvent(PlayerTransaction transaction, TransactionResponse response) { for (TransactionListener listener : transactionListeners) { listener.onTransaction(transaction, response); } } public synchronized void registerShopCreationListener(ShopCreationListener listener) { shopCreationListeners.add(listener); } public synchronized void fireShopCreationEvent(Shop s) { for (ShopCreationListener listener : shopCreationListeners) { listener.onShopCreation(s); } } }