mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
Merge pull request #6010 from kevlahnota/master2
update player death transition
This commit is contained in:
@@ -24,6 +24,7 @@ import com.github.tommyettinger.textra.TextraLabel;
|
|||||||
import com.github.tommyettinger.textra.TypingAdapter;
|
import com.github.tommyettinger.textra.TypingAdapter;
|
||||||
import com.github.tommyettinger.textra.TypingLabel;
|
import com.github.tommyettinger.textra.TypingLabel;
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
|
import forge.adventure.character.CharacterSprite;
|
||||||
import forge.adventure.character.MapActor;
|
import forge.adventure.character.MapActor;
|
||||||
import forge.adventure.character.PlayerSprite;
|
import forge.adventure.character.PlayerSprite;
|
||||||
import forge.adventure.data.DialogData;
|
import forge.adventure.data.DialogData;
|
||||||
@@ -646,13 +647,20 @@ public abstract class GameStage extends Stage {
|
|||||||
PointOfInterest poi = Current.world().findPointsOfInterest("Spawn");
|
PointOfInterest poi = Current.world().findPointsOfInterest("Spawn");
|
||||||
if (poi != null) {
|
if (poi != null) {
|
||||||
Forge.advFreezePlayerControls = true;
|
Forge.advFreezePlayerControls = true;
|
||||||
|
getPlayerSprite().setAnimation(CharacterSprite.AnimationTypes.Death);
|
||||||
|
getPlayerSprite().playEffect(Paths.EFFECT_BLOOD, 0.5f);
|
||||||
|
Timer.schedule(new Timer.Task() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
showImageDialog(Forge.getLocalizer().getMessage("lblYouDied", Current.player().getName()), null,
|
showImageDialog(Forge.getLocalizer().getMessage("lblYouDied", Current.player().getName()), null,
|
||||||
() -> FThreads.invokeInEdtNowOrLater(() -> Forge.setTransitionScreen(new TransitionScreen(() -> {
|
() -> FThreads.invokeInEdtNowOrLater(() -> Forge.setTransitionScreen(new TransitionScreen(() -> {
|
||||||
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);
|
||||||
Forge.clearTransitionScreen();
|
Forge.clearTransitionScreen();
|
||||||
}, null, false, true, false, false))));
|
}, Forge.takeScreenshot(), ""))));
|
||||||
|
}
|
||||||
|
}, 1f);
|
||||||
}//Spawn shouldn't be null
|
}//Spawn shouldn't be null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -935,7 +935,7 @@ public class MapStage extends GameStage {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onActing(float delta) {
|
protected void onActing(float delta) {
|
||||||
if (isPaused() || isDialogOnlyInput())
|
if (isPaused() || isDialogOnlyInput() || Forge.advFreezePlayerControls)
|
||||||
return;
|
return;
|
||||||
Iterator<EnemySprite> it = enemies.iterator();
|
Iterator<EnemySprite> it = enemies.iterator();
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
|
|||||||
boolean collided = false;
|
boolean collided = false;
|
||||||
@Override
|
@Override
|
||||||
protected void onActing(float delta) {
|
protected void onActing(float delta) {
|
||||||
if (isPaused() || MapStage.getInstance().isDialogOnlyInput())
|
if (isPaused() || MapStage.getInstance().isDialogOnlyInput() || Forge.advFreezePlayerControls)
|
||||||
return;
|
return;
|
||||||
drawNavigationArrow();
|
drawNavigationArrow();
|
||||||
if (player.isMoving()) {
|
if (player.isMoving()) {
|
||||||
|
|||||||
@@ -31,13 +31,17 @@ public class TransitionScreen extends FContainer {
|
|||||||
Texture vsTexture;
|
Texture vsTexture;
|
||||||
String enemyAtlasPath, playerAvatarName, enemyAvatarName;
|
String enemyAtlasPath, playerAvatarName, enemyAvatarName;
|
||||||
private String message = "", playerRecord = "", enemyRecord = "";
|
private String message = "", playerRecord = "", enemyRecord = "";
|
||||||
boolean matchTransition, isloading, isIntro, isFadeMusic, isArenaScene;
|
boolean matchTransition, isloading, isIntro, isFadeMusic, isArenaScene, isAlternate;
|
||||||
GlyphLayout layout;
|
GlyphLayout layout;
|
||||||
|
|
||||||
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading) {
|
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading) {
|
||||||
this(proc, screen, enterMatch, loading, false, false);
|
this(proc, screen, enterMatch, loading, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TransitionScreen(Runnable proc, TextureRegion screen, String message) {//simple for custom transition
|
||||||
|
this(proc, screen, true, false, false, false, false, message, null, "", "", "", "", "");
|
||||||
|
}
|
||||||
|
|
||||||
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading, String loadingMessage) {
|
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading, String loadingMessage) {
|
||||||
this(proc, screen, enterMatch, loading, false, false, loadingMessage, null, "", "", "", "", "");
|
this(proc, screen, enterMatch, loading, false, false, loadingMessage, null, "", "", "", "", "");
|
||||||
}
|
}
|
||||||
@@ -51,6 +55,9 @@ public class TransitionScreen extends FContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading, boolean intro, boolean fadeMusic, String loadingMessage, TextureRegion player, String enemyAtlas, String playerName, String enemyName, String playerRecord, String enemyRecord) {
|
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading, boolean intro, boolean fadeMusic, String loadingMessage, TextureRegion player, String enemyAtlas, String playerName, String enemyName, String playerRecord, String enemyRecord) {
|
||||||
|
this(proc, screen, false, enterMatch, loading, intro, fadeMusic, loadingMessage, player, enemyAtlas, playerName, enemyName, playerRecord, enemyRecord);
|
||||||
|
}
|
||||||
|
public TransitionScreen(Runnable proc, TextureRegion screen, boolean alternate, boolean enterMatch, boolean loading, boolean intro, boolean fadeMusic, String loadingMessage, TextureRegion player, String enemyAtlas, String playerName, String enemyName, String playerRecord, String enemyRecord) {
|
||||||
progressBar = new FProgressBar();
|
progressBar = new FProgressBar();
|
||||||
progressBar.setMaximum(100);
|
progressBar.setMaximum(100);
|
||||||
progressBar.setPercentMode(true);
|
progressBar.setPercentMode(true);
|
||||||
@@ -62,6 +69,7 @@ public class TransitionScreen extends FContainer {
|
|||||||
isloading = loading;
|
isloading = loading;
|
||||||
isIntro = intro;
|
isIntro = intro;
|
||||||
isFadeMusic = fadeMusic;
|
isFadeMusic = fadeMusic;
|
||||||
|
isAlternate = alternate;
|
||||||
message = loadingMessage;
|
message = loadingMessage;
|
||||||
this.playerRecord = playerRecord;
|
this.playerRecord = playerRecord;
|
||||||
this.enemyRecord = enemyRecord;
|
this.enemyRecord = enemyRecord;
|
||||||
@@ -99,7 +107,7 @@ public class TransitionScreen extends FContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class BGAnimation extends ForgeAnimation {
|
private class BGAnimation extends ForgeAnimation {
|
||||||
float DURATION = isArenaScene ? 1.2f : 0.6f;
|
float DURATION = isArenaScene || isAlternate ? 1.2f : 0.6f;
|
||||||
private float progress = 0;
|
private float progress = 0;
|
||||||
TextureRegion enemyAvatar;
|
TextureRegion enemyAvatar;
|
||||||
|
|
||||||
@@ -119,7 +127,12 @@ public class TransitionScreen extends FContainer {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isloading) {
|
if (isAlternate) {
|
||||||
|
g.fillRect(Color.BLACK, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||||
|
if (textureRegion != null) {
|
||||||
|
g.drawPortalFade(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), Math.min(percentage, 1f), true);
|
||||||
|
}
|
||||||
|
} else if (isloading) {
|
||||||
g.fillRect(Color.BLACK, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight());
|
g.fillRect(Color.BLACK, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||||
FSkinTexture bgTexture = Forge.isMobileAdventureMode ? FSkinTexture.ADV_BG_TEXTURE : FSkinTexture.BG_TEXTURE;
|
FSkinTexture bgTexture = Forge.isMobileAdventureMode ? FSkinTexture.ADV_BG_TEXTURE : FSkinTexture.BG_TEXTURE;
|
||||||
if (bgTexture != null) {
|
if (bgTexture != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user