mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
added item editor
This commit is contained in:
@@ -14,6 +14,9 @@ public class EditorMainWindow extends JFrame {
|
|||||||
BorderLayout layout=new BorderLayout();
|
BorderLayout layout=new BorderLayout();
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
add(tabs);
|
add(tabs);
|
||||||
|
tabs.addTab("POI",new PointOfInterestEditor());
|
||||||
|
tabs.addTab("World",new WorldEditor());
|
||||||
|
tabs.addTab("Items",new ItemsEditor());
|
||||||
tabs.addTab("Enemies",new EnemyEditor());
|
tabs.addTab("Enemies",new EnemyEditor());
|
||||||
setVisible(true);
|
setVisible(true);
|
||||||
setSize(800,600);
|
setSize(800,600);
|
||||||
|
|||||||
@@ -0,0 +1,115 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import forge.adventure.data.EffectData;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class EffectEditor extends JComponent {
|
||||||
|
EffectData currentData;
|
||||||
|
|
||||||
|
|
||||||
|
JTextField name =new JTextField();
|
||||||
|
JSpinner changeStartCards = new JSpinner(new SpinnerNumberModel(0, 0, 1000, 1));
|
||||||
|
JSpinner lifeModifier = new JSpinner(new SpinnerNumberModel(0, 0, 1000, 1));
|
||||||
|
JSpinner moveSpeed = new JSpinner(new SpinnerNumberModel(0f, 0, 1, 0.1f));
|
||||||
|
TextListEdit startBattleWithCard =new TextListEdit();
|
||||||
|
JCheckBox colorView =new JCheckBox();
|
||||||
|
EffectEditor opponent = null;
|
||||||
|
private boolean updating=false;
|
||||||
|
|
||||||
|
public EffectEditor(boolean isOpponentEffect)
|
||||||
|
{
|
||||||
|
if(!isOpponentEffect)
|
||||||
|
opponent=new EffectEditor(true);
|
||||||
|
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
|
||||||
|
JPanel parameters=new JPanel();
|
||||||
|
parameters.setBorder(BorderFactory.createTitledBorder("Effect"));
|
||||||
|
parameters.setLayout(new GridLayout(7,2)) ;
|
||||||
|
|
||||||
|
parameters.add(new JLabel("Name:")); parameters.add(name);
|
||||||
|
parameters.add(new JLabel("Start with extra cards:")); parameters.add(changeStartCards);
|
||||||
|
parameters.add(new JLabel("Change life:")); parameters.add(lifeModifier);
|
||||||
|
parameters.add(new JLabel("Movement speed:")); parameters.add(moveSpeed);
|
||||||
|
parameters.add(new JLabel("Start battle with cards:")); parameters.add(startBattleWithCard);
|
||||||
|
parameters.add(new JLabel("color view:")); parameters.add(colorView);
|
||||||
|
add(parameters);
|
||||||
|
if(!isOpponentEffect)
|
||||||
|
{ add(new JLabel("Opponent:")); add(opponent);}
|
||||||
|
|
||||||
|
|
||||||
|
changeStartCards.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
lifeModifier.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
moveSpeed.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
colorView.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
name.getDocument().addDocumentListener(new DocumentChangeListener(() -> EffectEditor.this.updateEffect()));
|
||||||
|
startBattleWithCard.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(() -> EffectEditor.this.updateEffect()));
|
||||||
|
if(opponent!=null)
|
||||||
|
|
||||||
|
opponent.addChangeListener(e -> EffectEditor.this.updateEffect());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateEffect() {
|
||||||
|
if(currentData==null||updating)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
currentData.name=name.getText();
|
||||||
|
currentData.changeStartCards=((Integer)changeStartCards.getValue()).intValue();
|
||||||
|
currentData.lifeModifier= ((Integer)lifeModifier.getValue()).intValue();
|
||||||
|
currentData.moveSpeed= ((Float)moveSpeed.getValue()).floatValue();
|
||||||
|
currentData.startBattleWithCard = startBattleWithCard.getList();
|
||||||
|
currentData.colorView = colorView.isSelected();
|
||||||
|
currentData.opponent = opponent.currentData;
|
||||||
|
|
||||||
|
ChangeListener[] listeners = listenerList.getListeners(ChangeListener.class);
|
||||||
|
if (listeners != null && listeners.length > 0) {
|
||||||
|
ChangeEvent evt = new ChangeEvent(this);
|
||||||
|
for (ChangeListener listener : listeners) {
|
||||||
|
listener.stateChanged(evt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public void addChangeListener(ChangeListener l) {
|
||||||
|
listenerList.add(ChangeListener.class, l);
|
||||||
|
}
|
||||||
|
public void setCurrentEffect(EffectData data)
|
||||||
|
{
|
||||||
|
if(data==null)
|
||||||
|
return;
|
||||||
|
currentData=data;
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
public EffectData getCurrentEffect()
|
||||||
|
{
|
||||||
|
return currentData;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refresh() {
|
||||||
|
setEnabled(currentData!=null);
|
||||||
|
if(currentData==null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
updating=true;
|
||||||
|
name.setText(currentData.name);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
lifeModifier.setValue(currentData.lifeModifier);
|
||||||
|
changeStartCards.setValue(currentData.changeStartCards);
|
||||||
|
startBattleWithCard.setText(currentData.startBattleWithCard);
|
||||||
|
colorView.setSelected(currentData.colorView);
|
||||||
|
moveSpeed.setValue(currentData.moveSpeed);
|
||||||
|
if(opponent!=null)
|
||||||
|
opponent.setCurrentEffect(currentData.opponent);
|
||||||
|
|
||||||
|
|
||||||
|
updating=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,8 +3,6 @@ package forge.adventure.editor;
|
|||||||
import forge.adventure.data.EnemyData;
|
import forge.adventure.data.EnemyData;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.event.ChangeEvent;
|
|
||||||
import javax.swing.event.ChangeListener;
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -15,6 +13,7 @@ public class EnemyEdit extends JComponent {
|
|||||||
|
|
||||||
|
|
||||||
JTextField nameField=new JTextField();
|
JTextField nameField=new JTextField();
|
||||||
|
JTextField colorField=new JTextField();
|
||||||
JSpinner lifeFiled= new JSpinner(new SpinnerNumberModel(0, 0, 1000, 1));
|
JSpinner lifeFiled= new JSpinner(new SpinnerNumberModel(0, 0, 1000, 1));
|
||||||
JSpinner spawnRate= new JSpinner(new SpinnerNumberModel(0.0, 0., 1, 0.1));
|
JSpinner spawnRate= new JSpinner(new SpinnerNumberModel(0.0, 0., 1, 0.1));
|
||||||
JSpinner difficulty= new JSpinner(new SpinnerNumberModel(0.0, 0., 1, 0.1));
|
JSpinner difficulty= new JSpinner(new SpinnerNumberModel(0.0, 0., 1, 0.1));
|
||||||
@@ -30,7 +29,7 @@ public class EnemyEdit extends JComponent {
|
|||||||
{
|
{
|
||||||
|
|
||||||
JComponent center=new JComponent() { };
|
JComponent center=new JComponent() { };
|
||||||
center.setLayout(new GridLayout(8,2));
|
center.setLayout(new GridLayout(9,2));
|
||||||
|
|
||||||
center.add(new JLabel("Name:")); center.add(nameField);
|
center.add(new JLabel("Name:")); center.add(nameField);
|
||||||
center.add(new JLabel("Life:")); center.add(lifeFiled);
|
center.add(new JLabel("Life:")); center.add(lifeFiled);
|
||||||
@@ -40,72 +39,24 @@ public class EnemyEdit extends JComponent {
|
|||||||
center.add(new JLabel("Deck:")); center.add(deck);
|
center.add(new JLabel("Deck:")); center.add(deck);
|
||||||
center.add(new JLabel("Sprite:")); center.add(atlas);
|
center.add(new JLabel("Sprite:")); center.add(atlas);
|
||||||
center.add(new JLabel("Equipment:")); center.add(equipment);
|
center.add(new JLabel("Equipment:")); center.add(equipment);
|
||||||
|
center.add(new JLabel("Colors:")); center.add(colorField);
|
||||||
BorderLayout layout=new BorderLayout();
|
BorderLayout layout=new BorderLayout();
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
add(center,BorderLayout.PAGE_START);
|
add(center,BorderLayout.PAGE_START);
|
||||||
add(rewards,BorderLayout.CENTER);
|
add(rewards,BorderLayout.CENTER);
|
||||||
add(preview,BorderLayout.LINE_START);
|
add(preview,BorderLayout.LINE_START);
|
||||||
|
|
||||||
equipment.getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
equipment.getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
@Override
|
atlas.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
public void run() {
|
colorField.getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
EnemyEdit.this.updateEnemy();
|
nameField.getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
}
|
deck.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(() -> EnemyEdit.this.updateEnemy()));
|
||||||
}));
|
lifeFiled.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
atlas.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
speed.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
@Override
|
difficulty.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
public void run() {
|
spawnRate.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
EnemyEdit.this.updateEnemy();
|
rewards.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
}
|
lifeFiled.addChangeListener(e -> EnemyEdit.this.updateEnemy());
|
||||||
}));
|
|
||||||
nameField.getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
deck.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
lifeFiled.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
speed.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
difficulty.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
spawnRate.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
rewards.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
lifeFiled.addChangeListener(new ChangeListener() {
|
|
||||||
@Override
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
|
||||||
EnemyEdit.this.updateEnemy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,6 +64,7 @@ public class EnemyEdit extends JComponent {
|
|||||||
if(currentData==null||updating)
|
if(currentData==null||updating)
|
||||||
return;
|
return;
|
||||||
currentData.name=nameField.getText();
|
currentData.name=nameField.getText();
|
||||||
|
currentData.colors=colorField.getText();
|
||||||
currentData.life= (int) lifeFiled.getValue();
|
currentData.life= (int) lifeFiled.getValue();
|
||||||
currentData.sprite= atlas.getEdit().getText();
|
currentData.sprite= atlas.getEdit().getText();
|
||||||
if(equipment.getText().isEmpty())
|
if(equipment.getText().isEmpty())
|
||||||
@@ -141,6 +93,7 @@ public class EnemyEdit extends JComponent {
|
|||||||
}
|
}
|
||||||
updating=true;
|
updating=true;
|
||||||
nameField.setText(currentData.name);
|
nameField.setText(currentData.name);
|
||||||
|
colorField.setText(currentData.colors);
|
||||||
lifeFiled.setValue(currentData.life);
|
lifeFiled.setValue(currentData.life);
|
||||||
atlas.getEdit().setText(currentData.sprite);
|
atlas.getEdit().setText(currentData.sprite);
|
||||||
if(currentData.equipment!=null)
|
if(currentData.equipment!=null)
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import forge.adventure.data.ItemData;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Editor class to edit configuration, maybe moved or removed
|
||||||
|
*/
|
||||||
|
public class ItemEdit extends JComponent {
|
||||||
|
ItemData currentData;
|
||||||
|
|
||||||
|
|
||||||
|
JTextField nameField=new JTextField();
|
||||||
|
JTextField equipmentSlot=new JTextField();
|
||||||
|
JTextField iconName=new JTextField();
|
||||||
|
EffectEditor effect=new EffectEditor(false);
|
||||||
|
JTextField description=new JTextField();
|
||||||
|
JCheckBox questItem=new JCheckBox();
|
||||||
|
JSpinner cost= new JSpinner(new SpinnerNumberModel(0, 0, 100000, 1));
|
||||||
|
|
||||||
|
private boolean updating=false;
|
||||||
|
|
||||||
|
public ItemEdit()
|
||||||
|
{
|
||||||
|
|
||||||
|
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
|
||||||
|
JPanel parameters=new JPanel();
|
||||||
|
parameters.setBorder(BorderFactory.createTitledBorder("Parameter"));
|
||||||
|
parameters.setLayout(new GridLayout(6,2)) ;
|
||||||
|
|
||||||
|
parameters.add(new JLabel("Name:")); parameters.add(nameField);
|
||||||
|
parameters.add(new JLabel("equipmentSlot:")); parameters.add(equipmentSlot);
|
||||||
|
parameters.add(new JLabel("description:")); parameters.add(description);
|
||||||
|
parameters.add(new JLabel("iconName")); parameters.add(iconName);
|
||||||
|
parameters.add(new JLabel("questItem")); parameters.add(questItem);
|
||||||
|
parameters.add(new JLabel("cost")); parameters.add(cost);
|
||||||
|
|
||||||
|
add(parameters);
|
||||||
|
add(effect);
|
||||||
|
|
||||||
|
nameField.getDocument().addDocumentListener(new DocumentChangeListener(() -> ItemEdit.this.updateItem()));
|
||||||
|
equipmentSlot.getDocument().addDocumentListener(new DocumentChangeListener(() -> ItemEdit.this.updateItem()));
|
||||||
|
description.getDocument().addDocumentListener(new DocumentChangeListener(() -> ItemEdit.this.updateItem()));
|
||||||
|
iconName.getDocument().addDocumentListener(new DocumentChangeListener(() -> ItemEdit.this.updateItem()));
|
||||||
|
cost.addChangeListener(e -> ItemEdit.this.updateItem());
|
||||||
|
questItem.addChangeListener(e -> ItemEdit.this.updateItem());
|
||||||
|
effect.addChangeListener(e -> ItemEdit.this.updateItem());
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateItem() {
|
||||||
|
if(currentData==null||updating)
|
||||||
|
return;
|
||||||
|
currentData.name=nameField.getText();
|
||||||
|
currentData.equipmentSlot= equipmentSlot.getText();
|
||||||
|
currentData.effect= effect.getCurrentEffect();
|
||||||
|
currentData.description=description.getText();
|
||||||
|
currentData.iconName=iconName.getText();
|
||||||
|
currentData.questItem=questItem.isSelected();
|
||||||
|
currentData.cost=((Integer) cost.getValue()).intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCurrentItem(ItemData data)
|
||||||
|
{
|
||||||
|
currentData=data;
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refresh() {
|
||||||
|
setEnabled(currentData!=null);
|
||||||
|
if(currentData==null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
updating=true;
|
||||||
|
nameField.setText(currentData.name);
|
||||||
|
effect.setCurrentEffect(currentData.effect);
|
||||||
|
equipmentSlot.setText(currentData.equipmentSlot);
|
||||||
|
description.setText(currentData.description);
|
||||||
|
iconName.setText(currentData.iconName);
|
||||||
|
questItem.setSelected(currentData.questItem);
|
||||||
|
cost.setValue(currentData.cost);
|
||||||
|
|
||||||
|
updating=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.files.FileHandle;
|
||||||
|
import com.badlogic.gdx.utils.Array;
|
||||||
|
import com.badlogic.gdx.utils.Json;
|
||||||
|
import com.badlogic.gdx.utils.JsonWriter;
|
||||||
|
import forge.adventure.data.ItemData;
|
||||||
|
import forge.adventure.util.Config;
|
||||||
|
import forge.adventure.util.Paths;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
public class ItemsEditor extends JComponent {
|
||||||
|
DefaultListModel<ItemData> model = new DefaultListModel<>();
|
||||||
|
JList<ItemData> list = new JList<>(model);
|
||||||
|
JToolBar toolBar = new JToolBar("toolbar");
|
||||||
|
ItemEdit edit=new ItemEdit();
|
||||||
|
static SwingAtlas itemAtlas;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class ItemDataRenderer extends DefaultListCellRenderer {
|
||||||
|
@Override
|
||||||
|
public Component getListCellRendererComponent(
|
||||||
|
JList list, Object value, int index,
|
||||||
|
boolean isSelected, boolean cellHasFocus) {
|
||||||
|
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
||||||
|
if(!(value instanceof ItemData))
|
||||||
|
return label;
|
||||||
|
ItemData Item=(ItemData) value;
|
||||||
|
// Get the renderer component from parent class
|
||||||
|
|
||||||
|
label.setText(Item.name);
|
||||||
|
if(itemAtlas==null)
|
||||||
|
itemAtlas=new SwingAtlas(Config.instance().getFile(Paths.ITEMS_ATLAS));
|
||||||
|
|
||||||
|
if(itemAtlas.has(Item.iconName))
|
||||||
|
label.setIcon(itemAtlas.get(Item.iconName));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImageIcon img=itemAtlas.getAny();
|
||||||
|
if(img!=null)
|
||||||
|
label.setIcon(img);
|
||||||
|
}
|
||||||
|
return label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void addButton(String name, ActionListener action)
|
||||||
|
{
|
||||||
|
JButton newButton=new JButton(name);
|
||||||
|
newButton.addActionListener(action);
|
||||||
|
toolBar.add(newButton);
|
||||||
|
|
||||||
|
}
|
||||||
|
public ItemsEditor()
|
||||||
|
{
|
||||||
|
|
||||||
|
list.setCellRenderer(new ItemsEditor.ItemDataRenderer());
|
||||||
|
list.addListSelectionListener(e -> ItemsEditor.this.updateEdit());
|
||||||
|
addButton("add", e -> ItemsEditor.this.addItem());
|
||||||
|
addButton("remove", e -> ItemsEditor.this.remove());
|
||||||
|
addButton("copy", e -> ItemsEditor.this.copy());
|
||||||
|
addButton("load", e -> ItemsEditor.this.load());
|
||||||
|
addButton("save", e -> ItemsEditor.this.save());
|
||||||
|
BorderLayout layout=new BorderLayout();
|
||||||
|
setLayout(layout);
|
||||||
|
add(new JScrollPane(list), BorderLayout.LINE_START);
|
||||||
|
add(toolBar, BorderLayout.PAGE_START);
|
||||||
|
add(edit,BorderLayout.CENTER);
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
private void copy() {
|
||||||
|
|
||||||
|
int selected=list.getSelectedIndex();
|
||||||
|
if(selected<0)
|
||||||
|
return;
|
||||||
|
ItemData data=new ItemData(model.get(selected));
|
||||||
|
model.add(model.size(),data);
|
||||||
|
}
|
||||||
|
private void updateEdit() {
|
||||||
|
|
||||||
|
int selected=list.getSelectedIndex();
|
||||||
|
if(selected<0)
|
||||||
|
return;
|
||||||
|
edit.setCurrentItem(model.get(selected));
|
||||||
|
}
|
||||||
|
|
||||||
|
void save()
|
||||||
|
{
|
||||||
|
Array<ItemData> allEnemies=new Array<>();
|
||||||
|
for(int i=0;i<model.getSize();i++)
|
||||||
|
allEnemies.add(model.get(i));
|
||||||
|
Json json = new Json(JsonWriter.OutputType.json);
|
||||||
|
FileHandle handle = Config.instance().getFile(Paths.ITEMS);
|
||||||
|
handle.writeString(json.prettyPrint(json.toJson(allEnemies,Array.class, ItemData.class)),false);
|
||||||
|
|
||||||
|
}
|
||||||
|
void load()
|
||||||
|
{
|
||||||
|
model.clear();
|
||||||
|
Array<ItemData> allEnemies=new Array<>();
|
||||||
|
Json json = new Json();
|
||||||
|
FileHandle handle = Config.instance().getFile(Paths.ITEMS);
|
||||||
|
if (handle.exists())
|
||||||
|
{
|
||||||
|
Array readEnemies=json.fromJson(Array.class, ItemData.class, handle);
|
||||||
|
allEnemies = readEnemies;
|
||||||
|
}
|
||||||
|
for (int i=0;i<allEnemies.size;i++) {
|
||||||
|
model.add(i,allEnemies.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void addItem()
|
||||||
|
{
|
||||||
|
ItemData data=new ItemData();
|
||||||
|
data.name="Item "+model.getSize();
|
||||||
|
model.add(model.size(),data);
|
||||||
|
}
|
||||||
|
void remove()
|
||||||
|
{
|
||||||
|
int selected=list.getSelectedIndex();
|
||||||
|
if(selected<0)
|
||||||
|
return;
|
||||||
|
model.remove(selected);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class PointOfInterestEditor extends Component {
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package forge.adventure.editor;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class WorldEditor extends Component {
|
||||||
|
}
|
||||||
@@ -20,6 +20,20 @@ public class EffectData implements Serializable {
|
|||||||
//Opponent field.
|
//Opponent field.
|
||||||
public EffectData opponent; //Effects to be applied to the opponent's side.
|
public EffectData opponent; //Effects to be applied to the opponent's side.
|
||||||
|
|
||||||
|
public EffectData()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public EffectData(EffectData effect) {
|
||||||
|
|
||||||
|
name=effect.name;
|
||||||
|
lifeModifier=effect.lifeModifier;
|
||||||
|
changeStartCards=effect.changeStartCards;
|
||||||
|
startBattleWithCard=effect.startBattleWithCard;
|
||||||
|
colorView=effect.colorView;
|
||||||
|
opponent=opponent==null?null:new EffectData(effect.opponent);
|
||||||
|
}
|
||||||
|
|
||||||
public Array<IPaperCard> startBattleWithCards() {
|
public Array<IPaperCard> startBattleWithCards() {
|
||||||
Array<IPaperCard> startCards=new Array<>();
|
Array<IPaperCard> startCards=new Array<>();
|
||||||
if(startBattleWithCard != null) {
|
if(startBattleWithCard != null) {
|
||||||
|
|||||||
@@ -23,6 +23,20 @@ public class ItemData {
|
|||||||
public String iconName;
|
public String iconName;
|
||||||
public boolean questItem=false;
|
public boolean questItem=false;
|
||||||
public int cost=1000;
|
public int cost=1000;
|
||||||
|
public ItemData()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public ItemData(ItemData cpy)
|
||||||
|
{
|
||||||
|
name = cpy.name ;
|
||||||
|
equipmentSlot = cpy.equipmentSlot;
|
||||||
|
effect = new EffectData(cpy.effect);
|
||||||
|
description = cpy.description ;
|
||||||
|
iconName = cpy.iconName ;
|
||||||
|
questItem = cpy.questItem ;
|
||||||
|
cost = cpy.cost ;
|
||||||
|
}
|
||||||
|
|
||||||
public Sprite sprite()
|
public Sprite sprite()
|
||||||
{
|
{
|
||||||
@@ -67,4 +81,5 @@ public class ItemData {
|
|||||||
result += effect.getDescription();
|
result += effect.getDescription();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user