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,22 +16,18 @@ public class PlayerSprite extends CharacterSprite {
private float playerSpeedModifier = 1f;
private float playerSpeedEquipmentModifier = 1f;
GameStage gameStage;
public PlayerSprite(GameStage gameStage) {
super(AdventurePlayer.current().spriteName());
this.gameStage=gameStage;
this.gameStage = gameStage;
setOriginX(getWidth() / 2);
Current.player().onPlayerChanged(new Runnable() {
@Override
public void run() {
PlayerSprite.this.updatePlayer();
}
});
Current.player().onPlayerChanged(PlayerSprite.this::updatePlayer);
playerSpeed = Config.instance().getConfigData().playerBaseSpeed;
//Attach signals here.
Current.player().onBlessing( () -> playerSpeedEquipmentModifier = Current.player().equipmentSpeed() );
Current.player().onEquipmentChanged( () -> playerSpeedEquipmentModifier = Current.player().equipmentSpeed() );
Current.player().onBlessing(() -> playerSpeedEquipmentModifier = Current.player().equipmentSpeed());
Current.player().onEquipmentChanged(() -> playerSpeedEquipmentModifier = Current.player().equipmentSpeed());
}
private void updatePlayer() {
@@ -89,6 +85,6 @@ public class PlayerSprite extends CharacterSprite {
}
public void setPosition(Vector2 oldPosition) {
setPosition(oldPosition.x,oldPosition.y);
setPosition(oldPosition.x, oldPosition.y);
}
}

View File

@@ -513,6 +513,8 @@ public class GameHUD extends Stage {
return;
if (!GameScene.instance().isNotInWorldMap()) //prevent showing this dialog to WorldMap
return;
if (Forge.restrictAdvMenus)
return;
dialog.getButtonTable().clear();
dialog.getContentTable().clear();
dialog.clearListeners();
@@ -657,8 +659,15 @@ public class GameHUD extends Stage {
public void setDebug(boolean b) {
debugMap = b;
}
public void playerIdle() {
if (MapStage.getInstance().isInMap()) {
MapStage.getInstance().getPlayerSprite().stop();
} else {
WorldStage.getInstance().getPlayerSprite().stop();
}
}
private void showDialog() {
playerIdle();
dialogButtonMap.clear();
for (int i = 0; i < dialog.getButtonTable().getCells().size; i++) {
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()));
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));
overlay.setX(actor.getX() + Float.parseFloat(prop.get("signXOffset").toString()));
overlay.setY(actor.getY() + Float.parseFloat(prop.get("signYOffset").toString()));
@@ -1160,6 +1160,7 @@ public class MapStage extends GameStage {
if (dialogStage == null){
setDialogStage(GameHUD.getInstance());
}
GameHUD.getInstance().playerIdle();
dialogButtonMap.clear();
for (int i = 0; i < dialog.getButtonTable().getCells().size; i++) {
dialogButtonMap.add((TextraButton) dialog.getButtonTable().getCells().get(i).getActor());

File diff suppressed because it is too large Load Diff