mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
update teleport animation
This commit is contained in:
@@ -3,6 +3,7 @@ package forge.adventure.stage;
|
|||||||
|
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
|
import forge.Forge;
|
||||||
import forge.StaticData;
|
import forge.StaticData;
|
||||||
import forge.adventure.character.PlayerSprite;
|
import forge.adventure.character.PlayerSprite;
|
||||||
import forge.adventure.data.BiomeData;
|
import forge.adventure.data.BiomeData;
|
||||||
@@ -17,7 +18,9 @@ import forge.card.ColorSet;
|
|||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.DeckProxy;
|
import forge.deck.DeckProxy;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
|
import forge.gui.FThreads;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
|
import forge.screens.CoverScreen;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -135,8 +138,16 @@ public class ConsoleCommandInterpreter {
|
|||||||
PointOfInterest poi = Current.world().findPointsOfInterest(s[0]);
|
PointOfInterest poi = Current.world().findPointsOfInterest(s[0]);
|
||||||
if (poi == null)
|
if (poi == null)
|
||||||
return "PoI " + s[0] + " not found";
|
return "PoI " + s[0] + " not found";
|
||||||
WorldStage.getInstance().setPosition(poi.getPosition());
|
|
||||||
WorldStage.getInstance().player.playEffect(Paths.EFFECT_TELEPORT, 10);
|
Forge.advFreezePlayerControls = true;
|
||||||
|
FThreads.invokeInEdtNowOrLater(() -> Forge.setTransitionScreen(new CoverScreen(() -> {
|
||||||
|
Forge.advFreezePlayerControls = false;
|
||||||
|
WorldStage.getInstance().setPosition(new Vector2(poi.getPosition().x - 16f, poi.getPosition().y + 16f));
|
||||||
|
WorldStage.getInstance().loadPOI(poi);
|
||||||
|
WorldSave.getCurrentSave().autoSave();
|
||||||
|
Forge.clearTransitionScreen();
|
||||||
|
//WorldStage.getInstance().player.playEffect(Paths.EFFECT_TELEPORT, 10);
|
||||||
|
}, Forge.takeScreenshot())));
|
||||||
return "Teleported to " + s[0] + "(" + poi.getPosition() + ")";
|
return "Teleported to " + s[0] + "(" + poi.getPosition() + ")";
|
||||||
});
|
});
|
||||||
registerCommand(new String[]{"spawn", "enemy"}, s -> {
|
registerCommand(new String[]{"spawn", "enemy"}, s -> {
|
||||||
|
|||||||
@@ -840,6 +840,10 @@ public class GameHUD extends Stage {
|
|||||||
debugMap = b;
|
debugMap = b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isDebugMap() {
|
||||||
|
return debugMap;
|
||||||
|
}
|
||||||
|
|
||||||
public void playerIdle() {
|
public void playerIdle() {
|
||||||
if (MapStage.getInstance().isInMap()) {
|
if (MapStage.getInstance().isInMap()) {
|
||||||
MapStage.getInstance().startPause(1f);
|
MapStage.getInstance().startPause(1f);
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ import forge.deck.DeckProxy;
|
|||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.gui.FThreads;
|
import forge.gui.FThreads;
|
||||||
import forge.gui.GuiBase;
|
import forge.gui.GuiBase;
|
||||||
import forge.screens.TransitionScreen;
|
import forge.screens.CoverScreen;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -468,13 +468,18 @@ public abstract class GameStage extends Stage {
|
|||||||
|
|
||||||
}
|
}
|
||||||
if (keycode == Input.Keys.F2) {
|
if (keycode == Input.Keys.F2) {
|
||||||
TileMapScene S = TileMapScene.instance();
|
// prevent going to Debug Zone by accident if Debug Map isn't enabled..
|
||||||
PointOfInterestData P = PointOfInterestData.getPointOfInterest("DEBUGZONE");
|
if (GameHUD.getInstance().isDebugMap()) {
|
||||||
if( P != null)
|
TileMapScene S = TileMapScene.instance();
|
||||||
{
|
PointOfInterestData P = PointOfInterestData.getPointOfInterest("DEBUGZONE");
|
||||||
PointOfInterest PoI = new PointOfInterest(P,new Vector2(0,0), MyRandom.getRandom());
|
if( P != null)
|
||||||
S.load(PoI);
|
{
|
||||||
Forge.switchScene(S);
|
PointOfInterest PoI = new PointOfInterest(P,new Vector2(0,0), MyRandom.getRandom());
|
||||||
|
S.load(PoI);
|
||||||
|
Forge.switchScene(S);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
System.out.println("Enable Debug Map for Debug Zone.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (keycode == Input.Keys.F11) {
|
if (keycode == Input.Keys.F11) {
|
||||||
@@ -662,13 +667,13 @@ public abstract class GameStage extends Stage {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
showImageDialog(Current.generateDefeatMessage(), getDefeatBadge(),
|
showImageDialog(Current.generateDefeatMessage(), getDefeatBadge(),
|
||||||
() -> FThreads.invokeInEdtNowOrLater(() -> Forge.setTransitionScreen(new TransitionScreen(() -> {
|
() -> FThreads.invokeInEdtNowOrLater(() -> Forge.setTransitionScreen(new CoverScreen(() -> {
|
||||||
Forge.advFreezePlayerControls = false;
|
Forge.advFreezePlayerControls = false;
|
||||||
WorldStage.getInstance().setPosition(new Vector2(poi.getPosition().x - 16f, poi.getPosition().y + 16f));
|
WorldStage.getInstance().setPosition(new Vector2(poi.getPosition().x - 16f, poi.getPosition().y + 16f));
|
||||||
WorldStage.getInstance().loadPOI(poi);
|
WorldStage.getInstance().loadPOI(poi);
|
||||||
WorldSave.getCurrentSave().autoSave();
|
WorldSave.getCurrentSave().autoSave();
|
||||||
Forge.clearTransitionScreen();
|
Forge.clearTransitionScreen();
|
||||||
}, Forge.takeScreenshot(), ""))));
|
}, Forge.takeScreenshot()))));
|
||||||
}
|
}
|
||||||
}, 1f);
|
}, 1f);
|
||||||
}//Spawn shouldn't be null
|
}//Spawn shouldn't be null
|
||||||
|
|||||||
65
forge-gui-mobile/src/forge/screens/CoverScreen.java
Normal file
65
forge-gui-mobile/src/forge/screens/CoverScreen.java
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
package forge.screens;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
|
import forge.Forge;
|
||||||
|
import forge.Graphics;
|
||||||
|
import forge.animation.ForgeAnimation;
|
||||||
|
import forge.gui.FThreads;
|
||||||
|
|
||||||
|
public class CoverScreen extends TransitionScreen {
|
||||||
|
private CoverAnimation coverAnimation;
|
||||||
|
Runnable runnable;
|
||||||
|
TextureRegion textureRegion;
|
||||||
|
|
||||||
|
public CoverScreen(Runnable r, TextureRegion t) {
|
||||||
|
runnable = r;
|
||||||
|
textureRegion = t;
|
||||||
|
coverAnimation = new CoverAnimation();
|
||||||
|
}
|
||||||
|
|
||||||
|
private class CoverAnimation extends ForgeAnimation {
|
||||||
|
float DURATION = 0.6f;
|
||||||
|
private float progress = 0;
|
||||||
|
|
||||||
|
public void drawBackground(Graphics g) {
|
||||||
|
float percentage = progress / DURATION;
|
||||||
|
if (percentage < 0) {
|
||||||
|
percentage = 0;
|
||||||
|
} else if (percentage > 1) {
|
||||||
|
percentage = 1;
|
||||||
|
}
|
||||||
|
if (textureRegion != null) {
|
||||||
|
g.drawPortalFade(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), Math.min(percentage, 1f), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean advance(float dt) {
|
||||||
|
progress += dt;
|
||||||
|
return progress < DURATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
final boolean[] run = {false};//clears transition via runnable so this will reset anyway
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onEnd(boolean endingAll) {
|
||||||
|
if (runnable != null) {
|
||||||
|
if (run[0])
|
||||||
|
return;
|
||||||
|
run[0] = true;
|
||||||
|
FThreads.invokeInEdtNowOrLater(runnable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void drawBackground(Graphics g) {
|
||||||
|
coverAnimation.start();
|
||||||
|
coverAnimation.drawBackground(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doLayout(float width, float height) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -89,6 +89,9 @@ public class TransitionScreen extends FContainer {
|
|||||||
layout = new GlyphLayout();
|
layout = new GlyphLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TransitionScreen() {
|
||||||
|
}
|
||||||
|
|
||||||
public FProgressBar getProgressBar() {
|
public FProgressBar getProgressBar() {
|
||||||
return progressBar;
|
return progressBar;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user