mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
Fix mouse touchup controls and added loading transition
This commit is contained in:
@@ -78,7 +78,7 @@ public abstract class ForgeScene extends Scene implements IUpdateable {
|
||||
Gdx.input.setInputProcessor(Forge.getInputProcessor());
|
||||
}
|
||||
};
|
||||
Forge.setTransitionScreen(new TransitionScreen(runnable, ScreenUtils.getFrameBufferTexture(), true));
|
||||
Forge.setTransitionScreen(new TransitionScreen(runnable, ScreenUtils.getFrameBufferTexture(), true, false));
|
||||
} else {
|
||||
Forge.openScreen(getScreen());
|
||||
Gdx.input.setInputProcessor(Forge.getInputProcessor());
|
||||
|
||||
@@ -20,6 +20,7 @@ import forge.Forge;
|
||||
import forge.adventure.util.Controls;
|
||||
import forge.adventure.world.WorldSave;
|
||||
import forge.adventure.world.WorldSaveHeader;
|
||||
import forge.screens.TransitionScreen;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
@@ -105,8 +106,16 @@ public class SaveLoadScene extends UIScene {
|
||||
dialog.show(stage);
|
||||
stage.setKeyboardFocus(textInput);
|
||||
} else {
|
||||
if(WorldSave.load(currentSlot))
|
||||
Forge.switchScene(SceneType.GameScene.instance);
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if(WorldSave.load(currentSlot)) {
|
||||
Forge.clearTransitionScreen();
|
||||
Forge.switchScene(SceneType.GameScene.instance);
|
||||
}
|
||||
}
|
||||
};
|
||||
Forge.setTransitionScreen(new TransitionScreen(runnable, null, false, true));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -262,6 +262,8 @@ public abstract class GameStage extends Stage {
|
||||
}
|
||||
@Override
|
||||
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
|
||||
WorldStage.getInstance().GetPlayer().setMovementDirection(Vector2.Zero);
|
||||
MapStage.getInstance().GetPlayer().setMovementDirection(Vector2.Zero);
|
||||
stop();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package forge.adventure.world;
|
||||
|
||||
import forge.Forge;
|
||||
import forge.adventure.data.DifficultyData;
|
||||
import forge.adventure.player.AdventurePlayer;
|
||||
import forge.adventure.pointofintrest.PointOfInterestChanges;
|
||||
@@ -77,6 +78,7 @@ public class WorldSave {
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Forge.clearTransitionScreen();
|
||||
return false;
|
||||
} finally {
|
||||
|
||||
|
||||
@@ -1,22 +1,29 @@
|
||||
package forge.screens;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||
import forge.Forge;
|
||||
import forge.Graphics;
|
||||
import forge.animation.ForgeAnimation;
|
||||
import forge.assets.FSkin;
|
||||
import forge.assets.FSkinImage;
|
||||
import forge.gui.GuiBase;
|
||||
import forge.toolbox.FContainer;
|
||||
|
||||
public class TransitionScreen extends FContainer {
|
||||
private BGAnimation bgAnimation;
|
||||
Runnable runnable;
|
||||
TextureRegion textureRegion;
|
||||
boolean matchTransition;
|
||||
boolean matchTransition, isloading;
|
||||
|
||||
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch) {
|
||||
public TransitionScreen(Runnable proc, TextureRegion screen, boolean enterMatch, boolean loading) {
|
||||
bgAnimation = new BGAnimation();
|
||||
runnable = proc;
|
||||
textureRegion = screen;
|
||||
matchTransition = enterMatch;
|
||||
isloading = loading;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -27,6 +34,7 @@ public class TransitionScreen extends FContainer {
|
||||
private class BGAnimation extends ForgeAnimation {
|
||||
float DURATION = 0.6f;
|
||||
private float progress = 0;
|
||||
Texture transition_bg = new Texture(GuiBase.isAndroid() ? Gdx.files.internal("fallback_skin").child("title_bg_lq.png") : Gdx.files.classpath("fallback_skin").child("title_bg_lq.png"));
|
||||
|
||||
public void drawBackground(Graphics g) {
|
||||
float percentage = progress / DURATION;
|
||||
@@ -36,10 +44,26 @@ public class TransitionScreen extends FContainer {
|
||||
} else if (percentage > 1) {
|
||||
percentage = 1;
|
||||
}
|
||||
if (matchTransition) {
|
||||
g.drawWarpImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), percentage);
|
||||
if (isloading) {
|
||||
g.fillRect(Color.BLACK, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||
if (transition_bg != null) {
|
||||
g.setAlphaComposite(percentage);
|
||||
g.drawImage(transition_bg, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||
g.setAlphaComposite(oldAlpha);
|
||||
}
|
||||
float xmod = Forge.getScreenHeight() > 2000 ? 1.5f : 1f;
|
||||
xmod *= percentage;
|
||||
if (FSkin.hdLogo != null) {
|
||||
g.drawImage(FSkin.hdLogo, Forge.getScreenWidth()/2 - (FSkin.hdLogo.getWidth()*xmod)/2, Forge.getScreenHeight()/2 - (FSkin.hdLogo.getHeight()*xmod)/2, FSkin.hdLogo.getWidth()*xmod, FSkin.hdLogo.getHeight()*xmod);
|
||||
} else {
|
||||
g.drawImage(FSkinImage.LOGO,Forge.getScreenWidth()/2 - (FSkinImage.LOGO.getWidth()*xmod)/2, Forge.getScreenHeight()/2 - (FSkinImage.LOGO.getHeight()*xmod)/1.5f, FSkinImage.LOGO.getWidth()*xmod, FSkinImage.LOGO.getHeight()*xmod);
|
||||
}
|
||||
} else if (matchTransition) {
|
||||
if (textureRegion != null)
|
||||
g.drawWarpImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), percentage);
|
||||
} else {
|
||||
g.drawGrayTransitionImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), false, percentage);
|
||||
if (textureRegion != null)
|
||||
g.drawGrayTransitionImage(textureRegion, 0, 0, Forge.getScreenWidth(), Forge.getScreenHeight(), false, percentage);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -315,7 +315,7 @@ public class MatchController extends AbstractGuiGame {
|
||||
Forge.setCursor(null, "0");
|
||||
}
|
||||
};
|
||||
Forge.setTransitionScreen(new TransitionScreen(runnable, ScreenUtils.getFrameBufferTexture(), false));
|
||||
Forge.setTransitionScreen(new TransitionScreen(runnable, ScreenUtils.getFrameBufferTexture(), false, false));
|
||||
return;
|
||||
}
|
||||
if (hasLocalPlayers() || getGameView().isMatchOver()) {
|
||||
|
||||
Reference in New Issue
Block a user