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

View File

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

View File

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

View File

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

View File

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