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
public void start() {
super.start();
if(jobboard == null) {
jobboard = get(JobBoard.class);
markForHaul();
}
}
protected boolean haulOnCreate() {
return true;
}
@Override
@ -44,7 +52,7 @@ public abstract class Item extends WorldObject implements ISelectable, ITileThin
@Override
public void renderAlpha() {
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());
Assets.flat.popColor();
}
@ -53,16 +61,35 @@ public abstract class Item extends WorldObject implements ISelectable, ITileThin
@Override
public void runAction(Action action) {
if (action == ACTION_HAUL) {
haulJob = add(new Job("Haul " + this.getName()));
haulJob.addStep(haulJob.new PickupItem(this, new Vector2f[] { this.getWorldPosition() }));
haulJob.addStep(haulJob.new DropoffAtStockpile(this));
haulJob.registerClosedListener(() -> {
haulJob = null;
});
get(JobBoard.class).postJob(haulJob);
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.addStep(haulJob.new PickupItem(this, new Vector2f[] { this.getWorldPosition() }));
haulJob.addStep(haulJob.new DropoffAtStockpile(this));
haulJob.registerClosedListener(() -> {
haulJob = null;
});
jobboard.postJob(haulJob);
}
@Override
public void onPlaced(Tile tile) {
this.x = tile.getCoords().x;