pausing
parent
5374bcaaeb
commit
175d572903
|
|
@ -81,4 +81,8 @@ public class GameObject implements IRenderable, ITickable, Serializable {
|
|||
protected boolean getKey(int key) {
|
||||
return scene.getKey(key);
|
||||
}
|
||||
|
||||
protected boolean isPaused() {
|
||||
return scene.isPaused();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
package xyz.valnet.engine.scenegraph;
|
||||
|
||||
public interface IPauser {
|
||||
public boolean isPaused();
|
||||
}
|
||||
|
|
@ -2,4 +2,5 @@ package xyz.valnet.engine.scenegraph;
|
|||
|
||||
public interface ITickable {
|
||||
public void update(float dTime);
|
||||
public default void fixedUpdate(float dTime) {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,9 +72,24 @@ public abstract class SceneGraph implements IScene {
|
|||
if(saveFlag) save();
|
||||
if(loadFlag) load();
|
||||
|
||||
// TICK OBJECTS
|
||||
paused = false;
|
||||
for(IPauser pauser : pausers) {
|
||||
if(pauser.isPaused()) {
|
||||
paused = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!paused) {
|
||||
// TICK OBJECTS
|
||||
for(GameObject obj : objects) {
|
||||
obj.update(dTime);
|
||||
}
|
||||
}
|
||||
|
||||
// fixed TICK OBJECTS
|
||||
for(GameObject obj : objects) {
|
||||
obj.update(dTime);
|
||||
obj.fixedUpdate(dTime);
|
||||
}
|
||||
|
||||
mouseUpdate();
|
||||
|
|
@ -114,10 +129,20 @@ public abstract class SceneGraph implements IScene {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean paused = false;
|
||||
|
||||
public boolean isPaused() {
|
||||
return paused;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
this.construct();
|
||||
|
||||
for(GameObject obj : objects) {
|
||||
addObjectToCache(obj);
|
||||
}
|
||||
|
||||
for(GameObject obj : objects) {
|
||||
obj.link(this);
|
||||
}
|
||||
|
|
@ -144,10 +169,19 @@ public abstract class SceneGraph implements IScene {
|
|||
objects.clear();
|
||||
}
|
||||
|
||||
private Set<IPauser> pausers = new HashSet<IPauser>();
|
||||
|
||||
public void add(GameObject obj) {
|
||||
newObjects.add(obj);
|
||||
obj.link(this);
|
||||
obj.addedToScene();
|
||||
addObjectToCache(obj);
|
||||
}
|
||||
|
||||
private void addObjectToCache(GameObject obj) {
|
||||
if(obj instanceof IPauser) {
|
||||
pausers.add((IPauser) obj);
|
||||
}
|
||||
}
|
||||
|
||||
public void remove(GameObject obj) {
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class SelectionUI extends ImmediateUI implements ISelectionChangeListener
|
|||
}
|
||||
|
||||
@Override
|
||||
public void update(float dTime) {
|
||||
public void fixedUpdate(float dTime) {
|
||||
openness = lerp(openness, opened ? 1 : 0, dTime / Constants.animationSpeed);
|
||||
if(newSelection != null) {
|
||||
selectionManager.updateSelection(newSelection);
|
||||
|
|
|
|||
|
|
@ -197,6 +197,7 @@ public class SelectionLayer extends GameObject implements IMouseCaptureArea, ITr
|
|||
@Override
|
||||
public void mouseDown(int button) {
|
||||
if(!active) return;
|
||||
if(isPaused()) return;
|
||||
|
||||
if(button == 0) {
|
||||
if(initialCoords == null) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package xyz.valnet.hadean.gameobjects.ui.tabs;
|
||||
|
||||
public class MenuTab extends Tab {
|
||||
import xyz.valnet.engine.scenegraph.IPauser;
|
||||
|
||||
public class MenuTab extends Tab implements IPauser {
|
||||
|
||||
private int width = 300;
|
||||
private int height = 6 * 32 + 9 * 8;
|
||||
private int height = 6 * 32 + 1 * 16 + 6 * 8 + 2 * 24;
|
||||
|
||||
@Override
|
||||
protected void onClose() {
|
||||
|
|
@ -18,12 +20,14 @@ public class MenuTab extends Tab {
|
|||
@Override
|
||||
protected void gui() {
|
||||
window(1024 / 2 - width / 2, animate(-height - 50, 576 / 2 - height / 2), width, height, () -> {
|
||||
text(" === Paused ===");
|
||||
space(8);
|
||||
if(button("Resume")) {
|
||||
close();
|
||||
}
|
||||
space(24);
|
||||
if(button("Options")) {
|
||||
|
||||
}
|
||||
space(8);
|
||||
if(button("Debug")) {
|
||||
get(DebugTab.class).open();
|
||||
}
|
||||
space(8);
|
||||
if(button("Save")) {
|
||||
|
|
@ -36,7 +40,7 @@ public class MenuTab extends Tab {
|
|||
close();
|
||||
}
|
||||
space(24);
|
||||
if(button("Main Menu")) {
|
||||
if(button("Quit to Menu")) {
|
||||
|
||||
}
|
||||
space(8);
|
||||
|
|
@ -51,4 +55,9 @@ public class MenuTab extends Tab {
|
|||
return "Menu";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPaused() {
|
||||
return opened;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -21,7 +21,7 @@ public abstract class Tab extends ImmediateUI implements IBottomBarItem, ITransi
|
|||
private ExclusivityManager exclusivityManager;
|
||||
|
||||
@Override
|
||||
public void update(float dTime) {
|
||||
public void fixedUpdate(float dTime) {
|
||||
animation = lerp(animation, opened ? 1 : 0, dTime / Constants.animationSpeed);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import xyz.valnet.engine.graphics.Color;
|
|||
import xyz.valnet.engine.graphics.Drawing;
|
||||
import xyz.valnet.engine.graphics.Tile9;
|
||||
import xyz.valnet.engine.math.Box;
|
||||
import xyz.valnet.engine.math.Vector4f;
|
||||
import xyz.valnet.engine.math.Vector4i;
|
||||
import xyz.valnet.engine.scenegraph.GameObject;
|
||||
import xyz.valnet.engine.scenegraph.IMouseCaptureArea;
|
||||
|
|
@ -125,12 +124,8 @@ public class Button extends GameObject implements IMouseCaptureArea, ITransient
|
|||
|
||||
private IButtonListener listener = null;
|
||||
|
||||
public void update() {
|
||||
update(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(float dTime) {
|
||||
public void fixedUpdate(float dTime) {
|
||||
box.x = x - (int)hPad;
|
||||
box.y = y - (int)vPad;
|
||||
box.z = width + ((int)hPad) * 2;
|
||||
|
|
|
|||
Loading…
Reference in New Issue