update SaveLoadScene, InventoryScene

- fix layout, add table header and scrollable content
- update textratypist
This commit is contained in:
Anthony Calosa
2023-03-08 17:20:58 +08:00
parent 8066a9be83
commit 64c920421b
5 changed files with 101 additions and 136 deletions

View File

@@ -34,8 +34,8 @@ public class InventoryScene extends UIScene {
Button deleteButton; Button deleteButton;
Texture equipOverlay; Texture equipOverlay;
int columns = 0; int columns = 0;
public InventoryScene()
{ public InventoryScene() {
super(Forge.isLandscapeMode() ? "ui/inventory.json" : "ui/inventory_portrait.json"); super(Forge.isLandscapeMode() ? "ui/inventory.json" : "ui/inventory_portrait.json");
equipOverlay = new Texture(Config.instance().getFile(Paths.ITEMS_EQUIP)); equipOverlay = new Texture(Config.instance().getFile(Paths.ITEMS_EQUIP));
ui.onButtonPress("return", () -> done()); ui.onButtonPress("return", () -> done());
@@ -48,15 +48,15 @@ public class InventoryScene extends UIScene {
useButton.setDisabled(true); useButton.setDisabled(true);
deleteButton = ui.findActor("delete"); deleteButton = ui.findActor("delete");
itemDescription = ui.findActor("item_description"); itemDescription = ui.findActor("item_description");
ScrollPane pane = new ScrollPane(itemDescription);
pane.setBounds(itemDescription.getX(), itemDescription.getY(), itemDescription.getWidth() - 5, itemDescription.getHeight() - 5);
itemDescription.setAlignment(Align.topLeft); itemDescription.setAlignment(Align.topLeft);
ui.addActor(pane);
Array<Actor> children = ui.getChildren(); Array<Actor> children = ui.getChildren();
for (int i = 0, n = children.size; i < n; i++) for (int i = 0, n = children.size; i < n; i++) {
{
if(children.get(i).getName()!=null&&children.get(i).getName().startsWith("Equipment")) if (children.get(i).getName() != null && children.get(i).getName().startsWith("Equipment")) {
{
String slotName = children.get(i).getName().split("_")[1]; String slotName = children.get(i).getName().split("_")[1];
equipmentSlots.put(slotName, (Button) children.get(i)); equipmentSlots.put(slotName, (Button) children.get(i));
Actor slot = children.get(i); Actor slot = children.get(i);
@@ -64,31 +64,24 @@ public class InventoryScene extends UIScene {
@Override @Override
public void changed(ChangeEvent event, Actor actor) { public void changed(ChangeEvent event, Actor actor) {
Button button = ((Button) actor); Button button = ((Button) actor);
if(button.isChecked()) if (button.isChecked()) {
{ for (Button otherButton : equipmentSlots.values()) {
for(Button otherButton:equipmentSlots.values())
{
if (button != otherButton && otherButton.isChecked()) { if (button != otherButton && otherButton.isChecked()) {
otherButton.setChecked(false); otherButton.setChecked(false);
} }
} }
String item = Current.player().itemInSlot(slotName); String item = Current.player().itemInSlot(slotName);
if(item!=null&& !item.equals("")) if (item != null && !item.equals("")) {
{
Button changeButton = null; Button changeButton = null;
for(Button invButton:inventoryButtons) for (Button invButton : inventoryButtons) {
{ if (itemLocation.get(invButton) != null && itemLocation.get(invButton).equals(item)) {
if(itemLocation.get(invButton)!=null&&itemLocation.get(invButton).equals(item))
{
changeButton = invButton; changeButton = invButton;
break; break;
} }
} }
if (changeButton != null) if (changeButton != null)
changeButton.setChecked(true); changeButton.setChecked(true);
} } else {
else
{
setSelected(null); setSelected(null);
} }
} }
@@ -105,10 +98,7 @@ public class InventoryScene extends UIScene {
columns -= 1; columns -= 1;
if (columns <= 0) columns = 1; if (columns <= 0) columns = 1;
scrollPane.setActor(inventory); scrollPane.setActor(inventory);
itemDescription.setWrap(true); itemDescription.setWrap(true);
} }
private void showConfirm() { private void showConfirm() {
@@ -140,6 +130,7 @@ public class InventoryScene extends UIScene {
updateInventory(); updateInventory();
} }
public void equip() { public void equip() {
if (selected == null) return; if (selected == null) return;
ItemData data = ItemData.getItem(itemLocation.get(selected)); ItemData data = ItemData.getItem(itemLocation.get(selected));
@@ -153,7 +144,6 @@ public class InventoryScene extends UIScene {
stage.act(delta); stage.act(delta);
} }
private void triggerUse() { private void triggerUse() {
if (selected == null) return; if (selected == null) return;
@@ -163,6 +153,7 @@ public class InventoryScene extends UIScene {
done(); done();
ConsoleCommandInterpreter.getInstance().command(data.commandOnUse); ConsoleCommandInterpreter.getInstance().command(data.commandOnUse);
} }
private void use() { private void use() {
ItemData data = ItemData.getItem(itemLocation.get(selected)); ItemData data = ItemData.getItem(itemLocation.get(selected));
if (data == null) return; if (data == null) return;
@@ -173,14 +164,12 @@ public class InventoryScene extends UIScene {
private void setSelected(Button actor) { private void setSelected(Button actor) {
selected = actor; selected = actor;
if(actor==null) if (actor == null) {
{
itemDescription.setText(""); itemDescription.setText("");
deleteButton.setDisabled(true); deleteButton.setDisabled(true);
equipButton.setDisabled(true); equipButton.setDisabled(true);
useButton.setDisabled(true); useButton.setDisabled(true);
for(Button button:inventoryButtons) for (Button button : inventoryButtons) {
{
button.setChecked(false); button.setChecked(false);
} }
return; return;
@@ -200,31 +189,23 @@ public class InventoryScene extends UIScene {
if (Current.player().getShards() < data.shardsNeeded) if (Current.player().getShards() < data.shardsNeeded)
useButton.setDisabled(true); useButton.setDisabled(true);
if(data.equipmentSlot==null|| data.equipmentSlot.equals("")) if (data.equipmentSlot == null || data.equipmentSlot.equals("")) {
{
equipButton.setDisabled(true); equipButton.setDisabled(true);
} } else {
else
{
equipButton.setDisabled(false); equipButton.setDisabled(false);
if(equipButton instanceof TextraButton) if (equipButton instanceof TextraButton) {
{
TextraButton button = (TextraButton) equipButton; TextraButton button = (TextraButton) equipButton;
String item = Current.player().itemInSlot(data.equipmentSlot); String item = Current.player().itemInSlot(data.equipmentSlot);
if(item!=null&&item.equals(data.name)) if (item != null && item.equals(data.name)) {
{
button.setText("Unequip"); button.setText("Unequip");
} } else {
else
{
button.setText("Equip"); button.setText("Equip");
} }
button.layout(); button.layout();
} }
} }
for(Button button:inventoryButtons) for (Button button : inventoryButtons) {
{
if (actor != button && button.isChecked()) { if (actor != button && button.isChecked()) {
button.setChecked(false); button.setChecked(false);
} }
@@ -232,8 +213,6 @@ public class InventoryScene extends UIScene {
itemDescription.setText(data.name + "\n" + data.getDescription()); itemDescription.setText(data.name + "\n" + data.getDescription());
itemDescription.setWrap(true); itemDescription.setWrap(true);
itemDescription.layout(); itemDescription.layout();
} }
private void updateInventory() { private void updateInventory() {
@@ -255,13 +234,11 @@ public class InventoryScene extends UIScene {
}); });
inventoryButtons.add(newActor); inventoryButtons.add(newActor);
ItemData item = ItemData.getItem(Current.player().getItems().get(i)); ItemData item = ItemData.getItem(Current.player().getItems().get(i));
if(item==null) if (item == null) {
{
System.err.print("Can not find item name " + Current.player().getItems().get(i) + "\n"); System.err.print("Can not find item name " + Current.player().getItems().get(i) + "\n");
continue; continue;
} }
if(item.sprite()==null) if (item.sprite() == null) {
{
System.err.print("Can not find sprite name " + item.iconName + "\n"); System.err.print("Can not find sprite name " + item.iconName + "\n");
continue; continue;
} }
@@ -270,8 +247,7 @@ public class InventoryScene extends UIScene {
img.setY((newActor.getHeight() - img.getHeight()) / 2); img.setY((newActor.getHeight() - img.getHeight()) / 2);
newActor.addActor(img); newActor.addActor(img);
itemLocation.put(newActor, Current.player().getItems().get(i)); itemLocation.put(newActor, Current.player().getItems().get(i));
if(Current.player().getEquippedItems().contains(item.name)) if (Current.player().getEquippedItems().contains(item.name)) {
{
Image overlay = new Image(equipOverlay); Image overlay = new Image(equipOverlay);
overlay.setX((newActor.getWidth() - img.getWidth()) / 2); overlay.setX((newActor.getWidth() - img.getWidth()) / 2);
overlay.setY((newActor.getHeight() - img.getHeight()) / 2); overlay.setY((newActor.getHeight() - img.getHeight()) / 2);
@@ -280,8 +256,7 @@ public class InventoryScene extends UIScene {
newActor.addListener(new ChangeListener() { newActor.addListener(new ChangeListener() {
@Override @Override
public void changed(ChangeEvent event, Actor actor) { public void changed(ChangeEvent event, Actor actor) {
if(((Button) actor).isChecked()) if (((Button) actor).isChecked()) {
{
setSelected((Button) actor); setSelected((Button) actor);
} }
} }
@@ -311,9 +286,7 @@ public class InventoryScene extends UIScene {
} }
public Button createInventorySlot() { public Button createInventorySlot() {
ImageButton button = new ImageButton(Controls.getSkin(), "item_frame"); ImageButton button = new ImageButton(Controls.getSkin(), "item_frame");
return button; return button;
} }
} }

View File

@@ -56,8 +56,11 @@ public class SaveLoadScene extends UIScene {
private SaveLoadScene() { private SaveLoadScene() {
super(Forge.isLandscapeMode() ? "ui/save_load.json" : "ui/save_load_portrait.json"); super(Forge.isLandscapeMode() ? "ui/save_load.json" : "ui/save_load_portrait.json");
Table root = new Table();
layout = new Table(); layout = new Table();
stage.addActor(layout); scrollPane = new ScrollPane(layout);
Window window = ui.findActor("saveSlots");
window.add(root);
textInput = Controls.newTextField(""); textInput = Controls.newTextField("");
int c = 0; int c = 0;
String[] diffList = new String[Config.instance().getConfigData().difficulties.length]; String[] diffList = new String[Config.instance().getConfigData().difficulties.length];
@@ -78,9 +81,11 @@ public class SaveLoadScene extends UIScene {
playerLocation.setY(previewImage.getY() + 5); playerLocation.setY(previewImage.getY() + 5);
ui.addActor(playerLocation); ui.addActor(playerLocation);
header = Controls.newTextraLabel(Forge.getLocalizer().getMessage("lblSave")); header = Controls.newTextraLabel(Forge.getLocalizer().getMessage("lblSave"));
header.setAlignment(Align.center); root.row();
layout.add(header).pad(2).colspan(4).align(Align.center).expandX(); root.add(header).grow();
layout.row(); root.add(difficulty);
root.row();
root.add(scrollPane).colspan(2).width(window.getWidth() - 20);
autoSave = addSaveSlot(Forge.getLocalizer().getMessage("lblAutoSave"), WorldSave.AUTO_SAVE_SLOT); autoSave = addSaveSlot(Forge.getLocalizer().getMessage("lblAutoSave"), WorldSave.AUTO_SAVE_SLOT);
quickSave = addSaveSlot(Forge.getLocalizer().getMessage("lblQuickSave"), WorldSave.QUICK_SAVE_SLOT); quickSave = addSaveSlot(Forge.getLocalizer().getMessage("lblQuickSave"), WorldSave.QUICK_SAVE_SLOT);
for (int i = 1; i < NUMBEROFSAVESLOTS; i++) for (int i = 1; i < NUMBEROFSAVESLOTS; i++)
@@ -91,10 +96,6 @@ public class SaveLoadScene extends UIScene {
ui.onButtonPress("save", () -> SaveLoadScene.this.loadSave()); ui.onButtonPress("save", () -> SaveLoadScene.this.loadSave());
back = ui.findActor("return"); back = ui.findActor("return");
ui.onButtonPress("return", () -> SaveLoadScene.this.back()); ui.onButtonPress("return", () -> SaveLoadScene.this.back());
scrollPane = ui.findActor("saveSlots");
scrollPane.setActor(layout);
ui.addActor(difficulty);
difficulty.setSelectedIndex(1); difficulty.setSelectedIndex(1);
difficulty.setAlignment(Align.center); difficulty.setAlignment(Align.center);
difficulty.getStyle().fontColor = Color.GOLD; difficulty.getStyle().fontColor = Color.GOLD;
@@ -137,7 +138,6 @@ public class SaveLoadScene extends UIScene {
super.onSelect(scene); super.onSelect(scene);
updateSlot(slotNumber); updateSlot(slotNumber);
} }
} }
private Selectable<TextraButton> addSaveSlot(String name, int i) { private Selectable<TextraButton> addSaveSlot(String name, int i) {
@@ -151,7 +151,6 @@ public class SaveLoadScene extends UIScene {
} }
public boolean select(int slot) { public boolean select(int slot) {
if (!buttons.containsKey(slot)) if (!buttons.containsKey(slot))
return false; return false;
@@ -193,7 +192,6 @@ public class SaveLoadScene extends UIScene {
if (previewDate != null) if (previewDate != null)
previewDate.setVisible(false); previewDate.setVisible(false);
} }
return true; return true;
} }
@@ -247,7 +245,6 @@ public class SaveLoadScene extends UIScene {
Forge.clearTransitionScreen(); Forge.clearTransitionScreen();
} }
break; break;
} }
} }
@@ -281,7 +278,6 @@ public class SaveLoadScene extends UIScene {
for (File name : names) { for (File name : names) {
if (WorldSave.isSafeFile(name.getName())) { if (WorldSave.isSafeFile(name.getName())) {
try { try {
try (FileInputStream fos = new FileInputStream(name.getAbsolutePath()); try (FileInputStream fos = new FileInputStream(name.getAbsolutePath());
InflaterInputStream inf = new InflaterInputStream(fos); InflaterInputStream inf = new InflaterInputStream(fos);
ObjectInputStream oos = new ObjectInputStream(inf)) { ObjectInputStream oos = new ObjectInputStream(inf)) {
@@ -298,10 +294,7 @@ public class SaveLoadScene extends UIScene {
} }
previews.put(slot, header); previews.put(slot, header);
} }
} catch (ClassNotFoundException | IOException | GdxRuntimeException e) { } catch (ClassNotFoundException | IOException | GdxRuntimeException e) {
} }
} }
} }
@@ -353,5 +346,4 @@ public class SaveLoadScene extends UIScene {
} }
super.enter(); super.enter();
} }
} }

View File

@@ -43,7 +43,7 @@
<dependency> <dependency>
<groupId>com.github.tommyettinger</groupId> <groupId>com.github.tommyettinger</groupId>
<artifactId>textratypist</artifactId> <artifactId>textratypist</artifactId>
<version>0.7.8</version> <version>0.7.9</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.thoughtworks.xstream</groupId> <groupId>com.thoughtworks.xstream</groupId>

View File

@@ -10,7 +10,7 @@
"height": 270 "height": 270
}, },
{ {
"type": "Scroll", "type": "Window",
"name": "saveSlots", "name": "saveSlots",
"x": 15, "x": 15,
"y": 18, "y": 18,

View File

@@ -10,7 +10,7 @@
"height": 480 "height": 480
}, },
{ {
"type": "Scroll", "type": "Window",
"name": "saveSlots", "name": "saveSlots",
"x": 10, "x": 10,
"y": 106, "y": 106,