auto haul logs on creation

pull/1/head
valyrie97 2023-01-01 04:07:49 -05:00
parent 6f977bd972
commit fa654bac35
1 changed files with 35 additions and 8 deletions

View File

@ -20,6 +20,14 @@ public abstract class Item extends WorldObject implements ISelectable, ITileThin
@Override @Override
public void start() { public void start() {
super.start(); super.start();
if(jobboard == null) {
jobboard = get(JobBoard.class);
markForHaul();
}
}
protected boolean haulOnCreate() {
return true;
} }
@Override @Override
@ -44,7 +52,7 @@ public abstract class Item extends WorldObject implements ISelectable, ITileThin
@Override @Override
public void renderAlpha() { public void renderAlpha() {
if(haulJob != null) { if(haulJob != null) {
Assets.flat.pushColor(Vector4f.opacity(0.6f)); Assets.flat.pushColor(Vector4f.opacity(0.4f));
camera.draw(Layers.GENERAL_UI, Assets.haulArrow, getWorldPosition()); camera.draw(Layers.GENERAL_UI, Assets.haulArrow, getWorldPosition());
Assets.flat.popColor(); Assets.flat.popColor();
} }
@ -53,14 +61,33 @@ public abstract class Item extends WorldObject implements ISelectable, ITileThin
@Override @Override
public void runAction(Action action) { public void runAction(Action action) {
if (action == ACTION_HAUL) { if (action == ACTION_HAUL) {
toggleHaul();
}
}
private void toggleHaul() {
if(haulJob == null) {
markForHaul();
} else {
cancelHaul();
}
}
private void cancelHaul() {
if(haulJob == null) return;
jobboard.rescindJob(haulJob);
haulJob = null;
}
private void markForHaul() {
if(haulJob != null) return;
haulJob = add(new Job("Haul " + this.getName())); haulJob = add(new Job("Haul " + this.getName()));
haulJob.addStep(haulJob.new PickupItem(this, new Vector2f[] { this.getWorldPosition() })); haulJob.addStep(haulJob.new PickupItem(this, new Vector2f[] { this.getWorldPosition() }));
haulJob.addStep(haulJob.new DropoffAtStockpile(this)); haulJob.addStep(haulJob.new DropoffAtStockpile(this));
haulJob.registerClosedListener(() -> { haulJob.registerClosedListener(() -> {
haulJob = null; haulJob = null;
}); });
get(JobBoard.class).postJob(haulJob); jobboard.postJob(haulJob);
}
} }
@Override @Override