diff --git a/src/opensesim/world/Account.java b/src/opensesim/world/Account.java index 3021e6c..cc2e259 100644 --- a/src/opensesim/world/Account.java +++ b/src/opensesim/world/Account.java @@ -27,7 +27,10 @@ package opensesim.world; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import opensesim.util.scheduler.Event; +import opensesim.util.scheduler.EventListener; import org.json.JSONObject; /** @@ -67,11 +70,19 @@ public class Account { } - void add(AssetPack pack) { + synchronized void add(AssetPack pack) { assets.put(pack.asset, get(pack.asset) + pack.volume); assets_avail.put(pack.asset, getAvail(pack.asset) + pack.volume); } + synchronized void sub(AssetPack pack) { + assets.put(pack.asset, get(pack.asset) - pack.volume); + // assets_avail.put(pack.asset, getAvail(pack.asset) - pack.volume); + } + + + + public double get(AbstractAsset asset) { return assets.getOrDefault(asset, 0.0); } @@ -79,4 +90,21 @@ public class Account { public double getAvail(AbstractAsset asset) { return assets_avail.getOrDefault(asset, 0.0); } + + public void addAvail(AbstractAsset asset, double val) { + double avail = getAvail(asset); + assets_avail.put(asset, avail+val); + } + + HashSet listeners = new HashSet<>(); + public void addListener(EventListener l){ + listeners.add(l); + } + + public void notfiyListeners(){ + Event e = new Event() {}; + for(EventListener l: listeners){ + l.receive(e); + } + } }