mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Merge pull request #1994 from kevlahnota/newmaster2
update RewardActor tooltips
This commit is contained in:
@@ -6,6 +6,7 @@ import java.util.Deque;
|
|||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.*;
|
import com.badlogic.gdx.graphics.*;
|
||||||
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
|
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
|
||||||
@@ -1286,6 +1287,11 @@ public class Graphics {
|
|||||||
bitmapFont.setColor(color.r, color.g, color.b, alpha);
|
bitmapFont.setColor(color.r, color.g, color.b, alpha);
|
||||||
bitmapFont.draw(batch, text, x, y);
|
bitmapFont.draw(batch, text, x, y);
|
||||||
}
|
}
|
||||||
|
public void drawText(BitmapFont bitmapFont, GlyphLayout layout, float x, float y) {
|
||||||
|
if (bitmapFont == null || layout == null)
|
||||||
|
return;
|
||||||
|
bitmapFont.draw(batch, layout, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
public void drawText(String text, FSkinFont font, FSkinColor skinColor, float x, float y, float w, float h, boolean wrap, int horzAlignment, boolean centerVertically) {
|
public void drawText(String text, FSkinFont font, FSkinColor skinColor, float x, float y, float w, float h, boolean wrap, int horzAlignment, boolean centerVertically) {
|
||||||
drawText(text, font, skinColor.getColor(), x, y, w, h, wrap, horzAlignment, centerVertically);
|
drawText(text, font, skinColor.getColor(), x, y, w, h, wrap, horzAlignment, centerVertically);
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import forge.item.IPaperCard;
|
|||||||
import forge.player.GamePlayerUtil;
|
import forge.player.GamePlayerUtil;
|
||||||
import forge.player.PlayerControllerHuman;
|
import forge.player.PlayerControllerHuman;
|
||||||
import forge.screens.FScreen;
|
import forge.screens.FScreen;
|
||||||
|
import forge.screens.LoadingOverlay;
|
||||||
import forge.screens.match.MatchController;
|
import forge.screens.match.MatchController;
|
||||||
import forge.sound.MusicPlaylist;
|
import forge.sound.MusicPlaylist;
|
||||||
import forge.sound.SoundSystem;
|
import forge.sound.SoundSystem;
|
||||||
@@ -65,6 +66,7 @@ public class DuelScene extends ForgeScene {
|
|||||||
Deck playerDeck;
|
Deck playerDeck;
|
||||||
boolean chaosBattle = false;
|
boolean chaosBattle = false;
|
||||||
boolean callbackExit = false;
|
boolean callbackExit = false;
|
||||||
|
private LoadingOverlay matchOverlay;
|
||||||
List<IPaperCard> playerExtras = new ArrayList<>();
|
List<IPaperCard> playerExtras = new ArrayList<>();
|
||||||
List<IPaperCard> AIExtras = new ArrayList<>();
|
List<IPaperCard> AIExtras = new ArrayList<>();
|
||||||
|
|
||||||
@@ -82,7 +84,12 @@ public class DuelScene extends ForgeScene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void GameEnd() {
|
public void GameEnd() {
|
||||||
boolean winner = humanPlayer == hostedMatch.getGame().getMatch().getWinner();
|
boolean winner = false;
|
||||||
|
try {
|
||||||
|
winner = humanPlayer == hostedMatch.getGame().getMatch().getWinner();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
String enemyName = (enemy.nameOverride.isEmpty() ? enemy.getData().name : enemy.nameOverride);
|
String enemyName = (enemy.nameOverride.isEmpty() ? enemy.getData().name : enemy.nameOverride);
|
||||||
boolean showMessages = enemy.getData().copyPlayerDeck && Current.player().isUsingCustomDeck();
|
boolean showMessages = enemy.getData().copyPlayerDeck && Current.player().isUsingCustomDeck();
|
||||||
Current.player().clearBlessing();
|
Current.player().clearBlessing();
|
||||||
@@ -101,6 +108,7 @@ public class DuelScene extends ForgeScene {
|
|||||||
"Is that all you can do?", "You need to learn more to stand a chance.", "You weren't that bad.", "You made an effort at least.",
|
"Is that all you can do?", "You need to learn more to stand a chance.", "You weren't that bad.", "You made an effort at least.",
|
||||||
"From today, you can call me teacher.", "Hmph, predictable!", "I haven't used a fraction of my REAL power!");
|
"From today, you can call me teacher.", "Hmph, predictable!", "I haven't used a fraction of my REAL power!");
|
||||||
String message = Aggregates.random(insult);
|
String message = Aggregates.random(insult);
|
||||||
|
boolean finalWinner = winner;
|
||||||
FThreads.invokeInEdtNowOrLater(() -> FOptionPane.showMessageDialog(message, enemyName, new FBufferedImage(120, 120) {
|
FThreads.invokeInEdtNowOrLater(() -> FOptionPane.showMessageDialog(message, enemyName, new FBufferedImage(120, 120) {
|
||||||
@Override
|
@Override
|
||||||
protected void draw(Graphics g, float w, float h) {
|
protected void draw(Graphics g, float w, float h) {
|
||||||
@@ -111,17 +119,17 @@ public class DuelScene extends ForgeScene {
|
|||||||
@Override
|
@Override
|
||||||
public void run(Integer result) {
|
public void run(Integer result) {
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
afterGameEnd(enemyName, winner);
|
afterGameEnd(enemyName, finalWinner, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
afterGameEnd(enemyName, winner);
|
afterGameEnd(enemyName, winner, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void afterGameEnd(String enemyName, boolean winner) {
|
void afterGameEnd(String enemyName, boolean winner, boolean showOverlay) {
|
||||||
Gdx.app.postRunnable(() -> {
|
Runnable runnable = () -> Gdx.app.postRunnable(()-> {
|
||||||
SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music
|
SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music
|
||||||
dungeonEffect = null;
|
dungeonEffect = null;
|
||||||
callbackExit = false;
|
callbackExit = false;
|
||||||
@@ -134,6 +142,14 @@ public class DuelScene extends ForgeScene {
|
|||||||
((IAfterMatch) last).setWinner(winner);
|
((IAfterMatch) last).setWinner(winner);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
if (showOverlay) {
|
||||||
|
FThreads.invokeInEdtNowOrLater(() -> {
|
||||||
|
matchOverlay = new LoadingOverlay(runnable, true);
|
||||||
|
matchOverlay.show();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
runnable.run();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void addEffects(RegisteredPlayer player, Array<EffectData> effects) {
|
void addEffects(RegisteredPlayer player, Array<EffectData> effects) {
|
||||||
@@ -311,13 +327,17 @@ public class DuelScene extends ForgeScene {
|
|||||||
"It's all or nothing!", "It's all on the line!", "You can't back down now!", "Do you have what it takes?", "What will happen next?",
|
"It's all or nothing!", "It's all on the line!", "You can't back down now!", "Do you have what it takes?", "What will happen next?",
|
||||||
"Don't blink!", "You can't lose here!", "There's no turning back!", "It's all or nothing now!");
|
"Don't blink!", "You can't lose here!", "There's no turning back!", "It's all or nothing now!");
|
||||||
String message = Aggregates.random(list);
|
String message = Aggregates.random(list);
|
||||||
FThreads.delayInEDT(600, () -> FThreads.invokeInEdtNowOrLater(() -> FOptionPane.showMessageDialog(message, enemy.nameOverride.isEmpty() ? enemy.getData().name : enemy.nameOverride, new FBufferedImage(120, 120) {
|
matchOverlay = new LoadingOverlay(() -> FThreads.delayInEDT(300, () -> FThreads.invokeInEdtNowOrLater(() ->
|
||||||
@Override
|
FOptionPane.showMessageDialog(message, enemy.nameOverride.isEmpty() ? enemy.getData().name : enemy.nameOverride,
|
||||||
protected void draw(Graphics g, float w, float h) {
|
new FBufferedImage(120, 120) {
|
||||||
if (FSkin.getAvatars().get(90001) != null)
|
@Override
|
||||||
g.drawImage(FSkin.getAvatars().get(90001), 0, 0, w, h);
|
protected void draw(Graphics g, float w, float h) {
|
||||||
}
|
if (FSkin.getAvatars().get(90001) != null)
|
||||||
})));
|
g.drawImage(FSkin.getAvatars().get(90001), 0, 0, w, h);
|
||||||
|
}
|
||||||
|
}))), false);
|
||||||
|
} else {
|
||||||
|
matchOverlay = new LoadingOverlay(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final Player p : hostedMatch.getGame().getPlayers()) {
|
for (final Player p : hostedMatch.getGame().getPlayers()) {
|
||||||
@@ -329,6 +349,7 @@ public class DuelScene extends ForgeScene {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
super.enter();
|
super.enter();
|
||||||
|
matchOverlay.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,10 +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.GL20;
|
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.animation.ForgeAnimation;
|
|
||||||
import forge.assets.ImageCache;
|
|
||||||
import forge.gamemodes.match.LobbySlotType;
|
import forge.gamemodes.match.LobbySlotType;
|
||||||
import forge.interfaces.IUpdateable;
|
import forge.interfaces.IUpdateable;
|
||||||
import forge.screens.FScreen;
|
import forge.screens.FScreen;
|
||||||
@@ -16,14 +13,15 @@ import java.util.List;
|
|||||||
/**
|
/**
|
||||||
* base class to render base forge screens like the deck editor and matches
|
* base class to render base forge screens like the deck editor and matches
|
||||||
*/
|
*/
|
||||||
public abstract class ForgeScene extends Scene implements IUpdateable {
|
public abstract class ForgeScene extends Scene implements IUpdateable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render() {
|
public void render() {
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // Clear the screen.
|
/*Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // Clear the screen.
|
||||||
if (getScreen() == null) {
|
if (getScreen() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -50,30 +48,31 @@ public abstract class ForgeScene extends Scene implements IUpdateable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Forge.getGraphics().end();
|
Forge.getGraphics().end();*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void act(float delta) {
|
public void act(float delta) {
|
||||||
|
/*ImageCache.allowSingleLoad();
|
||||||
ImageCache.allowSingleLoad();
|
ForgeAnimation.advanceAll();*/
|
||||||
ForgeAnimation.advanceAll();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enter() {
|
public void enter() {
|
||||||
FOverlay.hideAll();
|
FOverlay.hideAll();
|
||||||
if(getScreen()!=null)
|
if (getScreen() != null)
|
||||||
getScreen().setSize(Forge.getScreenWidth(), Forge.getScreenHeight());
|
getScreen().setSize(Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||||
//update language for ForgeScene
|
//update language for ForgeScene
|
||||||
Forge.getLocalizer().setEnglish(Forge.forcedEnglishonCJKMissing);
|
Forge.getLocalizer().setEnglish(Forge.forcedEnglishonCJKMissing);
|
||||||
Forge.openScreen(getScreen());
|
Forge.openScreen(getScreen());
|
||||||
Gdx.input.setInputProcessor(Forge.getInputProcessor());
|
Gdx.input.setInputProcessor(Forge.getInputProcessor());
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract FScreen getScreen();
|
public abstract FScreen getScreen();
|
||||||
|
|
||||||
public void buildTouchListeners(int x, int y, List<FDisplayObject> potentialListeners) {
|
public void buildTouchListeners(int x, int y, List<FDisplayObject> potentialListeners) {
|
||||||
if(getScreen()!=null)
|
if (getScreen() != null)
|
||||||
getScreen().buildTouchListeners(x, y, potentialListeners);
|
getScreen().buildTouchListeners(x, y, potentialListeners);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import com.badlogic.gdx.graphics.Color;
|
|||||||
import com.badlogic.gdx.graphics.Pixmap;
|
import com.badlogic.gdx.graphics.Pixmap;
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
|
||||||
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.graphics.g2d.TextureRegion;
|
||||||
@@ -30,7 +32,6 @@ import forge.ImageKeys;
|
|||||||
import forge.adventure.data.ItemData;
|
import forge.adventure.data.ItemData;
|
||||||
import forge.adventure.scene.Scene;
|
import forge.adventure.scene.Scene;
|
||||||
import forge.assets.FSkin;
|
import forge.assets.FSkin;
|
||||||
import forge.assets.FSkinFont;
|
|
||||||
import forge.assets.ImageCache;
|
import forge.assets.ImageCache;
|
||||||
import forge.card.CardImageRenderer;
|
import forge.card.CardImageRenderer;
|
||||||
import forge.card.CardRenderer;
|
import forge.card.CardRenderer;
|
||||||
@@ -49,7 +50,7 @@ import static forge.adventure.util.Paths.ITEMS_ATLAS;
|
|||||||
* Render the rewards as a card on the reward scene.
|
* Render the rewards as a card on the reward scene.
|
||||||
*/
|
*/
|
||||||
public class RewardActor extends Actor implements Disposable, ImageFetcher.Callback {
|
public class RewardActor extends Actor implements Disposable, ImageFetcher.Callback {
|
||||||
Tooltip<Image> tooltip;
|
ImageToolTip tooltip;
|
||||||
HoldTooltip holdTooltip;
|
HoldTooltip holdTooltip;
|
||||||
Reward reward;
|
Reward reward;
|
||||||
ShaderProgram shaderGrayscale = Forge.getGraphics().getShaderGrayscale();
|
ShaderProgram shaderGrayscale = Forge.getGraphics().getShaderGrayscale();
|
||||||
@@ -86,15 +87,17 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
|
|||||||
if (T != null)
|
if (T != null)
|
||||||
T.dispose();
|
T.dispose();
|
||||||
}
|
}
|
||||||
public boolean toolTipIsVisible()
|
|
||||||
{
|
public boolean toolTipIsVisible() {
|
||||||
if(holdTooltip!=null)
|
if (holdTooltip != null)
|
||||||
return holdTooltip.tooltip_actor.getStage()!=null;
|
return holdTooltip.tooltip_actor.getStage() != null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Reward getReward() {
|
public Reward getReward() {
|
||||||
return reward;
|
return reward;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onImageFetched() {
|
public void onImageFetched() {
|
||||||
String imageKey = reward.getCard().getImageKey(false);
|
String imageKey = reward.getCard().getImageKey(false);
|
||||||
@@ -109,7 +112,7 @@ public boolean toolTipIsVisible()
|
|||||||
if (!Forge.getAssets().manager().contains(imageFile.getPath())) {
|
if (!Forge.getAssets().manager().contains(imageFile.getPath())) {
|
||||||
Forge.getAssets().manager().load(imageFile.getPath(), Texture.class, Forge.getAssets().getTextureFilter());
|
Forge.getAssets().manager().load(imageFile.getPath(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||||
Forge.getAssets().manager().finishLoadingAsset(imageFile.getPath());
|
Forge.getAssets().manager().finishLoadingAsset(imageFile.getPath());
|
||||||
count+=1;
|
count += 1;
|
||||||
}
|
}
|
||||||
Texture replacement = Forge.getAssets().manager().get(imageFile.getPath(), Texture.class, false);
|
Texture replacement = Forge.getAssets().manager().get(imageFile.getPath(), Texture.class, false);
|
||||||
if (replacement == null)
|
if (replacement == null)
|
||||||
@@ -122,7 +125,7 @@ public boolean toolTipIsVisible()
|
|||||||
}
|
}
|
||||||
toolTipImage.remove();
|
toolTipImage.remove();
|
||||||
toolTipImage = new Image(processDrawable(image));
|
toolTipImage = new Image(processDrawable(image));
|
||||||
if (GuiBase.isAndroid()||Forge.hasGamepad()) {
|
if (GuiBase.isAndroid() || Forge.hasGamepad()) {
|
||||||
if (holdTooltip.tooltip_image.getDrawable() instanceof TextureRegionDrawable) {
|
if (holdTooltip.tooltip_image.getDrawable() instanceof TextureRegionDrawable) {
|
||||||
((TextureRegionDrawable) holdTooltip.tooltip_image.getDrawable()).getRegion().getTexture().dispose();
|
((TextureRegionDrawable) holdTooltip.tooltip_image.getDrawable()).getRegion().getTexture().dispose();
|
||||||
}
|
}
|
||||||
@@ -155,7 +158,7 @@ public boolean toolTipIsVisible()
|
|||||||
if (!Forge.getAssets().manager().contains(frontFace.getPath())) {
|
if (!Forge.getAssets().manager().contains(frontFace.getPath())) {
|
||||||
Forge.getAssets().manager().load(frontFace.getPath(), Texture.class, Forge.getAssets().getTextureFilter());
|
Forge.getAssets().manager().load(frontFace.getPath(), Texture.class, Forge.getAssets().getTextureFilter());
|
||||||
Forge.getAssets().manager().finishLoadingAsset(frontFace.getPath());
|
Forge.getAssets().manager().finishLoadingAsset(frontFace.getPath());
|
||||||
count+=1;
|
count += 1;
|
||||||
}
|
}
|
||||||
Texture front = Forge.getAssets().manager().get(frontFace.getPath(), Texture.class, false);
|
Texture front = Forge.getAssets().manager().get(frontFace.getPath(), Texture.class, false);
|
||||||
if (front != null) {
|
if (front != null) {
|
||||||
@@ -164,7 +167,7 @@ public boolean toolTipIsVisible()
|
|||||||
loaded = false;
|
loaded = false;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.err.println("Failed to load image: "+frontFace.getPath());
|
System.err.println("Failed to load image: " + frontFace.getPath());
|
||||||
loaded = false;
|
loaded = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -183,13 +186,13 @@ public boolean toolTipIsVisible()
|
|||||||
ImageCache.updateSynqCount(backFace, 1);
|
ImageCache.updateSynqCount(backFace, 1);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.err.println("Failed to load image: "+backFace.getPath());
|
System.err.println("Failed to load image: " + backFace.getPath());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
String imagePath = ImageUtil.getImageRelativePath(reward.getCard(), "", true, false);
|
String imagePath = ImageUtil.getImageRelativePath(reward.getCard(), "", true, false);
|
||||||
File lookup = ImageKeys.hasSetLookup(imagePath) ? ImageKeys.setLookUpFile(imagePath, imagePath+"border") : null;
|
File lookup = ImageKeys.hasSetLookup(imagePath) ? ImageKeys.setLookUpFile(imagePath, imagePath + "border") : null;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
if (lookup != null) {
|
if (lookup != null) {
|
||||||
try {
|
try {
|
||||||
@@ -206,7 +209,7 @@ public boolean toolTipIsVisible()
|
|||||||
}
|
}
|
||||||
ImageCache.updateSynqCount(lookup, count);
|
ImageCache.updateSynqCount(lookup, count);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.err.println("Failed to load image: "+lookup.getPath());
|
System.err.println("Failed to load image: " + lookup.getPath());
|
||||||
loaded = false;
|
loaded = false;
|
||||||
}
|
}
|
||||||
} else if (!ImageCache.imageKeyFileExists(reward.getCard().getImageKey(false))) {
|
} else if (!ImageCache.imageKeyFileExists(reward.getCard().getImageKey(false))) {
|
||||||
@@ -225,10 +228,9 @@ public boolean toolTipIsVisible()
|
|||||||
Pixmap drawingMap = new Pixmap((int) backSprite.getWidth(), (int) backSprite.getHeight(), Pixmap.Format.RGBA8888);
|
Pixmap drawingMap = new Pixmap((int) backSprite.getWidth(), (int) backSprite.getHeight(), Pixmap.Format.RGBA8888);
|
||||||
|
|
||||||
DrawOnPixmap.draw(drawingMap, backSprite);
|
DrawOnPixmap.draw(drawingMap, backSprite);
|
||||||
if(reward.getItem()==null)
|
if (reward.getItem() == null) {
|
||||||
{
|
|
||||||
needsToBeDisposed = true;
|
needsToBeDisposed = true;
|
||||||
image=new Texture(drawingMap);
|
image = new Texture(drawingMap);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Sprite item = reward.getItem().sprite();
|
Sprite item = reward.getItem().sprite();
|
||||||
@@ -236,8 +238,8 @@ public boolean toolTipIsVisible()
|
|||||||
DrawOnPixmap.draw(drawingMap, (int) ((backSprite.getWidth() / 2f) - item.getWidth() / 2f), (int) ((backSprite.getHeight() / 4f) * 1.7f), item);
|
DrawOnPixmap.draw(drawingMap, (int) ((backSprite.getWidth() / 2f) - item.getWidth() / 2f), (int) ((backSprite.getHeight() / 4f) * 1.7f), item);
|
||||||
//DrawOnPixmap.drawText(drawingMap, String.valueOf(reward.getItem().name), 0, (int) ((backSprite.getHeight() / 8f) * 1f), backSprite.getWidth(), false);
|
//DrawOnPixmap.drawText(drawingMap, String.valueOf(reward.getItem().name), 0, (int) ((backSprite.getHeight() / 8f) * 1f), backSprite.getWidth(), false);
|
||||||
|
|
||||||
setItemTooltips(item);
|
setItemTooltips(item, backSprite);
|
||||||
image=new Texture(drawingMap);
|
image = new Texture(drawingMap);
|
||||||
drawingMap.dispose();
|
drawingMap.dispose();
|
||||||
needsToBeDisposed = true;
|
needsToBeDisposed = true;
|
||||||
break;
|
break;
|
||||||
@@ -250,23 +252,25 @@ public boolean toolTipIsVisible()
|
|||||||
Pixmap drawingMap = new Pixmap((int) backSprite.getWidth(), (int) backSprite.getHeight(), Pixmap.Format.RGBA8888);
|
Pixmap drawingMap = new Pixmap((int) backSprite.getWidth(), (int) backSprite.getHeight(), Pixmap.Format.RGBA8888);
|
||||||
|
|
||||||
DrawOnPixmap.draw(drawingMap, backSprite);
|
DrawOnPixmap.draw(drawingMap, backSprite);
|
||||||
Sprite gold = atlas.createSprite(reward.type.toString());
|
Sprite item = atlas.createSprite(reward.type.toString());
|
||||||
DrawOnPixmap.draw(drawingMap, (int) ((backSprite.getWidth() / 2f) - gold.getWidth() / 2f), (int) ((backSprite.getHeight() / 4f) * 1f), gold);
|
DrawOnPixmap.draw(drawingMap, (int) ((backSprite.getWidth() / 2f) - item.getWidth() / 2f), (int) ((backSprite.getHeight() / 4f) * 1f), item);
|
||||||
DrawOnPixmap.drawText(drawingMap, String.valueOf(reward.getCount()), 0, (int) ((backSprite.getHeight() / 4f) * 2f)-1, backSprite.getWidth(), true,Color.WHITE);
|
DrawOnPixmap.drawText(drawingMap, String.valueOf(reward.getCount()), 0, (int) ((backSprite.getHeight() / 4f) * 2f) - 1, backSprite.getWidth(), true, Color.WHITE);
|
||||||
|
|
||||||
image=new Texture(drawingMap);
|
setItemTooltips(item, backSprite);
|
||||||
|
image = new Texture(drawingMap);
|
||||||
drawingMap.dispose();
|
drawingMap.dispose();
|
||||||
needsToBeDisposed = true;
|
needsToBeDisposed = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (GuiBase.isAndroid()||Forge.hasGamepad()) {
|
if (GuiBase.isAndroid() || Forge.hasGamepad()) {
|
||||||
addListener(new ClickListener() {
|
addListener(new ClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void clicked(InputEvent event, float x, float y) {
|
public void clicked(InputEvent event, float x, float y) {
|
||||||
if (flipOnClick)
|
if (flipOnClick)
|
||||||
flip();
|
flip();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
|
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
|
||||||
hover = true;
|
hover = true;
|
||||||
@@ -276,6 +280,7 @@ public boolean toolTipIsVisible()
|
|||||||
public void exit(InputEvent event, float x, float y, int pointer, Actor fromActor) {
|
public void exit(InputEvent event, float x, float y, int pointer, Actor fromActor) {
|
||||||
hover = false;
|
hover = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
|
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
|
||||||
hover = true;
|
hover = true;
|
||||||
@@ -311,6 +316,7 @@ public boolean toolTipIsVisible()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void switchTooltip() {
|
private void switchTooltip() {
|
||||||
if (!Reward.Type.Card.equals(reward.type))
|
if (!Reward.Type.Card.equals(reward.type))
|
||||||
return;
|
return;
|
||||||
@@ -318,7 +324,7 @@ public boolean toolTipIsVisible()
|
|||||||
return;
|
return;
|
||||||
Texture alt = ImageCache.getImage(reward.getCard().getImageKey(true), false);
|
Texture alt = ImageCache.getImage(reward.getCard().getImageKey(true), false);
|
||||||
PaperCard altCard = ImageUtil.getPaperCardFromImageKey(reward.getCard().getCardAltImageKey());
|
PaperCard altCard = ImageUtil.getPaperCardFromImageKey(reward.getCard().getCardAltImageKey());
|
||||||
if (GuiBase.isAndroid()||Forge.hasGamepad()) {
|
if (GuiBase.isAndroid() || Forge.hasGamepad()) {
|
||||||
if (alternate) {
|
if (alternate) {
|
||||||
if (alt != null) {
|
if (alt != null) {
|
||||||
holdTooltip.tooltip_actor.clear();
|
holdTooltip.tooltip_actor.clear();
|
||||||
@@ -352,6 +358,7 @@ public boolean toolTipIsVisible()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private TextureRegionDrawable processDrawable(Texture texture) {
|
private TextureRegionDrawable processDrawable(Texture texture) {
|
||||||
TextureRegionDrawable drawable = new TextureRegionDrawable(ImageCache.croppedBorderImage(texture));
|
TextureRegionDrawable drawable = new TextureRegionDrawable(ImageCache.croppedBorderImage(texture));
|
||||||
float origW = texture.getWidth();
|
float origW = texture.getWidth();
|
||||||
@@ -368,7 +375,7 @@ public boolean toolTipIsVisible()
|
|||||||
newH = boundH;
|
newH = boundH;
|
||||||
newW = (newH * origW) / origH;
|
newW = (newH * origW) / origH;
|
||||||
}
|
}
|
||||||
float AR = 480f/270f;
|
float AR = 480f / 270f;
|
||||||
int x = Forge.getDeviceAdapter().getRealScreenSize(false).getLeft();
|
int x = Forge.getDeviceAdapter().getRealScreenSize(false).getLeft();
|
||||||
int y = Forge.getDeviceAdapter().getRealScreenSize(false).getRight();
|
int y = Forge.getDeviceAdapter().getRealScreenSize(false).getRight();
|
||||||
int realX = Forge.getDeviceAdapter().getRealScreenSize(true).getLeft();
|
int realX = Forge.getDeviceAdapter().getRealScreenSize(true).getLeft();
|
||||||
@@ -380,25 +387,26 @@ public boolean toolTipIsVisible()
|
|||||||
}
|
}
|
||||||
float fW = x > y ? x : y;
|
float fW = x > y ? x : y;
|
||||||
float fH = x > y ? y : x;
|
float fH = x > y ? y : x;
|
||||||
float mul = fW/fH < AR ? AR/(fW/fH) : (fW/fH)/AR;
|
float mul = fW / fH < AR ? AR / (fW / fH) : (fW / fH) / AR;
|
||||||
Float custom = Forge.isLandscapeMode() ? Config.instance().getSettingData().cardTooltipAdjLandscape : Config.instance().getSettingData().cardTooltipAdj;
|
Float custom = Forge.isLandscapeMode() ? Config.instance().getSettingData().cardTooltipAdjLandscape : Config.instance().getSettingData().cardTooltipAdj;
|
||||||
if (custom != null && custom != 1f) {
|
if (custom != null && custom != 1f) {
|
||||||
mul *= custom;
|
mul *= custom;
|
||||||
} else {
|
} else {
|
||||||
if (fW/fH >= 2f) {//tall display
|
if (fW / fH >= 2f) {//tall display
|
||||||
mul = (fW/fH) - ((fW/fH)/AR);
|
mul = (fW / fH) - ((fW / fH) / AR);
|
||||||
if ((fW/fH) >= 2.1f && (fW/fH) < 2.2f)
|
if ((fW / fH) >= 2.1f && (fW / fH) < 2.2f)
|
||||||
mul *= 0.9f;
|
mul *= 0.9f;
|
||||||
else if ((fW/fH) > 2.2f) //ultrawide 21:9 Galaxy Fold, Huawei X2, Xperia 1
|
else if ((fW / fH) > 2.2f) //ultrawide 21:9 Galaxy Fold, Huawei X2, Xperia 1
|
||||||
mul *= 0.8f;
|
mul *= 0.8f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Forge.isLandscapeMode())
|
if (Forge.isLandscapeMode())
|
||||||
drawable.setMinSize(newW*mul, newH);
|
drawable.setMinSize(newW * mul, newH);
|
||||||
else
|
else
|
||||||
drawable.setMinSize(newW, newH*mul);
|
drawable.setMinSize(newW, newH * mul);
|
||||||
return drawable;
|
return drawable;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setCardImage(Texture img) {
|
private void setCardImage(Texture img) {
|
||||||
if (img == null)
|
if (img == null)
|
||||||
return;
|
return;
|
||||||
@@ -407,41 +415,41 @@ public boolean toolTipIsVisible()
|
|||||||
image.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear);
|
image.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear);
|
||||||
if (toolTipImage == null)
|
if (toolTipImage == null)
|
||||||
toolTipImage = new Image(processDrawable(image));
|
toolTipImage = new Image(processDrawable(image));
|
||||||
if (GuiBase.isAndroid()||Forge.hasGamepad()) {
|
if (GuiBase.isAndroid() || Forge.hasGamepad()) {
|
||||||
if (holdTooltip == null)
|
if (holdTooltip == null)
|
||||||
holdTooltip = new HoldTooltip(toolTipImage);
|
holdTooltip = new HoldTooltip(toolTipImage);
|
||||||
if (frontSideUp())
|
addListener(holdTooltip);
|
||||||
addListener(holdTooltip);
|
|
||||||
} else {
|
} else {
|
||||||
if (tooltip == null)
|
if (tooltip == null)
|
||||||
tooltip = new Tooltip<Image>(toolTipImage);
|
tooltip = new ImageToolTip(toolTipImage);
|
||||||
tooltip.setInstant(true);
|
tooltip.setInstant(true);
|
||||||
if (frontSideUp())
|
addListener(tooltip);
|
||||||
addListener(tooltip);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void showTooltip() {
|
public void showTooltip() {
|
||||||
if (holdTooltip != null) {
|
if (holdTooltip != null) {
|
||||||
holdTooltip.show();
|
holdTooltip.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void hideTooltip() {
|
public void hideTooltip() {
|
||||||
if (holdTooltip != null) {
|
if (holdTooltip != null) {
|
||||||
holdTooltip.hide();
|
holdTooltip.hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Texture renderPlaceholder(Graphics g, PaperCard card){ //Use CardImageRenderer to output a Texture.
|
private Texture renderPlaceholder(Graphics g, PaperCard card) { //Use CardImageRenderer to output a Texture.
|
||||||
if(renderedCount++ == 0) {
|
if (renderedCount++ == 0) {
|
||||||
//The first time we find a card that has no art, render one out of view to fully initialize CardImageRenderer.
|
//The first time we find a card that has no art, render one out of view to fully initialize CardImageRenderer.
|
||||||
g.begin(preview_w, preview_h);
|
g.begin(preview_w, preview_h);
|
||||||
CardImageRenderer.drawCardImage(g, CardView.getCardForUi(reward.getCard()), false, -(preview_w + 20), 0, preview_w, preview_h, CardRenderer.CardStackPosition.Top, Forge.allowCardBG, true);
|
CardImageRenderer.drawCardImage(g, CardView.getCardForUi(reward.getCard()), false, -(preview_w + 20), 0, preview_w, preview_h, CardRenderer.CardStackPosition.Top, Forge.allowCardBG, true);
|
||||||
g.end();
|
g.end();
|
||||||
}
|
}
|
||||||
Matrix4 m = new Matrix4();
|
Matrix4 m = new Matrix4();
|
||||||
FrameBuffer frameBuffer = new FrameBuffer(Pixmap.Format.RGB888, preview_w, preview_h, false);
|
FrameBuffer frameBuffer = new FrameBuffer(Pixmap.Format.RGB888, preview_w, preview_h, false);
|
||||||
frameBuffer.begin();
|
frameBuffer.begin();
|
||||||
m.setToOrtho2D(0,preview_h, preview_w, -preview_h); //So it renders flipped directly.
|
m.setToOrtho2D(0, preview_h, preview_w, -preview_h); //So it renders flipped directly.
|
||||||
|
|
||||||
g.begin(preview_w, preview_h);
|
g.begin(preview_w, preview_h);
|
||||||
g.setProjectionMatrix(m);
|
g.setProjectionMatrix(m);
|
||||||
@@ -457,30 +465,38 @@ public boolean toolTipIsVisible()
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setItemTooltips(Sprite icon) {
|
private void setItemTooltips(Sprite icon, Sprite backSprite) {
|
||||||
if (generatedTooltip == null) {
|
if (generatedTooltip == null) {
|
||||||
float icon_w = 64f; float icon_h = 64f; //Sizes for the embedded icon. Could be made smaller on smaller resolutions.
|
Matrix4 m = new Matrix4();
|
||||||
Matrix4 m = new Matrix4();
|
GlyphLayout layout = new GlyphLayout();
|
||||||
ItemData item = getReward().getItem();
|
ItemData item = getReward().getItem();
|
||||||
FrameBuffer frameBuffer = new FrameBuffer(Pixmap.Format.RGBA8888, preview_w, preview_h, false);
|
FrameBuffer frameBuffer = new FrameBuffer(Pixmap.Format.RGBA8888, preview_w, preview_h, false);
|
||||||
frameBuffer.begin();
|
frameBuffer.begin();
|
||||||
m.setToOrtho2D(0,preview_h, preview_w, -preview_h); //So it renders flipped directly.
|
try {
|
||||||
getGraphics().begin(preview_w, preview_h);
|
m.setToOrtho2D(0, preview_h, preview_w, -preview_h); //So it renders flipped directly.
|
||||||
getGraphics().setProjectionMatrix(m);
|
getGraphics().begin(preview_w, preview_h);
|
||||||
getGraphics().startClip();
|
getGraphics().setProjectionMatrix(m);
|
||||||
//Draw item description panel.
|
getGraphics().startClip();
|
||||||
getGraphics().fillRect(new Color(0f, 0f, 0f, 0.96f), 0, 0, preview_w, preview_h); //Translucent background.
|
getGraphics().drawImage(backSprite, 0, 0, preview_w, preview_h);
|
||||||
getGraphics().drawRectLines(2, Color.WHITE, 0, 0, preview_w, preview_h); //Add a border.
|
getGraphics().drawImage(icon, preview_w / 2 - 75, 160, 160, 160);
|
||||||
getGraphics().drawImage(icon, 2, 2, icon_w, icon_h); //Draw the item's icon.
|
BitmapFont font = Controls.getBitmapFont("default", 4 / (preview_h / preview_w));
|
||||||
getGraphics().drawText(item.name, FSkinFont.get(24), Color.WHITE, icon_w + 2, 2, preview_w - (icon_w + 2), icon_h, false, 1, true); //Item name.
|
layout.setText(font, item != null ? item.name : getReward().type.name(), Color.WHITE, preview_w - 64, Align.center, true);
|
||||||
getGraphics().drawRectLines(1, Color.WHITE, 6, icon_h + 2, preview_w - 12, preview_h - (icon_h + 6)); //Description border.
|
getGraphics().drawText(font, layout, 32, preview_h - 70);
|
||||||
getGraphics().drawText(item.getDescription(), FSkinFont.get(18), Color.WHITE, 10, icon_h + 8, preview_w - 10, preview_h - 4, true, Align.left, false); //Description.
|
font = Controls.getBitmapFont("default", 3.5f / (preview_h / preview_w));
|
||||||
getGraphics().end();
|
layout.setText(font, item != null ? item.getDescription() : "Adds " +
|
||||||
getGraphics().endClip();
|
String.valueOf(getReward().getCount()) + " " + getReward().type, Color.WHITE, preview_w - 128, item != null ? Align.left : Align.center, true);
|
||||||
generatedTooltip = new Texture(Pixmap.createFromFrameBuffer(0, 0, preview_w, preview_h), Forge.isTextureFilteringEnabled());
|
getGraphics().drawText(font, layout, 64, preview_h / 2.5f);
|
||||||
frameBuffer.end();
|
getGraphics().end();
|
||||||
getGraphics().dispose();
|
getGraphics().endClip();
|
||||||
frameBuffer.dispose();
|
generatedTooltip = new Texture(Pixmap.createFromFrameBuffer(0, 0, preview_w, preview_h), Forge.isTextureFilteringEnabled());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
frameBuffer.end();
|
||||||
|
getGraphics().dispose();
|
||||||
|
frameBuffer.dispose();
|
||||||
|
Controls.getBitmapFont("default");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Rendering code ends here.
|
//Rendering code ends here.
|
||||||
@@ -488,18 +504,16 @@ public boolean toolTipIsVisible()
|
|||||||
if (toolTipImage == null)
|
if (toolTipImage == null)
|
||||||
toolTipImage = new Image(processDrawable(generatedTooltip));
|
toolTipImage = new Image(processDrawable(generatedTooltip));
|
||||||
|
|
||||||
if (frontSideUp()) {
|
if (GuiBase.isAndroid() || Forge.hasGamepad()) {
|
||||||
if (GuiBase.isAndroid()||Forge.hasGamepad()) {
|
if (holdTooltip == null)
|
||||||
if (holdTooltip == null)
|
holdTooltip = new HoldTooltip(toolTipImage);
|
||||||
holdTooltip = new HoldTooltip(toolTipImage);
|
addListener(holdTooltip);
|
||||||
addListener(holdTooltip);
|
} else {
|
||||||
} else {
|
if (tooltip == null) {
|
||||||
if (tooltip == null) {
|
tooltip = new ImageToolTip(toolTipImage);
|
||||||
tooltip = new Tooltip<>(toolTipImage);
|
tooltip.setInstant(true);
|
||||||
tooltip.setInstant(true);
|
|
||||||
}
|
|
||||||
addListener(tooltip);
|
|
||||||
}
|
}
|
||||||
|
addListener(tooltip);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -510,18 +524,21 @@ public boolean toolTipIsVisible()
|
|||||||
public boolean isFlipped() {
|
public boolean isFlipped() {
|
||||||
return (clicked && flipProcess >= 1);
|
return (clicked && flipProcess >= 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeTooltip() {
|
public void removeTooltip() {
|
||||||
if (tooltip != null) {
|
if (tooltip != null) {
|
||||||
tooltip.getActor().remove();
|
tooltip.getActor().remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearHoldToolTip() {
|
public void clearHoldToolTip() {
|
||||||
if (holdTooltip != null) {
|
if (holdTooltip != null) {
|
||||||
try {
|
try {
|
||||||
hover = false;
|
hover = false;
|
||||||
holdTooltip.tooltip_actor.clear();
|
holdTooltip.tooltip_actor.clear();
|
||||||
holdTooltip.tooltip_actor.remove();
|
holdTooltip.tooltip_actor.remove();
|
||||||
} catch (Exception e){}
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -531,6 +548,7 @@ public boolean toolTipIsVisible()
|
|||||||
clicked = true;
|
clicked = true;
|
||||||
flipProcess = 0;
|
flipProcess = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sold() {
|
public void sold() {
|
||||||
//todo add new card to be sold???
|
//todo add new card to be sold???
|
||||||
if (sold)
|
if (sold)
|
||||||
@@ -538,6 +556,7 @@ public boolean toolTipIsVisible()
|
|||||||
sold = true;
|
sold = true;
|
||||||
getColor().a = 0.5f;
|
getColor().a = 0.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void act(float delta) {
|
public void act(float delta) {
|
||||||
super.act(delta);
|
super.act(delta);
|
||||||
@@ -547,12 +566,12 @@ public boolean toolTipIsVisible()
|
|||||||
else
|
else
|
||||||
flipProcess = 1;
|
flipProcess = 1;
|
||||||
|
|
||||||
if (GuiBase.isAndroid()||Forge.hasGamepad()) {
|
if (GuiBase.isAndroid() || Forge.hasGamepad()) {
|
||||||
if (holdTooltip != null && frontSideUp() && !getListeners().contains(holdTooltip, true)) {
|
if (holdTooltip != null && !getListeners().contains(holdTooltip, true)) {
|
||||||
addListener(holdTooltip);
|
addListener(holdTooltip);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (tooltip != null && frontSideUp() && !getListeners().contains(tooltip, true)) {
|
if (tooltip != null && !getListeners().contains(tooltip, true)) {
|
||||||
addListener(tooltip);
|
addListener(tooltip);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -569,7 +588,7 @@ public boolean toolTipIsVisible()
|
|||||||
applyProjectionMatrix(batch);
|
applyProjectionMatrix(batch);
|
||||||
|
|
||||||
|
|
||||||
if (hover|hasKeyboardFocus())
|
if (hover | hasKeyboardFocus())
|
||||||
batch.setColor(0.5f, 0.5f, 0.5f, 1);
|
batch.setColor(0.5f, 0.5f, 0.5f, 1);
|
||||||
|
|
||||||
|
|
||||||
@@ -609,6 +628,7 @@ public boolean toolTipIsVisible()
|
|||||||
batch.draw(image, x, -getHeight() / 2, width, getHeight());
|
batch.draw(image, x, -getHeight() / 2, width, getHeight());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void drawCard(Batch batch, Texture image, float x, float width) {
|
private void drawCard(Batch batch, Texture image, float x, float width) {
|
||||||
if (image != null) {
|
if (image != null) {
|
||||||
if (!sold)
|
if (!sold)
|
||||||
@@ -629,11 +649,13 @@ public boolean toolTipIsVisible()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Graphics getGraphics() {
|
private Graphics getGraphics() {
|
||||||
if (graphics == null)
|
if (graphics == null)
|
||||||
graphics = new Graphics();
|
graphics = new Graphics();
|
||||||
return graphics;
|
return graphics;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyProjectionMatrix(Batch batch) {
|
private void applyProjectionMatrix(Batch batch) {
|
||||||
final Vector3 direction = new Vector3(0, 0, -1);
|
final Vector3 direction = new Vector3(0, 0, -1);
|
||||||
final Vector3 up = new Vector3(0, 1, 0);
|
final Vector3 up = new Vector3(0, 1, 0);
|
||||||
@@ -689,6 +711,19 @@ public boolean toolTipIsVisible()
|
|||||||
return computedTransform;
|
return computedTransform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ImageToolTip extends Tooltip<Image> {
|
||||||
|
public ImageToolTip(Image contents) {
|
||||||
|
super(contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
|
||||||
|
if (!frontSideUp())
|
||||||
|
return;
|
||||||
|
super.enter(event, x, y, pointer, fromActor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class HoldTooltip extends ActorGestureListener {
|
class HoldTooltip extends ActorGestureListener {
|
||||||
Image tooltip_image;
|
Image tooltip_image;
|
||||||
Table tooltip_actor;
|
Table tooltip_actor;
|
||||||
@@ -717,6 +752,8 @@ public boolean toolTipIsVisible()
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean longPress(Actor actor, float x, float y) {
|
public boolean longPress(Actor actor, float x, float y) {
|
||||||
|
if (!frontSideUp())
|
||||||
|
return false;
|
||||||
TextraButton done = actor.getStage().getRoot().findActor("done");
|
TextraButton done = actor.getStage().getRoot().findActor("done");
|
||||||
if (done != null && Reward.Type.Card.equals(reward.type)) {
|
if (done != null && Reward.Type.Card.equals(reward.type)) {
|
||||||
switchButton.setBounds(done.getX(), done.getY(), done.getWidth(), done.getHeight());
|
switchButton.setBounds(done.getX(), done.getY(), done.getWidth(), done.getHeight());
|
||||||
@@ -728,7 +765,7 @@ public boolean toolTipIsVisible()
|
|||||||
//right if poosible, if exceeds width, draw left
|
//right if poosible, if exceeds width, draw left
|
||||||
tooltip_actor.setX(actor.getRight());
|
tooltip_actor.setX(actor.getRight());
|
||||||
if (tooltip_actor.getX() + tooltip_actor.getWidth() > Scene.getIntendedWidth())
|
if (tooltip_actor.getX() + tooltip_actor.getWidth() > Scene.getIntendedWidth())
|
||||||
tooltip_actor.setX(Math.max(0,actor.getX() - tooltip_actor.getWidth()));
|
tooltip_actor.setX(Math.max(0, actor.getX() - tooltip_actor.getWidth()));
|
||||||
} else {
|
} else {
|
||||||
//middle
|
//middle
|
||||||
tooltip_actor.setX(Scene.getIntendedWidth() / 2 - tooltip_actor.getWidth() / 2);
|
tooltip_actor.setX(Scene.getIntendedWidth() / 2 - tooltip_actor.getWidth() / 2);
|
||||||
@@ -754,12 +791,16 @@ public boolean toolTipIsVisible()
|
|||||||
}
|
}
|
||||||
super.tap(event, x, y, count, button);
|
super.tap(event, x, y, count, button);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void show() {
|
public void show() {
|
||||||
|
if (!frontSideUp())
|
||||||
|
return;
|
||||||
tooltip_actor.setX(Scene.getIntendedWidth() / 2 - tooltip_actor.getWidth() / 2);
|
tooltip_actor.setX(Scene.getIntendedWidth() / 2 - tooltip_actor.getWidth() / 2);
|
||||||
tooltip_actor.setY(Scene.getIntendedHeight() / 2 - tooltip_actor.getHeight() / 2);
|
tooltip_actor.setY(Scene.getIntendedHeight() / 2 - tooltip_actor.getHeight() / 2);
|
||||||
getStage().addActor(tooltip_actor);
|
getStage().addActor(tooltip_actor);
|
||||||
shown = true;
|
shown = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void hide() {
|
public void hide() {
|
||||||
tooltip_actor.remove();
|
tooltip_actor.remove();
|
||||||
switchButton.remove();
|
switchButton.remove();
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package forge.screens;
|
package forge.screens;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
|
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.Graphics;
|
import forge.Graphics;
|
||||||
|
import forge.animation.ForgeAnimation;
|
||||||
import forge.assets.FSkin;
|
import forge.assets.FSkin;
|
||||||
import forge.assets.FSkinColor;
|
import forge.assets.FSkinColor;
|
||||||
import forge.assets.FSkinColor.Colors;
|
import forge.assets.FSkinColor.Colors;
|
||||||
@@ -20,19 +22,26 @@ public class LoadingOverlay extends FOverlay {
|
|||||||
private static final float LOGO_SIZE_FACTOR = 0.7f;
|
private static final float LOGO_SIZE_FACTOR = 0.7f;
|
||||||
private static final float INSETS_FACTOR = 0.025f;
|
private static final float INSETS_FACTOR = 0.025f;
|
||||||
private static final FSkinFont FONT = FSkinFont.get(22);
|
private static final FSkinFont FONT = FSkinFont.get(22);
|
||||||
|
private BGAnimation bgAnimation;
|
||||||
|
private Runnable runnable;
|
||||||
|
private boolean afterMatch;
|
||||||
|
|
||||||
private static FSkinColor getOverlayColor() {
|
private static FSkinColor getOverlayColor() {
|
||||||
if (Forge.isMobileAdventureMode)
|
if (Forge.isMobileAdventureMode)
|
||||||
return FSkinColor.get(Colors.ADV_CLR_ACTIVE).alphaColor(0.75f);
|
return FSkinColor.get(Colors.ADV_CLR_ACTIVE).alphaColor(0.75f);
|
||||||
return FSkinColor.get(Colors.CLR_ACTIVE).alphaColor(0.75f);
|
return FSkinColor.get(Colors.CLR_ACTIVE).alphaColor(0.75f);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static FSkinColor getForeColor() {
|
private static FSkinColor getForeColor() {
|
||||||
if (Forge.isMobileAdventureMode)
|
if (Forge.isMobileAdventureMode)
|
||||||
return FSkinColor.get(Colors.ADV_CLR_TEXT);
|
return FSkinColor.get(Colors.ADV_CLR_TEXT);
|
||||||
return FSkinColor.get(Colors.CLR_TEXT);
|
return FSkinColor.get(Colors.CLR_TEXT);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void show(String caption0, final Runnable runnable) {
|
public static void show(String caption0, final Runnable runnable) {
|
||||||
show(caption0, false, runnable);
|
show(caption0, false, runnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void show(String caption0, boolean textMode, final Runnable runnable) {
|
public static void show(String caption0, boolean textMode, final Runnable runnable) {
|
||||||
final LoadingOverlay loader = new LoadingOverlay(caption0, textMode);
|
final LoadingOverlay loader = new LoadingOverlay(caption0, textMode);
|
||||||
loader.show(); //show loading overlay then delay running remaining logic so UI can respond
|
loader.show(); //show loading overlay then delay running remaining logic so UI can respond
|
||||||
@@ -53,18 +62,27 @@ public class LoadingOverlay extends FOverlay {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String caption;
|
private String caption;
|
||||||
private boolean textMode = false;
|
private boolean textMode = false, match = false;
|
||||||
|
private TextureRegion textureRegion;
|
||||||
public LoadingOverlay(String caption0) {
|
|
||||||
caption = caption0;
|
|
||||||
textMode = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LoadingOverlay(String caption0, boolean textOnly) {
|
public LoadingOverlay(String caption0, boolean textOnly) {
|
||||||
caption = caption0;
|
caption = caption0;
|
||||||
textMode = textOnly;
|
textMode = textOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LoadingOverlay(Runnable toRunBeforeMatch) {
|
||||||
|
this(toRunBeforeMatch, false);
|
||||||
|
}
|
||||||
|
public LoadingOverlay(Runnable toRunBeforeMatch, boolean aftermatch) {
|
||||||
|
caption = "";
|
||||||
|
textMode = true;
|
||||||
|
textureRegion = Forge.takeScreenshot();
|
||||||
|
match = true;
|
||||||
|
bgAnimation = new BGAnimation();
|
||||||
|
runnable = toRunBeforeMatch;
|
||||||
|
afterMatch = aftermatch;
|
||||||
|
}
|
||||||
|
|
||||||
public void setCaption(String caption0) {
|
public void setCaption(String caption0) {
|
||||||
caption = caption0;
|
caption = caption0;
|
||||||
}
|
}
|
||||||
@@ -80,6 +98,13 @@ public class LoadingOverlay extends FOverlay {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawOverlay(Graphics g) {
|
public void drawOverlay(Graphics g) {
|
||||||
|
if (match) {
|
||||||
|
if (bgAnimation != null) {
|
||||||
|
bgAnimation.start();
|
||||||
|
bgAnimation.drawBackground(g);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!textMode) {
|
if (!textMode) {
|
||||||
float x = INSETS;
|
float x = INSETS;
|
||||||
float panelWidth = getWidth() - 2 * INSETS;
|
float panelWidth = getWidth() - 2 * INSETS;
|
||||||
@@ -114,4 +139,47 @@ public class LoadingOverlay extends FOverlay {
|
|||||||
g.drawText(caption, FONT, getForeColor(), 0, 0, getWidth(), getHeight(), true, Align.center, true);
|
g.drawText(caption, FONT, getForeColor(), 0, 0, getWidth(), getHeight(), true, Align.center, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean keyDown(int keyCode) {
|
||||||
|
if (match)
|
||||||
|
return true;
|
||||||
|
return super.keyDown(keyCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class BGAnimation extends ForgeAnimation {
|
||||||
|
float DURATION = 0.9f;
|
||||||
|
private float progress = 0;
|
||||||
|
|
||||||
|
public void drawBackground(Graphics g) {
|
||||||
|
float percentage = progress / DURATION;
|
||||||
|
float oldAlpha = g.getfloatAlphaComposite();
|
||||||
|
if (percentage < 0) {
|
||||||
|
percentage = 0;
|
||||||
|
} else if (percentage > 1) {
|
||||||
|
percentage = 1;
|
||||||
|
}
|
||||||
|
if (afterMatch) {
|
||||||
|
g.drawGrayTransitionImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), false, percentage);
|
||||||
|
} else {
|
||||||
|
g.setAlphaComposite(1 - percentage);
|
||||||
|
g.drawImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||||
|
g.setAlphaComposite(oldAlpha);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean advance(float dt) {
|
||||||
|
progress += dt;
|
||||||
|
return progress < DURATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onEnd(boolean endingAll) {
|
||||||
|
match = false;
|
||||||
|
hide();
|
||||||
|
if (runnable != null)
|
||||||
|
runnable.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user