Fix mouse touchup controls and added loading transition

This commit is contained in:
Anthony Calosa
2022-02-20 17:24:13 +08:00
parent 66722d0302
commit a1650c84cc
6 changed files with 46 additions and 9 deletions

View File

@@ -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());

View File

@@ -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));
}
}

View File

@@ -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;
}

View File

@@ -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 {

View File

@@ -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);
}
}

View File

@@ -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()) {