package logistics; import logistics.material.BulletBelts; import logistics.material.LiterDiesel; import logistics.quantities.NeedCollector; import logistics.storage.FloatStorage; import logistics.storage.IntStorage; public class Truck extends Vehicle { private final FloatStorage tank; private final IntStorage bullets; public Truck(String name, float diesel, int bullets) { super(name); this.tank = new FloatStorage(diesel, LiterDiesel.INSTANCE, 180); this.bullets = new IntStorage(bullets, BulletBelts.INSTANCE, 3); } @Override public void consumeAll(int intensity) { oil.consume(1); grease.consume(1); tank.consume(intensity * 25); bullets.consume(intensity * 2); } @Override public void reportNeeds(NeedCollector collector) { oil.reportNeed(collector); grease.reportNeed(collector); tank.reportNeed(collector); bullets.reportNeed(collector); } @Override public void fillUpAll() { oil.fillUp(); grease.fillUp(); tank.fillUp(); bullets.fillUp(); } }