Merge pull request #1989 from kevlahnota/newmaster2

update TransitionScreen
This commit is contained in:
Anthony Calosa
2022-11-30 19:02:42 +08:00
committed by GitHub
12 changed files with 161 additions and 77 deletions

View File

@@ -257,49 +257,53 @@ public class TargetingOverlay {
cardPanels.clear(); cardPanels.clear();
cardsVisualized.clear(); cardsVisualized.clear();
switch (matchUI.getCDock().getArcState()) { try {
case OFF: switch (matchUI.getCDock().getArcState()) {
return true; case OFF:
case MOUSEOVER: return true;
// Draw only hovered card case MOUSEOVER:
activePanel = null; // Draw only hovered card
for (final VField f : matchUI.getFieldViews()) { activePanel = null;
cardPanels.addAll(f.getTabletop().getCardPanels()); for (final VField f : matchUI.getFieldViews()) {
final List<CardPanel> cPanels = f.getTabletop().getCardPanels(); cardPanels.addAll(f.getTabletop().getCardPanels());
for (final CardPanel c : cPanels) { final List<CardPanel> cPanels = f.getTabletop().getCardPanels();
if (c.isSelected()) { for (final CardPanel c : cPanels) {
activePanel = c; if (c.isSelected()) {
break; activePanel = c;
break;
}
} }
} }
} if (activePanel == null) { return true; }
if (activePanel == null) { return true; } break;
break; case ON:
case ON: // Draw all
// Draw all for (final VField f : matchUI.getFieldViews()) {
for (final VField f : matchUI.getFieldViews()) { cardPanels.addAll(f.getTabletop().getCardPanels());
cardPanels.addAll(f.getTabletop().getCardPanels()); }
}
}
//final Point docOffsets = FView.SINGLETON_INSTANCE.getLpnDocument().getLocationOnScreen();
// Locations of arc endpoint, per card, with ID as primary key.
final Map<Integer, Point> endpoints = getCardEndpoints();
if (matchUI.getCDock().getArcState() == ArcState.MOUSEOVER) {
// Only work with the active panel
if (activePanel != null) {
addArcsForCard(activePanel.getCard(), endpoints, combat);
} }
}
else { //final Point docOffsets = FView.SINGLETON_INSTANCE.getLpnDocument().getLocationOnScreen();
// Work with all card panels currently visible // Locations of arc endpoint, per card, with ID as primary key.
for (final CardPanel c : cardPanels) { final Map<Integer, Point> endpoints = getCardEndpoints();
if (!c.isShowing()) {
continue; if (matchUI.getCDock().getArcState() == ArcState.MOUSEOVER) {
// Only work with the active panel
if (activePanel != null) {
addArcsForCard(activePanel.getCard(), endpoints, combat);
} }
addArcsForCard(c.getCard(), endpoints, combat);
} }
else {
// Work with all card panels currently visible
for (final CardPanel c : cardPanels) {
if (!c.isShowing()) {
continue;
}
addArcsForCard(c.getCard(), endpoints, combat);
}
}
} catch (Exception e) {
e.printStackTrace();
} }
return true; return true;

View File

