mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +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.utils.Array;
|
||||
import forge.Forge;
|
||||
import forge.StaticData;
|
||||
import forge.adventure.character.PlayerSprite;
|
||||
import forge.adventure.data.BiomeData;
|
||||
@@ -17,7 +18,9 @@ import forge.card.ColorSet;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckProxy;
|
||||
import forge.game.GameType;
|
||||
import forge.gui.FThreads;
|
||||
import forge.item.PaperCard;
|
||||
import forge.screens.CoverScreen;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -135,8 +138,16 @@ public class ConsoleCommandInterpreter {
|
||||
PointOfInterest poi = Current.world().findPointsOfInterest(s[0]);
|
||||
if (poi == null)
|
||||
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() + ")";
|
||||
});
|
||||
registerCommand(new String[]{"spawn", "enemy"}, s -> {
|
||||
|
||||
@@ -840,6 +840,10 @@ public class GameHUD extends Stage {
|
||||
debugMap = b;
|
||||
}
|
||||
|
||||
public boolean isDebugMap() {
|
||||
return debugMap;
|
||||
}
|
||||
|
||||
public void playerIdle() {
|
||||
if (MapStage.getInstance().isInMap()) {
|
||||
MapStage.getInstance().startPause(1f);
|
||||
|
||||
@@ -53,7 +53,7 @@ import forge.deck.DeckProxy;
|
||||
import forge.game.GameType;
|
||||
import forge.gui.FThreads;
|
||||
import forge.gui.GuiBase;
|
||||
import forge.screens.TransitionScreen;
|
||||
import forge.screens.CoverScreen;
|
||||
import forge.util.MyRandom;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -468,13 +468,18 @@ public abstract class GameStage extends Stage {
|
||||
|
||||
}
|
||||
if (keycode == Input.Keys.F2) {
|
||||
TileMapScene S = TileMapScene.instance();
|
||||
PointOfInterestData P = PointOfInterestData.getPointOfInterest("DEBUGZONE");
|
||||
if( P != null)
|
||||
{
|
||||
PointOfInterest PoI = new PointOfInterest(P,new Vector2(0,0), MyRandom.getRandom());
|
||||
S.load(PoI);
|
||||
Forge.switchScene(S);
|
||||
// prevent going to Debug Zone by accident if Debug Map isn't enabled..
|
||||
if (GameHUD.getInstance().isDebugMap()) {
|
||||
TileMapScene S = TileMapScene.instance();
|
||||
PointOfInterestData P = PointOfInterestData.getPointOfInterest("DEBUGZONE");
|
||||
if( P != null)
|
||||
{
|
||||
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) {
|
||||
@@ -662,13 +667,13 @@ public abstract class GameStage extends Stage {
|
||||
@Override
|
||||
public void run() {
|
||||
showImageDialog(Current.generateDefeatMessage(), getDefeatBadge(),
|
||||
() -> FThreads.invokeInEdtNowOrLater(() -> Forge.setTransitionScreen(new TransitionScreen(() -> {
|
||||
() -> 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();
|
||||
}, Forge.takeScreenshot(), ""))));
|
||||
}, Forge.takeScreenshot()))));
|
||||
}
|
||||
}, 1f);
|
||||
}//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();
|
||||
}
|
||||
|
||||
public TransitionScreen() {
|
||||
}
|
||||
|
||||
public FProgressBar getProgressBar() {
|
||||
return progressBar;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user