# Final Countdown
## A working game
Need a
```java=
setOnObjectDestroyed(GameObject objet)
```
### Features Needed:
public void movePlayer() {
player.setMode("running")
}
- Scores. "Coins"
- Animation: Let's not worry
-
**Systems Required**
- Health System
- ScoreSystem
```java=
public class UISystem implements ObservableStatistics {
Map<String, Supplier<UIElement>> callbacks;
public void registerUICallbacks();
public void update() {
String currPlayerHealth = callback.get("playerHealth").get();
consumer.accept(currPlayerHealth);
}
}
public class HealthSystem {
private HealthComponent mainPlayerHealth
public HealthSystem() {
registerStatistic("playerHealth", this::getMainHealth)
}
private String getMainHealth() {
return mainPlayer.health;
}
}
```
```java=
public class BaseClass {
MultiMap<String, Supplier<String>>
```
```java=
public class StatisticManager implements ObservableStatistics {
MultiMap<String, Supplier<String>> callbacks;
MultiMap<String, Consumer<String>> viewCallbacks;
public void setOnStatisticUpdate(String statistic, Consumer<String> consumer) {
viewCallbacks.put(statistic, consumer);
public void update() {
viewCallbacks.forEach( (key, value) -> {
}
public List<String> getTrackableStatistics() {
return callbacks.keys();
}
}
{
"view": {
"statistics": [
{
name: "playerHealth",
}
]
}
}
public class HealthSystem {
Map<String, Consumer<UIElement>> callbacks;
enum STATISTIC {
HEALTH_UPDATE, STOP_DOING_DRUGS, SMOKING_IS_BAD
}
private HealthComponent mainPlayerHealth;
public HealthSystem() {
registerInfo("playerHealth", this::getMainHealth)
}
public void registerViewCallback(STATISTIC thing, Consumer<> consumer) {
}
public void update() {
// update health
callbacks.get("playerHealth").accept(...);
}
}
```