mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 17:58:01 +00:00
refactor stack -> deque
This commit is contained in:
@@ -38,9 +38,10 @@ import forge.util.Utils;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileFilter;
|
import java.io.FileFilter;
|
||||||
|
import java.util.ArrayDeque;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Deque;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Stack;
|
|
||||||
|
|
||||||
public class Forge implements ApplicationListener {
|
public class Forge implements ApplicationListener {
|
||||||
public static final String CURRENT_VERSION = "1.6.33.001";
|
public static final String CURRENT_VERSION = "1.6.33.001";
|
||||||
@@ -57,7 +58,7 @@ public class Forge implements ApplicationListener {
|
|||||||
private static KeyInputAdapter keyInputAdapter;
|
private static KeyInputAdapter keyInputAdapter;
|
||||||
private static boolean exited;
|
private static boolean exited;
|
||||||
private static int continuousRenderingCount = 1; //initialize to 1 since continuous rendering is the default
|
private static int continuousRenderingCount = 1; //initialize to 1 since continuous rendering is the default
|
||||||
private static final Stack<FScreen> screens = new Stack<>();
|
private static final Deque<FScreen> Dscreens = new ArrayDeque<>();
|
||||||
private static boolean textureFiltering = false;
|
private static boolean textureFiltering = false;
|
||||||
private static boolean destroyThis = false;
|
private static boolean destroyThis = false;
|
||||||
public static String extrawide = "default";
|
public static String extrawide = "default";
|
||||||
@@ -259,13 +260,13 @@ public class Forge implements ApplicationListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean onHomeScreen() {
|
public static boolean onHomeScreen() {
|
||||||
return screens.size() == 1;
|
return Dscreens.size() == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void back() {
|
public static void back() {
|
||||||
if(destroyThis && isLandscapeMode())
|
if(destroyThis && isLandscapeMode())
|
||||||
return;
|
return;
|
||||||
if (screens.size() < 2) {
|
if (Dscreens.size() < 2) {
|
||||||
exit(false); //prompt to exit if attempting to go back from home screen
|
exit(false); //prompt to exit if attempting to go back from home screen
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -273,8 +274,8 @@ public class Forge implements ApplicationListener {
|
|||||||
@Override
|
@Override
|
||||||
public void run(Boolean result) {
|
public void run(Boolean result) {
|
||||||
if (result) {
|
if (result) {
|
||||||
screens.pop();
|
Dscreens.removeFirst();
|
||||||
setCurrentScreen(screens.lastElement());
|
setCurrentScreen(Dscreens.getFirst());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -282,12 +283,12 @@ public class Forge implements ApplicationListener {
|
|||||||
|
|
||||||
//set screen that will be gone to on pressing Back before going to current Back screen
|
//set screen that will be gone to on pressing Back before going to current Back screen
|
||||||
public static void setBackScreen(final FScreen screen0, boolean replace) {
|
public static void setBackScreen(final FScreen screen0, boolean replace) {
|
||||||
screens.remove(screen0); //remove screen from previous position in navigation history
|
Dscreens.remove(screen0); //remove screen from previous position in navigation history
|
||||||
int index = screens.size() - 1;
|
int index = Dscreens.size() - 1;
|
||||||
if (index > 0) {
|
if (index > 0) {
|
||||||
screens.add(index, screen0);
|
Dscreens.addLast(screen0);
|
||||||
if (replace) { //remove previous back screen if replacing back screen
|
if (replace) { //remove previous back screen if replacing back screen
|
||||||
screens.remove(index - 1);
|
Dscreens.removeFirst();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -349,7 +350,7 @@ public class Forge implements ApplicationListener {
|
|||||||
if (currentScreen == screen0) { return; }
|
if (currentScreen == screen0) { return; }
|
||||||
|
|
||||||
if (currentScreen == null) {
|
if (currentScreen == null) {
|
||||||
screens.push(screen0);
|
Dscreens.addFirst(screen0);
|
||||||
setCurrentScreen(screen0);
|
setCurrentScreen(screen0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -358,11 +359,11 @@ public class Forge implements ApplicationListener {
|
|||||||
@Override
|
@Override
|
||||||
public void run(Boolean result) {
|
public void run(Boolean result) {
|
||||||
if (result) {
|
if (result) {
|
||||||
if (replaceBackScreen && !screens.isEmpty()) {
|
if (replaceBackScreen && !Dscreens.isEmpty()) {
|
||||||
screens.pop();
|
Dscreens.removeFirst();
|
||||||
}
|
}
|
||||||
if (screens.peek() != screen0) { //prevent screen being its own back screen
|
if (Dscreens.peekFirst() != screen0) { //prevent screen being its own back screen
|
||||||
screens.push(screen0);
|
Dscreens.addFirst(screen0);
|
||||||
}
|
}
|
||||||
setCurrentScreen(screen0);
|
setCurrentScreen(screen0);
|
||||||
}
|
}
|
||||||
@@ -505,7 +506,7 @@ public class Forge implements ApplicationListener {
|
|||||||
currentScreen.onClose(null);
|
currentScreen.onClose(null);
|
||||||
currentScreen = null;
|
currentScreen = null;
|
||||||
}
|
}
|
||||||
screens.clear();
|
Dscreens.clear();
|
||||||
graphics.dispose();
|
graphics.dispose();
|
||||||
SoundSystem.instance.dispose();
|
SoundSystem.instance.dispose();
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -19,7 +19,9 @@ import forge.assets.FSkinFont;
|
|||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
import forge.util.TextBounds;
|
import forge.util.TextBounds;
|
||||||
import java.util.Stack;
|
|
||||||
|
import java.util.ArrayDeque;
|
||||||
|
import java.util.Deque;
|
||||||
|
|
||||||
public class Graphics {
|
public class Graphics {
|
||||||
private static final int GL_BLEND = GL20.GL_BLEND;
|
private static final int GL_BLEND = GL20.GL_BLEND;
|
||||||
@@ -27,7 +29,7 @@ public class Graphics {
|
|||||||
|
|
||||||
private final SpriteBatch batch = new SpriteBatch();
|
private final SpriteBatch batch = new SpriteBatch();
|
||||||
private final ShapeRenderer shapeRenderer = new ShapeRenderer();
|
private final ShapeRenderer shapeRenderer = new ShapeRenderer();
|
||||||
private final Stack<Matrix4> transforms = new Stack<>();
|
private final Deque<Matrix4> Dtransforms = new ArrayDeque<>();
|
||||||
private final Vector3 tmp = new Vector3();
|
private final Vector3 tmp = new Vector3();
|
||||||
private float regionHeight;
|
private float regionHeight;
|
||||||
private Rectangle bounds;
|
private Rectangle bounds;
|
||||||
@@ -70,7 +72,7 @@ public class Graphics {
|
|||||||
batch.flush(); //must flush batch to prevent other things not rendering
|
batch.flush(); //must flush batch to prevent other things not rendering
|
||||||
|
|
||||||
Rectangle clip = new Rectangle(adjustX(x), adjustY(y, h), w, h);
|
Rectangle clip = new Rectangle(adjustX(x), adjustY(y, h), w, h);
|
||||||
if (!transforms.isEmpty()) { //transform position if needed
|
if (!Dtransforms.isEmpty()) { //transform position if needed
|
||||||
tmp.set(clip.x, clip.y, 0);
|
tmp.set(clip.x, clip.y, 0);
|
||||||
tmp.mul(batch.getTransformMatrix());
|
tmp.mul(batch.getTransformMatrix());
|
||||||
float minX = tmp.x;
|
float minX = tmp.x;
|
||||||
@@ -121,7 +123,7 @@ public class Graphics {
|
|||||||
|
|
||||||
final Rectangle parentBounds = bounds;
|
final Rectangle parentBounds = bounds;
|
||||||
bounds = new Rectangle(parentBounds.x + displayObj.getLeft(), parentBounds.y + displayObj.getTop(), displayObj.getWidth(), displayObj.getHeight());
|
bounds = new Rectangle(parentBounds.x + displayObj.getLeft(), parentBounds.y + displayObj.getTop(), displayObj.getWidth(), displayObj.getHeight());
|
||||||
if (!transforms.isEmpty()) { //transform screen position if needed by applying transform matrix to rectangle
|
if (!Dtransforms.isEmpty()) { //transform screen position if needed by applying transform matrix to rectangle
|
||||||
updateScreenPosForRotation(displayObj);
|
updateScreenPosForRotation(displayObj);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -542,7 +544,7 @@ public class Graphics {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void startShape(ShapeType shapeType) {
|
private void startShape(ShapeType shapeType) {
|
||||||
if (!transforms.isEmpty()) {
|
if (!Dtransforms.isEmpty()) {
|
||||||
//must copy matrix before starting shape if transformed
|
//must copy matrix before starting shape if transformed
|
||||||
shapeRenderer.setTransformMatrix(batch.getTransformMatrix());
|
shapeRenderer.setTransformMatrix(batch.getTransformMatrix());
|
||||||
}
|
}
|
||||||
@@ -624,7 +626,7 @@ public class Graphics {
|
|||||||
|
|
||||||
public void startRotateTransform(float originX, float originY, float rotation) {
|
public void startRotateTransform(float originX, float originY, float rotation) {
|
||||||
batch.end();
|
batch.end();
|
||||||
transforms.add(0, new Matrix4(batch.getTransformMatrix().idt())); //startshape is using this above as reference
|
Dtransforms.addFirst(new Matrix4(batch.getTransformMatrix().idt())); //startshape is using this above as reference
|
||||||
batch.getTransformMatrix().idt().translate(adjustX(originX), adjustY(originY, 0), 0).rotate(Vector3.Z, rotation).translate(-adjustX(originX), -adjustY(originY, 0), 0);
|
batch.getTransformMatrix().idt().translate(adjustX(originX), adjustY(originY, 0), 0).rotate(Vector3.Z, rotation).translate(-adjustX(originX), -adjustY(originY, 0), 0);
|
||||||
batch.begin();
|
batch.begin();
|
||||||
}
|
}
|
||||||
@@ -632,7 +634,7 @@ public class Graphics {
|
|||||||
public void endTransform() {
|
public void endTransform() {
|
||||||
batch.end();
|
batch.end();
|
||||||
shapeRenderer.setTransformMatrix(batch.getTransformMatrix().idt());
|
shapeRenderer.setTransformMatrix(batch.getTransformMatrix().idt());
|
||||||
transforms.pop();
|
Dtransforms.removeFirst();
|
||||||
batch.getTransformMatrix().idt(); //reset
|
batch.getTransformMatrix().idt(); //reset
|
||||||
shapeRenderer.getTransformMatrix().idt(); //reset
|
shapeRenderer.getTransformMatrix().idt(); //reset
|
||||||
batch.begin();
|
batch.begin();
|
||||||
|
|||||||
Reference in New Issue
Block a user