diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Job.java b/src/main/java/xyz/valnet/hadean/gameobjects/Job.java index 9c53a2a..de8b9eb 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Job.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Job.java @@ -72,8 +72,8 @@ public class Job extends GameObject { public Vector2i[] getLocations() { return subject.getWorkablePositions(); } - public boolean doWork() { - return subject.doWork(); + public boolean doWork(float dTime) { + return subject.doWork(dTime); } @Override diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Tile.java b/src/main/java/xyz/valnet/hadean/gameobjects/Tile.java index 8a2e7f5..0c99a05 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Tile.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Tile.java @@ -168,8 +168,8 @@ public class Tile extends WorldObject implements IWorkable { } @Override - public boolean doWork() { - tillLevel += 0.005f; + public boolean doWork(float dTime) { + tillLevel += 0.005f * dTime; tillLevel = Math.min(tillLevel, 1); return tillLevel >= 1; } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/SelectionLayer.java b/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/SelectionLayer.java index 7114d7b..cb38a67 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/SelectionLayer.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/SelectionLayer.java @@ -49,7 +49,7 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr @Override public void update(float dTime) { - if(animation < animationMax) animation ++; + if(animation < animationMax) animation += dTime; if(animation > animationMax) animation = animationMax; // if(!active) return; diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Tree.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Tree.java index 0315f07..efef0b9 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Tree.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Tree.java @@ -87,8 +87,8 @@ public class Tree extends WorldObject implements ITileThing, ISelectable, IWorka } @Override - public boolean doWork() { - choppage ++; + public boolean doWork(float dTime) { + choppage += dTime; return getProgress() >= 1; } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Activity.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Activity.java index 00eb8a1..7133b3f 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Activity.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Activity.java @@ -14,7 +14,7 @@ public abstract class Activity implements Serializable { public abstract boolean isUrgent(); public abstract float getBenefit(); public abstract boolean isValid(); - public abstract void act(); + public abstract void act(float dTime); public abstract void begin(ActivityCancellationCallback callback); public abstract void end(); public abstract String toString(); diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/JobActivity.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/JobActivity.java index d513320..3f15a04 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/JobActivity.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/JobActivity.java @@ -32,8 +32,8 @@ public class JobActivity extends Activity { } @Override - public void act() { - if (doJob()) return; + public void act(float dTime) { + if (doJob(dTime)) return; } @@ -83,7 +83,7 @@ public class JobActivity extends Activity { job = null; } - private boolean doJob() { + private boolean doJob(float dTime) { if(!jobboard.workerHasJob(worker)) return false; JobStep step = job.getCurrentStep(); // if we're not at the location of the job... @@ -91,7 +91,7 @@ public class JobActivity extends Activity { if(step instanceof Job.Work) { Job.Work workStep = (Job.Work)step; - if(workStep.doWork()) step.next(); + if(workStep.doWork(dTime)) step.next(); return true; } else if(step instanceof Job.PickupItem) { Job.PickupItem pickupStep = (Job.PickupItem) step; diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Needs.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Needs.java index 0d10e08..0b9f821 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Needs.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Needs.java @@ -14,12 +14,12 @@ public class Needs implements Serializable { private float decay = 0.000004f; public void update(float dTime) { - energy = Math.max(energy - decay, 0); - recreation = Math.max(recreation - decay, 0); + energy = Math.max(energy - decay * dTime, 0); + recreation = Math.max(recreation - decay * dTime, 0); } - public void sleep() { - energy = Math.min(energy + decay * restRatio, 1); + public void sleep(float dTime) { + energy = Math.min(energy + decay * dTime * restRatio, 1); } public float getSleepNeed() { diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Pawn.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Pawn.java index 835203c..5a4ad92 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Pawn.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/Pawn.java @@ -177,11 +177,11 @@ public class Pawn extends Agent { // TODO at some point rewrite this to use an actor component array // where we loop through until something _does_ sometihng. @Override - protected boolean act() { - if(super.act()) return true; + protected boolean act(float dTime) { + if(super.act(dTime)) return true; // if(doJob()) return true; if(currentActivity != null) { - currentActivity.act(); + currentActivity.act(dTime); return true; } return false; diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/SleepActivity.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/SleepActivity.java index 24b80e3..b6c510a 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/SleepActivity.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/SleepActivity.java @@ -47,8 +47,8 @@ public class SleepActivity extends Activity { } @Override - public void act() { - needs.sleep(); + public void act(float dTime) { + needs.sleep(dTime); if(needs.getSleepNeed() == 0) { callback.apply(this); } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/WanderActivity.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/WanderActivity.java index 3590285..cace818 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/WanderActivity.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/pawn/WanderActivity.java @@ -29,7 +29,7 @@ public class WanderActivity extends Activity { } @Override - public void act() { + public void act(float dTime) { // since wandering is literally just pathing. } diff --git a/src/main/java/xyz/valnet/hadean/interfaces/IWorkable.java b/src/main/java/xyz/valnet/hadean/interfaces/IWorkable.java index a912fc9..bdcef68 100644 --- a/src/main/java/xyz/valnet/hadean/interfaces/IWorkable.java +++ b/src/main/java/xyz/valnet/hadean/interfaces/IWorkable.java @@ -3,7 +3,7 @@ package xyz.valnet.hadean.interfaces; import xyz.valnet.engine.math.Vector2i; public interface IWorkable { - public boolean doWork(); + public boolean doWork(float dTime); public Vector2i[] getWorkablePositions(); public String getJobName(); }