mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 09:48:02 +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.FileFilter;
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Deque;
|
||||
import java.util.List;
|
||||
import java.util.Stack;
|
||||
|
||||
public class Forge implements ApplicationListener {
|
||||
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 boolean exited;
|
||||
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 destroyThis = false;
|
||||
public static String extrawide = "default";
|
||||
@@ -259,13 +260,13 @@ public class Forge implements ApplicationListener {
|
||||
}
|
||||
|
||||
public static boolean onHomeScreen() {
|
||||
return screens.size() == 1;
|
||||
return Dscreens.size() == 1;
|
||||
}
|
||||
|
||||
public static void back() {
|
||||
if(destroyThis && isLandscapeMode())
|
||||
return;
|
||||
if (screens.size() < 2) {
|
||||
if (Dscreens.size() < 2) {
|
||||
exit(false); //prompt to exit if attempting to go back from home screen
|
||||
return;
|
||||
}
|
||||
@@ -273,8 +274,8 @@ public class Forge implements ApplicationListener {
|
||||
@Override
|
||||
public void run(Boolean result) {
|
||||
if (result) {
|
||||
screens.pop();
|
||||
setCurrentScreen(screens.lastElement());
|
||||
Dscreens.removeFirst();
|
||||
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
|
||||
public static void setBackScreen(final FScreen screen0, boolean replace) {
|
||||
screens.remove(screen0); //remove screen from previous position in navigation history
|
||||
int index = screens.size() - 1;
|
||||
Dscreens.remove(screen0); //remove screen from previous position in navigation history
|
||||
int index = Dscreens.size() - 1;
|
||||
if (index > 0) {
|
||||
screens.add(index, screen0);
|
||||
Dscreens.addLast(screen0);
|
||||
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 == null) {
|
||||
screens.push(screen0);
|
||||
Dscreens.addFirst(screen0);
|
||||
setCurrentScreen(screen0);
|
||||
return;
|
||||
}
|
||||
@@ -358,11 +359,11 @@ public class Forge implements ApplicationListener {
|
||||
@Override
|
||||
public void run(Boolean result) {
|
||||
if (result) {
|
||||
if (replaceBackScreen && !screens.isEmpty()) {
|
||||
screens.pop();
|
||||
if (replaceBackScreen && !Dscreens.isEmpty()) {
|
||||
Dscreens.removeFirst();
|
||||
}
|
||||
if (screens.peek() != screen0) { //prevent screen being its own back screen
|
||||
screens.push(screen0);
|
||||
if (Dscreens.peekFirst() != screen0) { //prevent screen being its own back screen
|
||||
Dscreens.addFirst(screen0);
|
||||
}
|
||||
setCurrentScreen(screen0);
|
||||
}
|
||||
@@ -505,7 +506,7 @@ public class Forge implements ApplicationListener {
|
||||
currentScreen.onClose(null);
|
||||
currentScreen = null;
|
||||
}
|
||||
screens.clear();
|
||||
Dscreens.clear();
|
||||
graphics.dispose();
|
||||
SoundSystem.instance.dispose();
|
||||
try {
|
||||
|
||||
@@ -19,7 +19,9 @@ import forge.assets.FSkinFont;
|
||||
import forge.toolbox.FDisplayObject;
|
||||
import forge.util.Utils;
|
||||
import forge.util.TextBounds;
|
||||
import java.util.Stack;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Deque;
|
||||
|
||||
public class Graphics {
|
||||
private static final int GL_BLEND = GL20.GL_BLEND;
|
||||
@@ -27,7 +29,7 @@ public class Graphics {
|
||||
|
||||
private final SpriteBatch batch = new SpriteBatch();
|
||||
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 float regionHeight;
|
||||
private Rectangle bounds;
|
||||
@@ -70,7 +72,7 @@ public class Graphics {
|
||||
batch.flush(); //must flush batch to prevent other things not rendering
|
||||
|
||||
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.mul(batch.getTransformMatrix());
|
||||
float minX = tmp.x;
|
||||
@@ -121,7 +123,7 @@ public class Graphics {
|
||||
|
||||
final Rectangle parentBounds = bounds;
|
||||
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);
|
||||
}
|
||||
else {
|
||||
@@ -542,7 +544,7 @@ public class Graphics {
|
||||
}
|
||||
|
||||
private void startShape(ShapeType shapeType) {
|
||||
if (!transforms.isEmpty()) {
|
||||
if (!Dtransforms.isEmpty()) {
|
||||
//must copy matrix before starting shape if transformed
|
||||
shapeRenderer.setTransformMatrix(batch.getTransformMatrix());
|
||||
}
|
||||
@@ -624,7 +626,7 @@ public class Graphics {
|
||||
|
||||
public void startRotateTransform(float originX, float originY, float rotation) {
|
||||
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.begin();
|
||||
}
|
||||
@@ -632,7 +634,7 @@ public class Graphics {
|
||||
public void endTransform() {
|
||||
batch.end();
|
||||
shapeRenderer.setTransformMatrix(batch.getTransformMatrix().idt());
|
||||
transforms.pop();
|
||||
Dtransforms.removeFirst();
|
||||
batch.getTransformMatrix().idt(); //reset
|
||||
shapeRenderer.getTransformMatrix().idt(); //reset
|
||||
batch.begin();
|
||||
|
||||
Reference in New Issue
Block a user