mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Merge pull request #1989 from kevlahnota/newmaster2
update TransitionScreen
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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" +
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
BIN
forge-gui/res/adventure/Shandalar/ui/vs.png
Normal file
BIN
forge-gui/res/adventure/Shandalar/ui/vs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.9 KiB |
Reference in New Issue
Block a user