From d96316f44fc9b93da4cdd171c1743f77f6c9f005 Mon Sep 17 00:00:00 2001 From: gered Date: Sat, 19 Apr 2014 11:48:55 -0400 Subject: [PATCH] add getters for retrieving GameStates before/after the one given --- .../ca/blarg/gdx/states/StateManager.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/java/ca/blarg/gdx/states/StateManager.java b/src/main/java/ca/blarg/gdx/states/StateManager.java index 89dd829..90a0b9c 100644 --- a/src/main/java/ca/blarg/gdx/states/StateManager.java +++ b/src/main/java/ca/blarg/gdx/states/StateManager.java @@ -47,6 +47,36 @@ public class StateManager implements Disposable { return (top == null ? null : top.state); } + public GameState getStateBefore(GameState state) { + if (state == null) + throw new IllegalArgumentException("state cannot be null."); + + StateInfo info = getStateInfoFor(state); + if (info == null) + return null; + + int index = states.indexOf(info); + if (index == 0) + return null; + else + return states.get(index - 1).state; + } + + public GameState getStateAfter(GameState state) { + if (state == null) + throw new IllegalArgumentException("state cannot be null."); + + StateInfo info = getStateInfoFor(state); + if (info == null) + return null; + + int index = states.indexOf(info); + if (index == states.size() - 1) + return null; + else + return states.get(index + 1).state; + } + public boolean isTransitioning() { for (int i = 0; i < states.size(); ++i) { if (states.get(i).isTransitioning)