Merge pull request #6042 from kevlahnota/master2

fix autosell refresh, update SaveLoadScene
This commit is contained in:
kevlahnota
2024-09-03 10:14:00 +08:00
committed by GitHub
5 changed files with 51 additions and 31 deletions

View File

@@ -112,7 +112,7 @@ public class SaveLoadScene extends UIScene {
}
public class SaveSlot extends Selectable<TextraButton> {
private int slotNumber;
private final int slotNumber;
public SaveSlot(int slotNumber) {
super(Controls.newTextButton("..."));
@@ -163,27 +163,19 @@ public class SaveLoadScene extends UIScene {
if (slot > 0)
lastSelectedSlot = slot;
if (previews.containsKey(slot)) {
WorldSaveHeader header = previews.get(slot);
if (header.preview != null) {
previewImage.setDrawable(new TextureRegionDrawable(new Texture(header.preview)));
WorldSaveHeader worldSaveHeader = previews.get(slot);
if (worldSaveHeader.preview != null) {
previewImage.setDrawable(new TextureRegionDrawable(new Texture(worldSaveHeader.preview)));
previewImage.setScaling(Scaling.fit);
previewImage.layout();
previewImage.setVisible(true);
previewDate.setVisible(true);
if (header.saveDate != null)
previewDate.setText("[%98]" + DateFormat.getDateInstance().format(header.saveDate) + " " + DateFormat.getTimeInstance(DateFormat.SHORT).format(header.saveDate));
if (worldSaveHeader.saveDate != null)
previewDate.setText("[%98]" + DateFormat.getDateInstance().format(worldSaveHeader.saveDate) + " " + DateFormat.getTimeInstance(DateFormat.SHORT).format(worldSaveHeader.saveDate));
else
previewDate.setText("");
if (header.name.contains(Character.toString(ASCII_179))) {
String[] split = TextUtil.split(header.name, ASCII_179);
try {
playerLocation.setText(split[1]);
} catch (Exception e) {
playerLocation.setText("");
}
} else {
playerLocation.setText("");
}
//getLocation
playerLocation.setText(getSplitHeaderName(worldSaveHeader, true));
}
} else {
if (previewImage != null)
@@ -206,7 +198,7 @@ public class SaveLoadScene extends UIScene {
//Access to screen should be disabled, but stop the process just in case.
//Saving needs to be disabled inside maps until we can capture and load exact map state
//Otherwise location based events for quests can be skipped by saving and then loading outside the map
Dialog noSave = createGenericDialog("", Forge.getLocalizer().getMessage("lblGameNotSaved"), Forge.getLocalizer().getMessage("lblOK"),null, null, null);
Dialog noSave = createGenericDialog("", Forge.getLocalizer().getMessage("lblGameNotSaved"), Forge.getLocalizer().getMessage("lblOK"), null, null, null);
showDialog(noSave);
return;
}
@@ -311,26 +303,32 @@ public class SaveLoadScene extends UIScene {
try (FileInputStream fos = new FileInputStream(name.getAbsolutePath());
InflaterInputStream inf = new InflaterInputStream(fos);
ObjectInputStream oos = new ObjectInputStream(inf)) {
int slot = WorldSave.filenameToSlot(name.getName());
WorldSaveHeader header = (WorldSaveHeader) oos.readObject();
if (header.name.contains(Character.toString(ASCII_179))) {
String[] split = TextUtil.split(header.name, ASCII_179);
buttons.get(slot).actor.setText(split[0]);
//playerLocation.setText(split[1]);
} else {
buttons.get(slot).actor.setText(header.name);
}
previews.put(slot, header);
WorldSaveHeader worldSaveHeader = (WorldSaveHeader) oos.readObject();
//get header name
buttons.get(slot).actor.setText(getSplitHeaderName(worldSaveHeader, false));
previews.put(slot, worldSaveHeader);
}
} catch (ClassNotFoundException | IOException | GdxRuntimeException e) {
//e.printStackTrace();
}
}
}
}
private String getSplitHeaderName(WorldSaveHeader worldSaveHeader, boolean getLocation) {
String noMapData = "[RED]No Map Data!";
if (worldSaveHeader.name.contains(Character.toString(ASCII_179))) {
String[] split = TextUtil.split(worldSaveHeader.name, ASCII_179);
if (getLocation)
return split.length > 1 ? split[1] : noMapData;
else
return split[0];
}
return getLocation ? noMapData : worldSaveHeader.name;
}
public enum Modes {
Save,
Load,

View File

@@ -61,6 +61,8 @@ public class ShopScene extends ForgeScene {
}
}
AdventurePlayer.current().doAutosell();
if (screen != null)
screen.refresh();
}
private boolean confirmAutosell(int profit, int cards, float townPriceModifier) {

View File

@@ -4,6 +4,7 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.InputListener;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.utils.Align;
import forge.Forge;
import forge.adventure.util.Controls;
public class Console extends Window {
@@ -17,8 +18,10 @@ public class Console extends Window {
setVisible(false);
getStage().unfocus(input);
} else {
setVisible(true);
getStage().setKeyboardFocus(input);
if (!Forge.advFreezePlayerControls) {
setVisible(true);
getStage().setKeyboardFocus(input);
}
}
}

View File

@@ -2,6 +2,7 @@ package forge.adventure.stage;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Rectangle;
@@ -24,6 +25,7 @@ import com.github.tommyettinger.textra.TextraLabel;
import com.github.tommyettinger.textra.TypingAdapter;
import com.github.tommyettinger.textra.TypingLabel;
import forge.Forge;
import forge.Graphics;
import forge.adventure.character.CharacterSprite;
import forge.adventure.character.MapActor;
import forge.adventure.character.PlayerSprite;
@@ -34,6 +36,7 @@ import forge.adventure.pointofintrest.PointOfInterest;
import forge.adventure.scene.Scene;
import forge.adventure.scene.StartScene;
import forge.adventure.scene.TileMapScene;
import forge.adventure.util.Config;
import forge.adventure.util.Controls;
import forge.adventure.util.Current;
import forge.adventure.util.KeyBinding;
@@ -658,7 +661,7 @@ public abstract class GameStage extends Stage {
Timer.schedule(new Timer.Task() {
@Override
public void run() {
showImageDialog(Current.generateDefeatMessage(), null,
showImageDialog(Current.generateDefeatMessage(), getDefeatBadge(),
() -> FThreads.invokeInEdtNowOrLater(() -> Forge.setTransitionScreen(new TransitionScreen(() -> {
Forge.advFreezePlayerControls = false;
WorldStage.getInstance().setPosition(new Vector2(poi.getPosition().x - 16f, poi.getPosition().y + 16f));
@@ -670,5 +673,19 @@ public abstract class GameStage extends Stage {
}, 1f);
}//Spawn shouldn't be null
}
private FBufferedImage getDefeatBadge() {
FileHandle defeat = Config.instance().getFile("ui/defeat.png");
if (defeat.exists()) {
TextureRegion tr = new TextureRegion(Forge.getAssets().getTexture(defeat, true, false));
tr.flip(true, false);
return new FBufferedImage(88, 100) {
@Override
protected void draw(Graphics g, float w, float h) {
g.drawImage(tr, 0, 0, 88, 100);
}
};
}
return null;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB