Merge pull request #3367 from kevlahnota/newmaster2

stop player movement when dialog is shown
This commit is contained in:
Anthony Calosa
2023-06-30 13:28:40 +08:00
committed by GitHub
4 changed files with 468 additions and 462 deletions

View File

@@ -16,16 +16,12 @@ public class PlayerSprite extends CharacterSprite {
private float playerSpeedModifier = 1f; private float playerSpeedModifier = 1f;
private float playerSpeedEquipmentModifier = 1f; private float playerSpeedEquipmentModifier = 1f;
GameStage gameStage; GameStage gameStage;
public PlayerSprite(GameStage gameStage) { public PlayerSprite(GameStage gameStage) {
super(AdventurePlayer.current().spriteName()); super(AdventurePlayer.current().spriteName());
this.gameStage = gameStage; this.gameStage = gameStage;
setOriginX(getWidth() / 2); setOriginX(getWidth() / 2);
Current.player().onPlayerChanged(new Runnable() { Current.player().onPlayerChanged(PlayerSprite.this::updatePlayer);
@Override
public void run() {
PlayerSprite.this.updatePlayer();
}
});
playerSpeed = Config.instance().getConfigData().playerBaseSpeed; playerSpeed = Config.instance().getConfigData().playerBaseSpeed;

View File

@@ -513,6 +513,8 @@ public class GameHUD extends Stage {
return; return;
if (!GameScene.instance().isNotInWorldMap()) //prevent showing this dialog to WorldMap if (!GameScene.instance().isNotInWorldMap()) //prevent showing this dialog to WorldMap
return; return;
if (Forge.restrictAdvMenus)
return;
dialog.getButtonTable().clear(); dialog.getButtonTable().clear();
dialog.getContentTable().clear(); dialog.getContentTable().clear();
dialog.clearListeners(); dialog.clearListeners();
@@ -657,8 +659,15 @@ public class GameHUD extends Stage {
public void setDebug(boolean b) { public void setDebug(boolean b) {
debugMap = b; debugMap = b;
} }
public void playerIdle() {
if (MapStage.getInstance().isInMap()) {
MapStage.getInstance().getPlayerSprite().stop();
} else {
WorldStage.getInstance().getPlayerSprite().stop();
}
}
private void showDialog() { private void showDialog() {
playerIdle();
dialogButtonMap.clear(); dialogButtonMap.clear();
for (int i = 0; i < dialog.getButtonTable().getCells().size; i++) { for (int i = 0; i < dialog.getButtonTable().getCells().size; i++) {
dialogButtonMap.add((TextraButton) dialog.getButtonTable().getCells().get(i).getActor()); dialogButtonMap.add((TextraButton) dialog.getButtonTable().getCells().get(i).getActor());

View File

@@ -828,7 +828,7 @@ public class MapStage extends GameStage {
sprite.setY(actor.getY() + Float.parseFloat(prop.get("signYOffset").toString())); sprite.setY(actor.getY() + Float.parseFloat(prop.get("signYOffset").toString()));
addMapActor(sprite); addMapActor(sprite);
if (!(data.overlaySprite == null | data.overlaySprite.isEmpty())) { if (!(data.overlaySprite == null || data.overlaySprite.isEmpty())) {
TextureSprite overlay = new TextureSprite(Config.instance().getAtlas(data.spriteAtlas).createSprite(data.overlaySprite)); TextureSprite overlay = new TextureSprite(Config.instance().getAtlas(data.spriteAtlas).createSprite(data.overlaySprite));
overlay.setX(actor.getX() + Float.parseFloat(prop.get("signXOffset").toString())); overlay.setX(actor.getX() + Float.parseFloat(prop.get("signXOffset").toString()));
overlay.setY(actor.getY() + Float.parseFloat(prop.get("signYOffset").toString())); overlay.setY(actor.getY() + Float.parseFloat(prop.get("signYOffset").toString()));
@@ -1160,6 +1160,7 @@ public class MapStage extends GameStage {
if (dialogStage == null){ if (dialogStage == null){
setDialogStage(GameHUD.getInstance()); setDialogStage(GameHUD.getInstance());
} }
GameHUD.getInstance().playerIdle();
dialogButtonMap.clear(); dialogButtonMap.clear();
for (int i = 0; i < dialog.getButtonTable().getCells().size; i++) { for (int i = 0; i < dialog.getButtonTable().getCells().size; i++) {
dialogButtonMap.add((TextraButton) dialog.getButtonTable().getCells().get(i).getActor()); dialogButtonMap.add((TextraButton) dialog.getButtonTable().getCells().get(i).getActor());

File diff suppressed because it is too large Load Diff