@@ -774,7 +774,7 @@ public class Graphics {
batch.end(); batch.end();
shaderGrayscale.bind(); shaderGrayscale.bind();
shaderGrayscale.setUniformf("u_grayness", percentage); shaderGrayscale.setUniformf("u_grayness", percentage);
shaderGrayscale.setUniformf("u_bias", 0.5f); shaderGrayscale.setUniformf("u_bias", 0.6f);
batch.setShader(shaderGrayscale); batch.setShader(shaderGrayscale);
batch.begin(); batch.begin();
//draw gray //draw gray
@@ -788,7 +788,7 @@ public class Graphics {
batch.end(); batch.end();
shaderGrayscale.bind(); shaderGrayscale.bind();
shaderGrayscale.setUniformf("u_grayness", percentage); shaderGrayscale.setUniformf("u_grayness", percentage);
shaderGrayscale.setUniformf("u_bias", withDarkOverlay ? 0.4f : 1f); shaderGrayscale.setUniformf("u_bias", withDarkOverlay ? 0.5f : 1f);
batch.setShader(shaderGrayscale); batch.setShader(shaderGrayscale);
batch.begin(); batch.begin();
//draw gray //draw gray
@@ -802,7 +802,7 @@ public class Graphics {
batch.end(); batch.end();
shaderGrayscale.bind(); shaderGrayscale.bind();
shaderGrayscale.setUniformf("u_grayness", percentage); shaderGrayscale.setUniformf("u_grayness", percentage);
shaderGrayscale.setUniformf("u_bias", withDarkOverlay ? 0.4f : 1f); shaderGrayscale.setUniformf("u_bias", withDarkOverlay ? 0.5f : 1f);
batch.setShader(shaderGrayscale); batch.setShader(shaderGrayscale);
batch.begin(); batch.begin();
//draw gray //draw gray

View File

@@ -43,13 +43,11 @@ public class Shaders {
" gl_Position = u_projTrans * a_position;\n" + " gl_Position = u_projTrans * a_position;\n" +
"}"; "}";
public static final String fragRipple="#ifdef GL_ES\n" + public static final String fragRipple="#ifdef GL_ES\n" +
"#define PRECISION mediump\n" + "#define LOWP lowp\n" +
"precision PRECISION float;\n" + "precision mediump float;\n" +
"precision PRECISION int;\n" +
"#else\n" + "#else\n" +
"#define PRECISION\n" + "#define LOWP \n" +
"#endif\n" + "#endif\n" +
"\n" +
"uniform sampler2D u_texture;\n" + "uniform sampler2D u_texture;\n" +
"varying vec2 v_texCoords;\n" + "varying vec2 v_texCoords;\n" +
"uniform float u_time;\n" + "uniform float u_time;\n" +
@@ -77,13 +75,11 @@ public class Shaders {
"\tgl_FragColor = mix(vec4(0.0, 0.0, 0.0, 1.0), vec4(color.rgba * dist), u_bias);\n" + "\tgl_FragColor = mix(vec4(0.0, 0.0, 0.0, 1.0), vec4(color.rgba * dist), u_bias);\n" +
"}"; "}";
public static final String fragChromaticAbberation="#ifdef GL_ES\n" + public static final String fragChromaticAbberation="#ifdef GL_ES\n" +
"#define PRECISION mediump\n" + "#define LOWP lowp\n" +
"precision PRECISION float;\n" + "precision mediump float;\n" +
"precision PRECISION int;\n" +
"#else\n" + "#else\n" +
"#define PRECISION\n" + "#define LOWP \n" +
"#endif\n" + "#endif\n" +
"\n" +
"varying vec2 v_texCoords;\n" + "varying vec2 v_texCoords;\n" +
"uniform sampler2D u_texture;\n" + "uniform sampler2D u_texture;\n" +
"uniform float u_time;\n" + "uniform float u_time;\n" +
@@ -105,13 +101,11 @@ public class Shaders {
" gl_FragColor = vec4(col,1.0);\n" + " gl_FragColor = vec4(col,1.0);\n" +
"}"; "}";
public static final String fragPixelateShader = "#ifdef GL_ES\n" + public static final String fragPixelateShader = "#ifdef GL_ES\n" +
"#define PRECISION mediump\n" + "#define LOWP lowp\n" +
"precision PRECISION float;\n" + "precision mediump float;\n" +
"precision PRECISION int;\n" +
"#else\n" + "#else\n" +
"#define PRECISION\n" + "#define LOWP \n" +
"#endif\n" + "#endif\n" +
"\n" +
"uniform sampler2D u_texture;\n" + "uniform sampler2D u_texture;\n" +
"uniform float u_cellSize;\n" + "uniform float u_cellSize;\n" +
"uniform vec2 u_resolution;\n" + "uniform vec2 u_resolution;\n" +
@@ -129,9 +123,11 @@ public class Shaders {
"\tgl_FragColor = mix(vec4(0.0, 0.0, 0.0, 1.0), texColor, u_bias);\n" + "\tgl_FragColor = mix(vec4(0.0, 0.0, 0.0, 1.0), texColor, u_bias);\n" +
"}"; "}";
public static final String fragPixelateShaderWarp = "#ifdef GL_ES\n" + public static final String fragPixelateShaderWarp = "#ifdef GL_ES\n" +
"#define LOWP lowp\n" +
"precision mediump float;\n" + "precision mediump float;\n" +
"#else\n" +
"#define LOWP \n" +
"#endif\n" + "#endif\n" +
"\n" +
"varying vec2 v_texCoords;\n" + "varying vec2 v_texCoords;\n" +
"uniform sampler2D u_texture;\n" + "uniform sampler2D u_texture;\n" +
"\n" + "\n" +

View File

@@ -22,10 +22,12 @@ public class CharacterSprite extends MapActor {
private AnimationDirections currentAnimationDir = AnimationDirections.None; private AnimationDirections currentAnimationDir = AnimationDirections.None;
private final Array<Sprite> avatar=new Array<>(); private final Array<Sprite> avatar=new Array<>();
public boolean hidden = false; public boolean hidden = false;
private String atlasPath;
public CharacterSprite(int id,String path) { public CharacterSprite(int id,String path) {
super(id); super(id);
collisionHeight=0.4f; collisionHeight=0.4f;
atlasPath = path;
load(path); load(path);
} }
public CharacterSprite(String path) { public CharacterSprite(String path) {
@@ -234,8 +236,13 @@ public class CharacterSprite extends MapActor {
public Sprite getAvatar() { public Sprite getAvatar() {
if (avatar == null || avatar.isEmpty())
return null;
return avatar.first(); return avatar.first();
} }
public String getAtlasPath() {
return atlasPath;
}
public Sprite getAvatar(int index) { public Sprite getAvatar(int index) {
return avatar.get(index); return avatar.get(index);
} }

View File

@@ -1,7 +1,10 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.ui.*;
@@ -12,6 +15,7 @@ import forge.Forge;
import forge.adventure.character.EnemySprite; import forge.adventure.character.EnemySprite;
import forge.adventure.data.ArenaData; import forge.adventure.data.ArenaData;
import forge.adventure.data.WorldData; import forge.adventure.data.WorldData;
import forge.adventure.player.AdventurePlayer;
import forge.adventure.stage.GameHUD; import forge.adventure.stage.GameHUD;
import forge.adventure.stage.IAfterMatch; import forge.adventure.stage.IAfterMatch;
import forge.adventure.stage.WorldStage; import forge.adventure.stage.WorldStage;
@@ -25,6 +29,8 @@ import java.util.Random;
* Displays the rewards of a fight or a treasure * Displays the rewards of a fight or a treasure
*/ */
public class ArenaScene extends UIScene implements IAfterMatch { public class ArenaScene extends UIScene implements IAfterMatch {
private FileHandle vsIcon = Config.instance().getFile("ui/vs.png");
private TextureRegion vsTextureRegion = vsIcon.exists() ? new TextureRegion(new Texture(vsIcon)) : null;
private static ArenaScene object; private static ArenaScene object;
private final float gridSize; private final float gridSize;
private ArenaData arenaData; private ArenaData arenaData;
@@ -101,6 +107,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
private void loose() { private void loose() {
doneButton.setText(Forge.getLocalizer().getMessage("lblLeave")); doneButton.setText(Forge.getLocalizer().getMessage("lblLeave"));
doneButton.layout();
startButton.setDisabled(true); startButton.setDisabled(true);
arenaStarted=false; arenaStarted=false;
} }
@@ -123,7 +130,9 @@ public class ArenaScene extends UIScene implements IAfterMatch {
goldLabel.setVisible(false); goldLabel.setVisible(false);
arenaStarted=true; arenaStarted=true;
startButton.setText(Forge.getLocalizer().getMessage("lblContinue")); startButton.setText(Forge.getLocalizer().getMessage("lblContinue"));
startButton.layout();
doneButton.setText(Forge.getLocalizer().getMessage("lblConcede")); doneButton.setText(Forge.getLocalizer().getMessage("lblConcede"));
doneButton.layout();
Forge.setCursor(null, Forge.magnifyToggle ? "1" : "2"); Forge.setCursor(null, Forge.magnifyToggle ? "1" : "2");
Current.player().takeGold(arenaData.entryFee); Current.player().takeGold(arenaData.entryFee);
startRound(); startRound();
@@ -172,6 +181,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
arenaStarted=false; arenaStarted=false;
startButton.setDisabled(true); startButton.setDisabled(true);
doneButton.setText(Forge.getLocalizer().getMessage("lblDone")); doneButton.setText(Forge.getLocalizer().getMessage("lblDone"));
doneButton.layout();
} }
} }
@@ -207,11 +217,12 @@ public class ArenaScene extends UIScene implements IAfterMatch {
private void startRound() { private void startRound() {
DuelScene duelScene = DuelScene.instance(); DuelScene duelScene = DuelScene.instance();
EnemySprite enemy = enemies.get(enemies.size-1);
FThreads.invokeInEdtNowOrLater(() -> { FThreads.invokeInEdtNowOrLater(() -> {
Forge.setTransitionScreen(new TransitionScreen(() -> { Forge.setTransitionScreen(new TransitionScreen(() -> {
duelScene.initDuels(WorldStage.getInstance().getPlayerSprite(), enemies.get(enemies.size-1)); duelScene.initDuels(WorldStage.getInstance().getPlayerSprite(), enemy);
Forge.switchScene(DuelScene.instance()); Forge.switchScene(duelScene);
}, Forge.takeScreenshot(), true, false)); }, Forge.takeScreenshot(), true, false, false, false, "", vsTextureRegion, AdventurePlayer.current().avatar(), enemy.getAtlasPath()));
}); });
} }
@@ -253,7 +264,9 @@ public class ArenaScene extends UIScene implements IAfterMatch {
public void loadArenaData(ArenaData data,long seed) { public void loadArenaData(ArenaData data,long seed) {
startButton.setText(Forge.getLocalizer().getMessage("lblStart")); startButton.setText(Forge.getLocalizer().getMessage("lblStart"));
startButton.layout();
doneButton.setText(Forge.getLocalizer().getMessage("lblDone")); doneButton.setText(Forge.getLocalizer().getMessage("lblDone"));
doneButton.layout();
arenaData=data; arenaData=data;
//rand.setSeed(seed); allow to reshuffle arena enemies for now //rand.setSeed(seed); allow to reshuffle arena enemies for now
@@ -275,6 +288,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
goldLabel.setText(data.entryFee +" [+Gold]"); goldLabel.setText(data.entryFee +" [+Gold]");
goldLabel.layout();
goldLabel.setVisible(true); goldLabel.setVisible(true);
startButton.setDisabled(data.entryFee>Current.player().getGold()); startButton.setDisabled(data.entryFee>Current.player().getGold());

View File

@@ -1,6 +1,7 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import forge.Forge; import forge.Forge;
@@ -250,7 +251,9 @@ public class DuelScene extends ForgeScene {
LobbyPlayer enemyPlayer = GamePlayerUtil.createAiPlayer(currentEnemy.name, selectAI(currentEnemy.ai)); LobbyPlayer enemyPlayer = GamePlayerUtil.createAiPlayer(currentEnemy.name, selectAI(currentEnemy.ai));
if (!enemy.nameOverride.isEmpty()) if (!enemy.nameOverride.isEmpty())
enemyPlayer.setName(enemy.nameOverride); //Override name if defined in the map.(only supported for 1 enemy atm) enemyPlayer.setName(enemy.nameOverride); //Override name if defined in the map.(only supported for 1 enemy atm)
FSkin.getAvatars().put(90001 + i, enemy.getAvatar(i)); TextureRegion enemyAvatar = enemy.getAvatar(i);
enemyAvatar.flip(true, false); //flip facing left
FSkin.getAvatars().put(90001 + i, enemyAvatar);
enemyPlayer.setAvatarIndex(90001 + i); enemyPlayer.setAvatarIndex(90001 + i);
aiPlayer.setPlayer(enemyPlayer); aiPlayer.setPlayer(enemyPlayer);
aiPlayer.setTeamNumber(currentEnemy.teamNumber); aiPlayer.setTeamNumber(currentEnemy.teamNumber);

View File

@@ -8,6 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Null; import com.badlogic.gdx.utils.Null;
@@ -673,4 +674,18 @@ public class UIScene extends Scene {
Gdx.input.setInputProcessor(stage); Gdx.input.setInputProcessor(stage);
super.enter(); super.enter();
} }
public TextureRegion getUIBackground() {
try {
Actor a = ui.getChild(0);
if (a instanceof Image) {
Drawable d = ((Image) a).getDrawable();
if (d instanceof TextureRegionDrawable) {
return ((TextureRegionDrawable) d).getRegion();
}
}
} catch (Exception e) {
return null;
}
return null;
}
} }

View File

@@ -695,7 +695,7 @@ public class MapStage extends GameStage {
duelScene.initDuels(player, mob); duelScene.initDuels(player, mob);
if (isInMap && effect != null) if (isInMap && effect != null)
duelScene.setDungeonEffect(effect); duelScene.setDungeonEffect(effect);
Forge.switchScene(DuelScene.instance()); Forge.switchScene(duelScene);
}, Forge.takeScreenshot(), true, false)); }, Forge.takeScreenshot(), true, false));
} }
}); });

View File

@@ -129,7 +129,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
FThreads.invokeInEdtNowOrLater(() -> { FThreads.invokeInEdtNowOrLater(() -> {
Forge.setTransitionScreen(new TransitionScreen(() -> { Forge.setTransitionScreen(new TransitionScreen(() -> {
duelScene.initDuels(player, mob); duelScene.initDuels(player, mob);
Forge.switchScene(DuelScene.instance()); Forge.switchScene(duelScene);
}, Forge.takeScreenshot(), true, false)); }, Forge.takeScreenshot(), true, false));
currentMob = mob; currentMob = mob;
WorldSave.getCurrentSave().autoSave(); WorldSave.getCurrentSave().autoSave();

View File

@@ -4,6 +4,8 @@ import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion;
import forge.Forge; import forge.Forge;
import forge.Graphics; import forge.Graphics;
import forge.adventure.scene.ArenaScene;
import forge.adventure.util.Config;
import forge.animation.ForgeAnimation; import forge.animation.ForgeAnimation;
import forge.assets.FSkin; import forge.assets.FSkin;
import forge.assets.FSkinImage; import forge.assets.FSkinImage;
@@ -19,20 +21,21 @@ public class TransitionScreen extends FContainer {
private BGAnimation bgAnimation; private BGAnimation bgAnimation;
private FProgressBar progressBar; private FProgressBar progressBar;
Runnable runnable; Runnable runnable;
TextureRegion textureRegion; TextureRegion textureRegion, screenUIBackground, playerAvatar, vsTexture;
String enemyAtlasPath;
private String message = ""; private String message = "";
boolean matchTransition, isloading, isIntro, isFadeMusic; boolean matchTransition, isloading, isIntro, isFadeMusic, isArenaScene;
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, 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); this(proc, screen, enterMatch, loading, false, false, loadingMessage, null, null, "");
} }
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading, boolean intro, boolean fadeMusic) { public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading, boolean intro, boolean fadeMusic) {
this(proc, screen, enterMatch, loading, intro, fadeMusic, ""); this(proc, screen, enterMatch, loading, intro, fadeMusic, "", null, null, "");
} }
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading, boolean intro, boolean fadeMusic, String loadingMessage) { public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading, boolean intro, boolean fadeMusic, String loadingMessage, TextureRegion vsIcon, TextureRegion player, String enemy) {
progressBar = new FProgressBar(); progressBar = new FProgressBar();
progressBar.setMaximum(100); progressBar.setMaximum(100);
progressBar.setPercentMode(true); progressBar.setPercentMode(true);
@@ -46,6 +49,16 @@ public class TransitionScreen extends FContainer {
isFadeMusic = fadeMusic; isFadeMusic = fadeMusic;
message = loadingMessage; message = loadingMessage;
Forge.advStartup = intro && Forge.selector.equals("Adventure"); Forge.advStartup = intro && Forge.selector.equals("Adventure");
if (Forge.getCurrentScene() instanceof ArenaScene) {
isArenaScene = true;
screenUIBackground = ((ArenaScene) Forge.getCurrentScene()).getUIBackground();
} else {
isArenaScene = false;
screenUIBackground = null;
}
playerAvatar = player;
enemyAtlasPath = enemy;
vsTexture = vsIcon;
} }
public FProgressBar getProgressBar() { public FProgressBar getProgressBar() {
@@ -63,7 +76,7 @@ public class TransitionScreen extends FContainer {
} }
private class BGAnimation extends ForgeAnimation { private class BGAnimation extends ForgeAnimation {
float DURATION = 0.6f; float DURATION = isArenaScene ? 1.2f : 0.6f;
private float progress = 0; private float progress = 0;
public void drawBackground(Graphics g) { public void drawBackground(Graphics g) {
@@ -91,7 +104,7 @@ public class TransitionScreen extends FContainer {
g.setAlphaComposite(oldAlpha); g.setAlphaComposite(oldAlpha);
} }
float xmod = Forge.getScreenHeight() > 2000 ? 1.5f : 1f; float xmod = Forge.getScreenHeight() > 2000 ? 1.5f : 1f;
xmod *= percentage; xmod *= 1f;//static logo only
float ymod; float ymod;
if (FSkin.getLogo() != null) { if (FSkin.getLogo() != null) {
ymod = Forge.getScreenHeight()/2 + (FSkin.getLogo().getHeight()*xmod)/2; ymod = Forge.getScreenHeight()/2 + (FSkin.getLogo().getHeight()*xmod)/2;
@@ -116,13 +129,44 @@ public class TransitionScreen extends FContainer {
} }
} else if (matchTransition) { } else if (matchTransition) {
if (textureRegion != null) { if (textureRegion != null) {
if (GuiBase.isAndroid()) { if (isArenaScene) {
g.drawChromatic(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), percentage); float screenW = Forge.isLandscapeMode() ? Forge.getScreenWidth() : Forge.getScreenHeight();
float screenH = Forge.isLandscapeMode() ? Forge.getScreenHeight() : Forge.getScreenWidth();
float scale = screenW/4;
float centerX = screenW/2;
float centerY = screenH/2;
TextureRegion enemyAvatar = Config.instance().getAtlas(enemyAtlasPath).createSprite("Avatar");
enemyAvatar.flip(true, false);
g.setColorRGBA(1f, 1f, 1f, 1.8f - percentage);
g.drawImage(screenUIBackground, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight());
g.resetColorRGBA(oldAlpha);
if (Forge.isLandscapeMode()) {
g.drawImage(playerAvatar, scale / 3 * percentage, centerY - scale / 2, scale, scale);
g.drawImage(enemyAvatar, screenW - scale - (percentage * scale / 3), centerY - scale / 2, scale, scale);
float vsScale = (screenW / 3.2f) * percentage;
g.startRotateTransform(screenW/2, screenH/2, 180-(180*percentage));
g.drawImage(vsTexture, centerX - vsScale / 2, centerY - vsScale / 2, vsScale, vsScale);
g.endTransform();
} else {
g.drawImage(playerAvatar, centerY - scale / 2, scale / 3 * percentage, scale, scale);
g.drawImage(enemyAvatar,centerY - scale / 2 ,screenW - scale - (percentage * scale / 3), scale, scale);
float vsScale = (screenW / 3.2f) * percentage;
g.startRotateTransform(screenH/2, screenW/2, 180-(180*percentage));
g.drawImage(vsTexture, centerY - vsScale / 2, centerX - vsScale / 2, vsScale, vsScale);
g.endTransform();
}
g.setAlphaComposite(1-(percentage+0.6f));
g.drawImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight());
g.setAlphaComposite(oldAlpha);
} else { } else {
int max = Forge.isLandscapeMode() ? Forge.getScreenHeight() / 32 : Forge.getScreenWidth() / 32; if (GuiBase.isAndroid()) {
int min = Forge.isLandscapeMode() ? Forge.getScreenHeight() / 64 : Forge.getScreenWidth() / 64; g.drawChromatic(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), percentage);
int val = MyRandom.getRandom().nextInt(max - min) + min; } else {
g.drawPixelatedWarp(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), val * percentage); int max = Forge.isLandscapeMode() ? Forge.getScreenHeight() / 32 : Forge.getScreenWidth() / 32;
int min = Forge.isLandscapeMode() ? Forge.getScreenHeight() / 64 : Forge.getScreenWidth() / 64;
int val = MyRandom.getRandom().nextInt(max - min) + min;
g.drawPixelatedWarp(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), val * percentage);
}
} }
} }
} else if (isIntro) { } else if (isIntro) {

View File

@@ -903,8 +903,9 @@ public class MatchScreen extends FScreen {
boolean isGameFast = MatchController.instance.isGameFast(); boolean isGameFast = MatchController.instance.isGameFast();
float midField = topPlayerPanel.getBottom(); float midField = topPlayerPanel.getBottom();
float promptHeight = !Forge.isLandscapeMode() || bottomPlayerPrompt == null ? 0f : bottomPlayerPrompt.getHeight()/1.3f;
float x = topPlayerPanel.getField().getLeft(); float x = topPlayerPanel.getField().getLeft();
float y = midField - topPlayerPanel.getField().getHeight(); float y = midField - topPlayerPanel.getField().getHeight() - promptHeight;
float w = getWidth() - x; float w = getWidth() - x;
float bgFullWidth, scaledbgHeight; float bgFullWidth, scaledbgHeight;
int multiplier = playerPanels.keySet().size() - 1; //fix scaling of background when zoomed in multiplayer int multiplier = playerPanels.keySet().size() - 1; //fix scaling of background when zoomed in multiplayer

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB