diff --git a/.fleet/run.json b/.fleet/run.json deleted file mode 100644 index 822a3ba..0000000 --- a/.fleet/run.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "configurations": [ - - ] -} \ No newline at end of file diff --git a/src/main/java/xyz/valnet/engine/scenegraph/GameObject.java b/src/main/java/xyz/valnet/engine/scenegraph/GameObject.java index b1a3424..b8e1d85 100644 --- a/src/main/java/xyz/valnet/engine/scenegraph/GameObject.java +++ b/src/main/java/xyz/valnet/engine/scenegraph/GameObject.java @@ -10,6 +10,7 @@ public class GameObject implements IRenderable, ITickable, Serializable { public void link(SceneGraph scene) { this.scene = scene; + this.ready(); } public boolean inScene() { @@ -45,6 +46,10 @@ public class GameObject implements IRenderable, ITickable, Serializable { @Override public void update(float dTime) {} + // call order goes from top to bottom \/\/\/ + // ready is called before scene linkage, and serves to initialize + // values that may be needed before incoming requests. + protected void ready() {} // connect is solely for ensuring links to other objects. get() and getAll() protected void connect() {} // create is guaranteed to only run once for an object, even after save/load diff --git a/src/main/java/xyz/valnet/engine/scenegraph/SceneGraph.java b/src/main/java/xyz/valnet/engine/scenegraph/SceneGraph.java index 6104026..c18b191 100644 --- a/src/main/java/xyz/valnet/engine/scenegraph/SceneGraph.java +++ b/src/main/java/xyz/valnet/engine/scenegraph/SceneGraph.java @@ -206,8 +206,9 @@ public abstract class SceneGraph implements IScene { objects.addAll(newObjects); - for(GameObject obj : objects) obj.link(this); - for(GameObject obj : objects) obj.addedToScene(); + for(GameObject obj : newObjects) obj.link(this); + for(GameObject obj : newObjects) obj.addedToScene(); + } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Clock.java b/src/main/java/xyz/valnet/hadean/gameobjects/Clock.java index a38080c..fd0dc02 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Clock.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Clock.java @@ -10,11 +10,6 @@ public class Clock extends GameObject { private float time = 12; - @Override - public void start() { - - } - @Override public void update(float dTime) { time += 0.0004f; diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Terrain.java b/src/main/java/xyz/valnet/hadean/gameobjects/Terrain.java index 55d6d57..12e2ba9 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Terrain.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Terrain.java @@ -24,20 +24,23 @@ public class Terrain extends GameObject implements IPathable, IWorldBoundsAdapte private Camera camera; - public void start() { + @Override + protected void create() { for (int i = 0; i < WORLD_SIZE; i++) { for (int j = 0; j < WORLD_SIZE; j++) { tiles[i][j] = new Tile(i, j); add(tiles[i][j]); } } + } - // Tile randomTile = getRandomTile(); - // Vector2i coords = randomTile.getCoords(); - // Stockpile stockpile = new Stockpile(coords.x, coords.y); - // randomTile.placeThing(stockpile); - + @Override + protected void connect() { camera = get(Camera.class); + } + + @Override + protected void start() { camera.focus(WORLD_SIZE / 2, WORLD_SIZE / 2); } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/Tile.java b/src/main/java/xyz/valnet/hadean/gameobjects/Tile.java index 1ba686c..60fb849 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/Tile.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/Tile.java @@ -45,11 +45,6 @@ public class Tile extends WorldObject implements IWorkable { public void start() { super.start(); - // if(Math.random() > 0.97) { - // Tree tree = new Tree((int)x, (int)y); - // stuff.add(tree); - // add(tree); - // } float scale = 1; @@ -58,7 +53,15 @@ public class Tile extends WorldObject implements IWorkable { float blue = (float) terrain.getNoise(blueSeed, x * scale, y * scale); if(color == null) color = new Vector4f(red * 0.1f, 0.4f + green * 0.15f, blue * 0.05f, 1f); - // color = new Vector4f(red, green, blue, 1.0f); + } + + @Override + protected void create() { + if(Math.random() > 0.97) { + Tree tree = new Tree((int)x, (int)y); + stuff.add(tree); + add(tree); + } } public boolean isTileFree() { diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/BuildLayer.java b/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/BuildLayer.java index a366813..7423070 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/BuildLayer.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/inputlayer/BuildLayer.java @@ -21,7 +21,7 @@ public class BuildLayer extends GameObject implements IMouseCaptureArea, ITransi private IBuildLayerListener listener = null; @Override - public void start() { + protected void connect() { camera = get(Camera.class); } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/ui/HoverQuery.java b/src/main/java/xyz/valnet/hadean/gameobjects/ui/HoverQuery.java index 3a63fa2..3849d48 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/ui/HoverQuery.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/ui/HoverQuery.java @@ -19,8 +19,8 @@ public class HoverQuery extends GameObject implements ITransient { private Camera camera; @Override - public void start() { - super.start(); + protected void connect() { + super.connect(); camera = get(Camera.class); } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/JobBoardTab.java b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/JobBoardTab.java index 293f9e1..818922b 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/JobBoardTab.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/JobBoardTab.java @@ -13,14 +13,13 @@ import xyz.valnet.hadean.interfaces.ISelectable; import xyz.valnet.hadean.interfaces.ISelectionChangeListener; import xyz.valnet.hadean.util.Assets; import xyz.valnet.hadean.util.Layers; -import xyz.valnet.hadean.util.SmartBoolean; public class JobBoardTab extends Tab implements ISelectionChangeListener { private SelectionLayer selection; private JobBoard jobBoard; - private SmartBoolean opened; + private boolean opened; private float progress = 0f; private float width = 200; @@ -35,35 +34,36 @@ public class JobBoardTab extends Tab implements ISelectionChangeListener { } @Override - public void start() { - super.start(); + protected void connect() { + super.connect(); selection = get(SelectionLayer.class); jobBoard = get(JobBoard.class); - - opened = new SmartBoolean(false, new SmartBoolean.IListener() { - }); + } + + @Override + public void start() { + super.start(); + opened = false; + if(selection != null) selection.subscribe(this); - if(selection != null) { - selection.subscribe(this); - } } @Override public void update(float dTime) { - progress = lerp(progress, opened.value() ? 1 : 0, 0.05f); + progress = lerp(progress, opened ? 1 : 0, 0.05f); } @Override public void selectionChanged(List selected) { if(selected.isEmpty()) return; - opened.set(false); + opened = false; } @Override public void evoke() { - opened.toggle(); + opened = !opened; - if(opened.value()) { + if(opened) { selection.updateSelection(new ArrayList()); } } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/Tab.java b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/Tab.java index 1da55fa..11bd03a 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/Tab.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/ui/tabs/Tab.java @@ -10,8 +10,12 @@ public abstract class Tab extends GameObject implements IBottomBarItem, ITransie private BottomBar bottombar; @Override - public void start() { + protected void connect() { bottombar = get(BottomBar.class); + } + + @Override + protected void start() { bottombar.registerButton(this); } } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Stockpile.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Stockpile.java index 8f98b87..23f343c 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Stockpile.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/Stockpile.java @@ -56,11 +56,6 @@ public class Stockpile extends WorldObject implements ISelectable, ITileThing, I return null; } - @Override - public void start() { - super.start(); - } - @Override public Vector4f getWorldBox() { return new Vector4f(x, y, x + w, y + h); diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/WorldObject.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/WorldObject.java index 62dad70..30415d5 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/WorldObject.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/WorldObject.java @@ -16,7 +16,7 @@ public abstract class WorldObject extends GameObject { protected Terrain terrain; @Override - public void start() { + protected void connect() { camera = get(Camera.class); terrain = get(Terrain.class); } diff --git a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/items/Item.java b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/items/Item.java index f9670cd..f89ebc2 100644 --- a/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/items/Item.java +++ b/src/main/java/xyz/valnet/hadean/gameobjects/worldobjects/items/Item.java @@ -18,12 +18,14 @@ public abstract class Item extends WorldObject implements ISelectable, ITileThin private Job haulJob = null; @Override - public void start() { - super.start(); - if(jobboard == null) { - jobboard = get(JobBoard.class); - markForHaul(); - } + protected void connect() { + super.connect(); + jobboard = get(JobBoard.class); + } + + protected void create() { + super.create(); + if(haulOnCreate()) markForHaul(); } protected boolean haulOnCreate() { 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 de0d13b..835203c 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 @@ -33,7 +33,7 @@ public class Pawn extends Agent { // private float workEthic = (float) Math.random(); // private float selfWorth = (float) Math.random(); - private List activities = new ArrayList(); + private transient List activities = new ArrayList(); private Activity currentActivity = null; public void pickupItem(Item i) { @@ -52,15 +52,23 @@ public class Pawn extends Agent { getTile().placeThing(item); } + @Override + protected void ready() { + super.ready(); + activities = new ArrayList(); + } + @Override public void start() { super.start(); - x = (int) (Math.random() * Terrain.WORLD_SIZE); - y = (int) (Math.random() * Terrain.WORLD_SIZE); activities.add(new JobActivity(this, get(JobBoard.class))); activities.add(new SleepActivity(this, needs, get(Clock.class))); - // activities.add(new WanderActivity()); + } + + protected void create() { + x = (int) (Math.random() * Terrain.WORLD_SIZE); + y = (int) (Math.random() * Terrain.WORLD_SIZE); } @Override