integrating TextraLabel into adventure ui

This commit is contained in:
Grimm
2022-09-18 03:10:57 +02:00
parent fbd888f290
commit a601ef5ec7
80 changed files with 2879 additions and 1485 deletions

View File

@@ -1,5 +1,6 @@
package forge.adventure.character; package forge.adventure.character;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.*; import com.badlogic.gdx.graphics.g2d.*;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
@@ -217,12 +218,19 @@ public class CharacterSprite extends MapActor {
@Override @Override
public void draw(Batch batch, float parentAlpha) { public void draw(Batch batch, float parentAlpha) {
if (currentAnimation == null || hidden) if (currentAnimation == null || hidden)
{
return; return;
}
super.draw(batch,parentAlpha);
beforeDraw(batch,parentAlpha); beforeDraw(batch,parentAlpha);
TextureRegion currentFrame = currentAnimation.getKeyFrame(timer, true); TextureRegion currentFrame = currentAnimation.getKeyFrame(timer, true);
setHeight(currentFrame.getRegionHeight()); setHeight(currentFrame.getRegionHeight());
setWidth(currentFrame.getRegionWidth()); setWidth(currentFrame.getRegionWidth());
Color oldColor=batch.getColor().cpy();
batch.setColor(getColor());
batch.draw(currentFrame, getX(), getY()); batch.draw(currentFrame, getX(), getY());
batch.setColor(oldColor);
super.draw(batch,parentAlpha); super.draw(batch,parentAlpha);
//batch.draw(getDebugTexture(),getX(),getY()); //batch.draw(getDebugTexture(),getX(),getY());

View File

@@ -10,6 +10,7 @@ import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import forge.adventure.util.Config; import forge.adventure.util.Config;
import forge.util.MyRandom;
/** /**
* Map Actor base class for Actors on the map * Map Actor base class for Actors on the map
@@ -18,6 +19,12 @@ import forge.adventure.util.Config;
public class MapActor extends Actor { public class MapActor extends Actor {
private boolean removeIfEffectsAreFinished;
public void removeAfterEffects() {
removeIfEffectsAreFinished=true;
}
class CurrentEffect class CurrentEffect
{ {
public CurrentEffect(String path,ParticleEffect effect,Vector2 offset,boolean overlay) public CurrentEffect(String path,ParticleEffect effect,Vector2 offset,boolean overlay)
@@ -78,7 +85,7 @@ public class MapActor extends Actor {
} }
public void playEffect(String path) public void playEffect(String path)
{ {
playEffect(path,0,false,Vector2.Zero); playEffect(path,0,true,Vector2.Zero);
} }
public MapActor(int objectId) public MapActor(int objectId)
{ {
@@ -91,7 +98,9 @@ public class MapActor extends Actor {
private Texture getDebugTexture() { private Texture getDebugTexture() {
if (debugTexture == null) { if (debugTexture == null) {
Pixmap pixmap = new Pixmap((int) getWidth(), (int) getHeight(), Pixmap.Format.RGBA8888); Pixmap pixmap = new Pixmap((int) getWidth(), (int) getHeight(), Pixmap.Format.RGBA8888);
pixmap.setColor(1.0f,0,0,0.5f); //pixmap.setColor(1.0f,0,0,0.5f);
pixmap.setColor(MyRandom.getRandom().nextFloat(),MyRandom.getRandom().nextFloat(),MyRandom.getRandom().nextFloat(),0.5f);
pixmap.fillRectangle((int)(boundingRect.x - getX()), (int)(getHeight()- boundingRect.getHeight()) + (int)(boundingRect.y - getY()), (int)boundingRect.getWidth(), (int)boundingRect.getHeight()); pixmap.fillRectangle((int)(boundingRect.x - getX()), (int)(getHeight()- boundingRect.getHeight()) + (int)(boundingRect.y - getY()), (int)boundingRect.getWidth(), (int)boundingRect.getHeight());
debugTexture = new Texture(pixmap); debugTexture = new Texture(pixmap);
pixmap.dispose(); pixmap.dispose();
@@ -115,7 +124,9 @@ public class MapActor extends Actor {
public void draw(Batch batch, float alpha) { public void draw(Batch batch, float alpha) {
if(boundDebug) if(boundDebug)
{
batch.draw(getDebugTexture(),getX(),getY()); batch.draw(getDebugTexture(),getX(),getY());
}
@@ -153,6 +164,9 @@ public class MapActor extends Actor {
effect.effect.dispose(); effect.effect.dispose();
} }
} }
if(effects.size==0&&removeIfEffectsAreFinished&&getParent()!=null)
getParent().removeActor(this);
} }
@Override @Override
protected void positionChanged() { protected void positionChanged() {

View File

@@ -7,6 +7,8 @@ import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.character.EnemySprite; import forge.adventure.character.EnemySprite;
import forge.adventure.data.ArenaData; import forge.adventure.data.ArenaData;
@@ -27,7 +29,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
private static ArenaScene object; private static ArenaScene object;
private final float gridSize; private final float gridSize;
private ArenaData arenaData; private ArenaData arenaData;
private TextButton startButton; private TextraButton startButton;
public static ArenaScene instance() { public static ArenaScene instance() {
if(object==null) if(object==null)
@@ -35,10 +37,10 @@ public class ArenaScene extends UIScene implements IAfterMatch {
return object; return object;
} }
private TextButton doneButton; private TextraButton doneButton;
Dialog startDialog; Dialog startDialog;
Dialog areYouSureDialog; Dialog areYouSureDialog;
private Label goldLabel; private TextraLabel goldLabel;
private Group arenaPlane; private Group arenaPlane;
private Random rand=new Random(); private Random rand=new Random();
@@ -89,7 +91,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
startButton=ui.findActor("start"); startButton=ui.findActor("start");
startDialog = new Dialog(Forge.getLocalizer().getMessage("lblStart"), Controls.GetSkin()) startDialog = new Dialog(Forge.getLocalizer().getMessage("lblStart"), Controls.getSkin())
{ {
protected void result(Object object) protected void result(Object object)
{ {
@@ -106,7 +108,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
startDialog.getColor().a = 0; startDialog.getColor().a = 0;
areYouSureDialog= new Dialog(Forge.getLocalizer().getMessage("lblConcedeTitle"), Controls.GetSkin()) areYouSureDialog= new Dialog(Forge.getLocalizer().getMessage("lblConcedeTitle"), Controls.getSkin())
{ {
protected void result(Object object) protected void result(Object object)
{ {
@@ -304,7 +306,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
player=fighters.get(fighters.size-1); player=fighters.get(fighters.size-1);
goldLabel.setText(data.entryFee +" $"); goldLabel.setText(data.entryFee +" [+Gold]");
goldLabel.setVisible(true); goldLabel.setVisible(true);
startButton.setDisabled(data.entryFee>Current.player().getGold()); startButton.setDisabled(data.entryFee>Current.player().getGold());

View File

@@ -18,7 +18,7 @@ public class DeckEditScene extends ForgeScene {
private static DeckEditScene object; private static DeckEditScene object;
public static DeckEditScene instance() { public static DeckEditScene getInstance() {
if(object==null) if(object==null)
object=new DeckEditScene(); object=new DeckEditScene();
return object; return object;

View File

@@ -7,29 +7,38 @@ import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.IntMap; import com.badlogic.gdx.utils.IntMap;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.player.AdventurePlayer; import forge.adventure.player.AdventurePlayer;
import forge.adventure.util.Controls; import forge.adventure.util.Controls;
import forge.adventure.util.Current; import forge.adventure.util.Current;
public class DeckSelectScene extends UIScene { public class DeckSelectScene extends UIScene {
private final IntMap<TextButton> buttons = new IntMap<>(); private final IntMap<TextraButton> buttons = new IntMap<>();
Color defColor; Color defColor;
Dialog dialog; Dialog dialog;
TextField textInput; TextField textInput;
Table layout; Table layout;
Label header; TextraLabel header;
TextButton back, edit, rename, dialogRenameBtn, dialogAbortBtn; TextraButton back, edit, rename, dialogRenameBtn, dialogAbortBtn;
int currentSlot = 0; int currentSlot = 0;
ScrollPane scrollPane; ScrollPane scrollPane;
private static DeckSelectScene object;
public static DeckSelectScene instance() {
if(object==null)
object=new DeckSelectScene();
return object;
}
public DeckSelectScene() { public DeckSelectScene() {
super(Forge.isLandscapeMode() ? "ui/deck_selector.json" : "ui/deck_selector_portrait.json"); super(Forge.isLandscapeMode() ? "ui/deck_selector.json" : "ui/deck_selector_portrait.json");
layout = new Table(); layout = new Table();
stage.addActor(layout); stage.addActor(layout);
header = Controls.newLabel(Forge.getLocalizer().getMessage("lblSelectYourDeck")); header = Controls.newTextraLabel(Forge.getLocalizer().getMessage("lblSelectYourDeck"));
layout.add(header).colspan(2).align(Align.center).pad(2, 5, 2, 5); layout.add(header).colspan(2).align(Align.center).pad(2, 5, 2, 5);
layout.row(); layout.row();
for (int i = 0; i < AdventurePlayer.NUMBER_OF_DECKS; i++) for (int i = 0; i < AdventurePlayer.NUMBER_OF_DECKS; i++)
@@ -50,11 +59,8 @@ public class DeckSelectScene extends UIScene {
dialog.hide(); dialog.hide();
back = ui.findActor("return"); back = ui.findActor("return");
back.getLabel().setText(Forge.getLocalizer().getMessage("lblBack"));
edit = ui.findActor("edit"); edit = ui.findActor("edit");
edit.getLabel().setText(Forge.getLocalizer().getMessage("lblEdit"));
rename = ui.findActor("rename"); rename = ui.findActor("rename");
rename.getLabel().setText(Forge.getLocalizer().getMessage("lblRename"));
ui.onButtonPress("return", () -> DeckSelectScene.this.back()); ui.onButtonPress("return", () -> DeckSelectScene.this.back());
ui.onButtonPress("edit", () -> DeckSelectScene.this.edit()); ui.onButtonPress("edit", () -> DeckSelectScene.this.edit());
ui.onButtonPress("rename", () -> { ui.onButtonPress("rename", () -> {
@@ -68,8 +74,8 @@ public class DeckSelectScene extends UIScene {
scrollPane.setActor(layout); scrollPane.setActor(layout);
} }
private TextButton addDeckSlot(String name, int i) { private TextraButton addDeckSlot(String name, int i) {
TextButton button = Controls.newTextButton("-"); TextraButton button = Controls.newTextButton("-");
button.addListener(new ClickListener() { button.addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
@@ -96,11 +102,11 @@ public class DeckSelectScene extends UIScene {
public boolean select(int slot) { public boolean select(int slot) {
currentSlot = slot; currentSlot = slot;
for (IntMap.Entry<TextButton> butt : new IntMap.Entries<TextButton>(buttons)) { for (IntMap.Entry<TextraButton> butt : new IntMap.Entries<TextraButton>(buttons)) {
butt.value.setColor(defColor); butt.value.setColor(defColor);
} }
if (buttons.containsKey(slot)) { if (buttons.containsKey(slot)) {
TextButton button = buttons.get(slot); TextraButton button = buttons.get(slot);
button.setColor(Color.RED); button.setColor(Color.RED);
} }
Current.player().setSelectedDeckSlot(slot); Current.player().setSelectedDeckSlot(slot);
@@ -136,47 +142,7 @@ public class DeckSelectScene extends UIScene {
super.enter(); super.enter();
} }
@Override
public void resLoaded() {
super.resLoaded();
layout = new Table();
stage.addActor(layout);
header = Controls.newLabel(Forge.getLocalizer().getMessage("lblSelectYourDeck"));
layout.add(header).colspan(2).align(Align.center).pad(2, 5, 2, 5);
layout.row();
for (int i = 0; i < AdventurePlayer.NUMBER_OF_DECKS; i++)
addDeckSlot(Forge.getLocalizer().getMessage("lblDeck")+": " + (i + 1), i);
dialog = Controls.newDialog(Forge.getLocalizer().getMessage("lblSave"));
textInput = Controls.newTextField("");
dialog.getButtonTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblNameYourSaveFile"))).colspan(2);
dialog.getButtonTable().row();
dialog.getButtonTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName")+": ")).align(Align.left);
dialog.getButtonTable().add(textInput).fillX().expandX();
dialog.getButtonTable().row();
dialog.getButtonTable().add(Controls.newTextButton(Forge.getLocalizer().getMessage("lblRename"), () -> DeckSelectScene.this.rename())).align(Align.left);
dialog.getButtonTable().add(Controls.newTextButton(Forge.getLocalizer().getMessage("lblAbort"), () -> dialog.hide())).align(Align.left);
back = ui.findActor("return");
back.getLabel().setText(Forge.getLocalizer().getMessage("lblBack"));
edit = ui.findActor("edit");
edit.getLabel().setText(Forge.getLocalizer().getMessage("lblEdit"));
rename = ui.findActor("rename");
rename.getLabel().setText(Forge.getLocalizer().getMessage("lblRename"));
ui.onButtonPress("return", () -> DeckSelectScene.this.back());
ui.onButtonPress("edit", () -> DeckSelectScene.this.edit());
ui.onButtonPress("rename", () -> {
textInput.setText(Current.player().getSelectedDeck().getName());
dialog.show(stage);
stage.setKeyboardFocus(textInput);
});
defColor = ui.findActor("return").getColor();
ScrollPane scrollPane = ui.findActor("deckSlots");
scrollPane.setActor(layout);
}
private void rename() { private void rename() {
dialog.hide(); dialog.hide();
@@ -186,6 +152,6 @@ public class DeckSelectScene extends UIScene {
} }
private void edit() { private void edit() {
Forge.switchScene(SceneType.DeckEditScene.instance); Forge.switchScene(DeckEditScene.getInstance());
} }
} }

View File

@@ -3,13 +3,16 @@ package forge.adventure.scene;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.GL20;
import forge.Forge;
import forge.adventure.stage.GameHUD; import forge.adventure.stage.GameHUD;
import forge.adventure.stage.GameStage; import forge.adventure.stage.GameStage;
import forge.adventure.stage.IAfterMatch;
import forge.adventure.stage.MapStage;
/** /**
* Hud base scene * Hud base scene
*/ */
public abstract class HudScene extends Scene implements InputProcessor, IAfterMatch { public abstract class HudScene extends Scene implements InputProcessor, IAfterMatch {
GameHUD hud; GameHUD hud;
GameStage stage; GameStage stage;

View File

@@ -2,8 +2,7 @@ package forge.adventure.scene;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.github.tommyettinger.textra.TextraButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import forge.Forge; import forge.Forge;
import forge.adventure.stage.GameHUD; import forge.adventure.stage.GameHUD;
import forge.adventure.util.Current; import forge.adventure.util.Current;
@@ -20,38 +19,19 @@ public class InnScene extends UIScene {
return object; return object;
} }
TextButton tempHitPointCost, sell, leave; TextraButton tempHitPointCost, sell, leave;
Label tempHitPoints;
Image healIcon, sellIcon, leaveIcon; Image healIcon, sellIcon, leaveIcon;
private InnScene() { private InnScene() {
super(Forge.isLandscapeMode() ? "ui/inn.json" : "ui/inn_portrait.json"); super(Forge.isLandscapeMode() ? "ui/inn.json" : "ui/inn_portrait.json");
ui.onButtonPress("done", new Runnable() { tempHitPointCost = ui.findActor("tempHitPointCost");
@Override ui.onButtonPress("done", InnScene.this::done);
public void run() { ui.onButtonPress("tempHitPointCost", InnScene.this::potionOfFalseLife);
InnScene.this.done(); ui.onButtonPress("sell", InnScene.this::sell);
}
});
ui.onButtonPress("tempHitPointCost", new Runnable() {
@Override
public void run() {
InnScene.this.potionOfFalseLife();
}
});
ui.onButtonPress("sell", new Runnable() {
@Override
public void run() {
InnScene.this.sell();
}
});
leave = ui.findActor("done"); leave = ui.findActor("done");
leave.getLabel().setText(Forge.getLocalizer().getMessage("lblLeave"));
sell = ui.findActor("sell"); sell = ui.findActor("sell");
sell.getLabel().setText(Forge.getLocalizer().getMessage("lblSell"));
tempHitPoints = ui.findActor("tempHitPoints");
tempHitPoints.setText(Forge.getLocalizer().getMessageorUseDefault("lblTempHitPoints", "Temporary Hit Points"));
leaveIcon = ui.findActor("leaveIcon"); leaveIcon = ui.findActor("leaveIcon");
healIcon = ui.findActor("healIcon"); healIcon = ui.findActor("healIcon");
@@ -89,9 +69,8 @@ public class InnScene extends UIScene {
boolean purchaseable = Current.player().getMaxLife() == Current.player().getLife() && boolean purchaseable = Current.player().getMaxLife() == Current.player().getLife() &&
tempHealthCost <= Current.player().getGold(); tempHealthCost <= Current.player().getGold();
tempHitPointCost = ui.findActor("tempHitPointCost");
tempHitPointCost.setDisabled(!purchaseable); tempHitPointCost.setDisabled(!purchaseable);
tempHitPointCost.getLabel().setText("$" + tempHealthCost); tempHitPointCost.setText( tempHealthCost+"[+Gold]");
clearActorObjects(); clearActorObjects();
addActorObject(tempHitPointCost); addActorObject(tempHitPointCost);
addActorObject(sell); addActorObject(sell);

View File

@@ -8,6 +8,8 @@ import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Timer; import com.badlogic.gdx.utils.Timer;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.data.ItemData; import forge.adventure.data.ItemData;
import forge.adventure.stage.ConsoleCommandInterpreter; import forge.adventure.stage.ConsoleCommandInterpreter;
@@ -22,10 +24,10 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class InventoryScene extends UIScene { public class InventoryScene extends UIScene {
TextButton leave; TextraButton leave;
Button equipButton; Button equipButton;
TextButton useButton; TextraButton useButton;
Label itemDescription; TextraLabel itemDescription;
Dialog confirm; Dialog confirm;
Dialog useDialog; Dialog useDialog;
private Table inventory; private Table inventory;
@@ -51,7 +53,6 @@ public class InventoryScene extends UIScene {
deleteButton = ui.findActor("delete"); deleteButton = ui.findActor("delete");
itemDescription = ui.findActor("item_description"); itemDescription = ui.findActor("item_description");
itemDescription.setAlignment(Align.topLeft); itemDescription.setAlignment(Align.topLeft);
leave.getLabel().setText(Forge.getLocalizer().getMessage("lblBack"));
inventoryButtons=new Array<>(); inventoryButtons=new Array<>();
equipmentSlots=new HashMap<>(); equipmentSlots=new HashMap<>();
@@ -102,7 +103,7 @@ public class InventoryScene extends UIScene {
}); });
} }
} }
inventory = new Table(Controls.GetSkin()); inventory = new Table(Controls.getSkin());
ScrollPane scrollPane = ui.findActor("inventory"); ScrollPane scrollPane = ui.findActor("inventory");
scrollPane.setScrollingDisabled(true,false); scrollPane.setScrollingDisabled(true,false);
scrollPane.setActor(inventory); scrollPane.setActor(inventory);
@@ -110,7 +111,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);
confirm = new Dialog("\n "+Forge.getLocalizer().getMessage("lblDelete"), Controls.GetSkin()) confirm = new Dialog("", Controls.getSkin())
{ {
protected void result(Object object) protected void result(Object object)
{ {
@@ -119,6 +120,7 @@ public class InventoryScene extends UIScene {
confirm.hide(); confirm.hide();
}; };
}; };
confirm.text( Controls.newLabel(Forge.getLocalizer().getMessage("lblDelete")));
confirm.button(Forge.getLocalizer().getMessage("lblYes"), true); confirm.button(Forge.getLocalizer().getMessage("lblYes"), true);
confirm.button(Forge.getLocalizer().getMessage("lblNo"), false); confirm.button(Forge.getLocalizer().getMessage("lblNo"), false);
@@ -130,7 +132,7 @@ public class InventoryScene extends UIScene {
confirm.getColor().a = 0; confirm.getColor().a = 0;
useDialog = new Dialog("\n "+Forge.getLocalizer().getMessage("lblDelete"), Controls.GetSkin()) useDialog = new Dialog("", Controls.getSkin())
{ {
protected void result(Object object) protected void result(Object object)
{ {
@@ -221,10 +223,10 @@ public class InventoryScene extends UIScene {
boolean isInPoi = MapStage.getInstance().isInMap(); boolean isInPoi = MapStage.getInstance().isInMap();
useButton.setDisabled(!(isInPoi&&data.usableInPoi||!isInPoi&&data.usableOnWorldMap)); useButton.setDisabled(!(isInPoi&&data.usableInPoi||!isInPoi&&data.usableOnWorldMap));
if(data.manaNeeded==0) if(data.manaNeeded==0)
useButton.setText("Use Item"); useButton.setText("Use");
else else
useButton.setText("Use Item ("+data.manaNeeded+" mana)"); useButton.setText("Use "+data.manaNeeded+"[+Mana]");
useButton.layout();
if(Current.player().getMana()<data.manaNeeded) if(Current.player().getMana()<data.manaNeeded)
useButton.setDisabled(true); useButton.setDisabled(true);
@@ -235,9 +237,9 @@ public class InventoryScene extends UIScene {
else else
{ {
equipButton.setDisabled(false); equipButton.setDisabled(false);
if(equipButton instanceof TextButton) if(equipButton instanceof TextraButton)
{ {
TextButton button=(TextButton) 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))
{ {
@@ -247,6 +249,7 @@ public class InventoryScene extends UIScene {
{ {
button.setText("Equip"); button.setText("Equip");
} }
button.layout();
} }
} }
@@ -331,7 +334,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

@@ -5,10 +5,13 @@ import com.badlogic.gdx.Input;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.InputListener; import com.badlogic.gdx.scenes.scene2d.InputListener;
import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.data.DifficultyData; import forge.adventure.data.DifficultyData;
import forge.adventure.data.HeroListData; import forge.adventure.data.HeroListData;
@@ -41,7 +44,7 @@ public class NewGameScene extends UIScene {
private Selector mode; private Selector mode;
private Selector difficulty; private Selector difficulty;
private Array<String> stringList, random, custom; private Array<String> stringList, random, custom;
private Label colorLabel; private TextraLabel colorLabel;
private int selected = -1; private int selected = -1;
private NewGameScene() { private NewGameScene() {
@@ -64,7 +67,7 @@ public class NewGameScene extends UIScene {
gender = ui.findActor("gender"); gender = ui.findActor("gender");
mode = ui.findActor("mode"); mode = ui.findActor("mode");
colorLabel = ui.findActor("colorIdL"); colorLabel = ui.findActor("colorIdL");
String colorIdLabel = colorLabel.getText().toString(); String colorIdLabel = colorLabel.storedText;
custom = new Array<>(); custom = new Array<>();
for (DeckProxy deckProxy : DeckProxy.getAllCustomStarterDecks()) for (DeckProxy deckProxy : DeckProxy.getAllCustomStarterDecks())
custom.add(deckProxy.getName()); custom.add(deckProxy.getName());
@@ -314,7 +317,7 @@ public class NewGameScene extends UIScene {
performTouch(selectedKey); performTouch(selectedKey);
} else { } else {
if (selectedActor != null) { if (selectedActor != null) {
if (selectedActor instanceof TextButton) if (selectedActor instanceof TextraButton)
performTouch(selectedActor); performTouch(selectedActor);
else if (selectedActor instanceof TextField && !kbVisible) { else if (selectedActor instanceof TextField && !kbVisible) {
lastInputField = selectedActor; lastInputField = selectedActor;

View File

@@ -3,9 +3,13 @@ package forge.adventure.scene;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.character.EnemySprite; import forge.adventure.character.EnemySprite;
import forge.adventure.data.EnemyData; import forge.adventure.data.EnemyData;
@@ -26,32 +30,27 @@ import java.util.Map;
public class PlayerStatisticScene extends UIScene { public class PlayerStatisticScene extends UIScene {
Image avatar, avatarBorder, lifeIcon, goldIcon; Image avatar, avatarBorder, lifeIcon, goldIcon;
Image colorFrame; Image colorFrame;
Label money, life; TextraLabel money, life;
Label wins, totalWins; TextraLabel wins, totalWins;
Label loss, totalLoss; TextraLabel loss, totalLoss;
Label winloss, lossWinRatio; TextraLabel winloss, lossWinRatio;
Label playerName; TextraLabel playerName;
TextButton back; TextraButton back;
private Table enemiesGroup; private final Table enemiesGroup;
Label blessingScroll; TextraLabel blessingScroll;
ScrollPane scrollPane, blessing; ScrollPane scrollPane, blessing;
private PlayerStatisticScene() { private PlayerStatisticScene() {
super(Forge.isLandscapeMode() ? "ui/statistic.json" : "ui/statistic_portrait.json"); super(Forge.isLandscapeMode() ? "ui/statistic.json" : "ui/statistic_portrait.json");
enemiesGroup = new Table(Controls.GetSkin()); enemiesGroup = new Table(Controls.getSkin());
enemiesGroup.row(); enemiesGroup.row();
blessingScroll = Controls.newLabel(""); blessingScroll = Controls.newTextraLabel("");
blessingScroll.setStyle(new Label.LabelStyle(Controls.getBitmapFont("default"), Color.BLACK)); blessingScroll.setColor(Color.BLACK);
blessingScroll.setAlignment(Align.topLeft); blessingScroll.setAlignment(Align.topLeft);
blessingScroll.setWrap(true); blessingScroll.setWrap(true);
ui.onButtonPress("return", new Runnable() { ui.onButtonPress("return", PlayerStatisticScene.this::back);
@Override
public void run() {
PlayerStatisticScene.this.back();
}
});
avatar = ui.findActor("avatar"); avatar = ui.findActor("avatar");
avatarBorder = ui.findActor("avatarBorder"); avatarBorder = ui.findActor("avatarBorder");
@@ -62,16 +61,12 @@ public class PlayerStatisticScene extends UIScene {
goldIcon = ui.findActor("goldIcon"); goldIcon = ui.findActor("goldIcon");
wins = ui.findActor("wins"); wins = ui.findActor("wins");
colorFrame = ui.findActor("colorFrame"); colorFrame = ui.findActor("colorFrame");
wins.setText(Forge.getLocalizer().getMessage("lblWinProper")+":");
totalWins = ui.findActor("totalWins"); totalWins = ui.findActor("totalWins");
loss = ui.findActor("loss"); loss = ui.findActor("loss");
loss.setText(Forge.getLocalizer().getMessage("lblLossProper")+":");
totalLoss = ui.findActor("totalLoss"); totalLoss = ui.findActor("totalLoss");
winloss = ui.findActor("winloss"); winloss = ui.findActor("winloss");
winloss.setText(Forge.getLocalizer().getMessage("lblWinProper")+"/"+Forge.getLocalizer().getMessage("lblLossProper"));
lossWinRatio = ui.findActor("lossWinRatio"); lossWinRatio = ui.findActor("lossWinRatio");
back = ui.findActor("return"); back = ui.findActor("return");
back.getLabel().setText(Forge.getLocalizer().getMessage("lblBack"));
ScrollPane scrollPane = ui.findActor("enemies"); ScrollPane scrollPane = ui.findActor("enemies");
scrollPane.setActor(enemiesGroup); scrollPane.setActor(enemiesGroup);
ScrollPane blessing = ui.findActor("blessingInfo"); ScrollPane blessing = ui.findActor("blessingInfo");
@@ -157,10 +152,10 @@ public class PlayerStatisticScene extends UIScene {
WorldSave.getCurrentSave().getPlayer().onGoldChange(() -> money.setText(String.valueOf(AdventurePlayer.current().getGold()))); WorldSave.getCurrentSave().getPlayer().onGoldChange(() -> money.setText(String.valueOf(AdventurePlayer.current().getGold())));
} }
if (totalWins != null) { if (totalWins != null) {
totalWins.setText(Current.player().getStatistic().totalWins()); totalWins.setText(String.valueOf(Current.player().getStatistic().totalWins()));
} }
if (totalLoss != null) { if (totalLoss != null) {
totalLoss.setText(Current.player().getStatistic().totalLoss()); totalLoss.setText(String.valueOf(Current.player().getStatistic().totalLoss()));
} }
if (lossWinRatio != null) { if (lossWinRatio != null) {
lossWinRatio.setText(Float.toString(Current.player().getStatistic().winLossRatio())); lossWinRatio.setText(Float.toString(Current.player().getStatistic().winLossRatio()));
@@ -194,42 +189,6 @@ public class PlayerStatisticScene extends UIScene {
} }
@Override
public void resLoaded() {
super.resLoaded();
enemiesGroup = new Table(Controls.GetSkin());
enemiesGroup.row();
blessingScroll = Controls.newLabel("");
blessingScroll.setStyle(new Label.LabelStyle(Controls.getBitmapFont("default"), Color.BLACK));
blessingScroll.setAlignment(Align.topLeft);
blessingScroll.setWrap(true);
ui.onButtonPress("return", () -> PlayerStatisticScene.this.back());
avatar = ui.findActor("avatar");
avatarBorder = ui.findActor("avatarBorder");
playerName = ui.findActor("playerName");
life = ui.findActor("lifePoints");
money = ui.findActor("money");
lifeIcon = ui.findActor("lifeIcon");
goldIcon = ui.findActor("goldIcon");
wins = ui.findActor("wins");
colorFrame = ui.findActor("colorFrame");
wins.setText(Forge.getLocalizer().getMessage("lblWinProper")+":");
totalWins = ui.findActor("totalWins");
loss = ui.findActor("loss");
loss.setText(Forge.getLocalizer().getMessage("lblLossProper")+":");
totalLoss = ui.findActor("totalLoss");
winloss = ui.findActor("winloss");
winloss.setText(Forge.getLocalizer().getMessage("lblWinProper")+"/"+Forge.getLocalizer().getMessage("lblLossProper"));
lossWinRatio = ui.findActor("lossWinRatio");
back = ui.findActor("return");
back.getLabel().setText(Forge.getLocalizer().getMessage("lblBack"));
scrollPane = ui.findActor("enemies");
scrollPane.setActor(enemiesGroup);
blessing = ui.findActor("blessingInfo");
blessing.setActor(blessingScroll);
}
@Override @Override
public void create() { public void create() {

View File

@@ -4,10 +4,11 @@ import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Timer;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.character.ShopActor; import forge.adventure.character.ShopActor;
import forge.adventure.player.AdventurePlayer; import forge.adventure.player.AdventurePlayer;
@@ -23,8 +24,8 @@ import forge.sound.SoundSystem;
* Displays the rewards of a fight or a treasure * Displays the rewards of a fight or a treasure
*/ */
public class RewardScene extends UIScene { public class RewardScene extends UIScene {
private TextButton doneButton; private TextraButton doneButton;
private Label goldLabel; private TextraLabel goldLabel;
private static RewardScene object; private static RewardScene object;
@@ -272,7 +273,7 @@ public class RewardScene extends UIScene {
switch (type) { switch (type) {
case Shop: case Shop:
doneButton.setText(Forge.getLocalizer().getMessage("lblLeave")); doneButton.setText(Forge.getLocalizer().getMessage("lblLeave"));
goldLabel.setText("Gold:"+Current.player().getGold()); goldLabel.setText(Current.player().getGold()+"[+Gold]");
break; break;
case Loot: case Loot:
goldLabel.setText(""); goldLabel.setText("");
@@ -360,7 +361,7 @@ public class RewardScene extends UIScene {
if (currentRow != ((i + 1) / numberOfColumns)) if (currentRow != ((i + 1) / numberOfColumns))
yOff += doneButton.getHeight(); yOff += doneButton.getHeight();
TextButton buyCardButton = new BuyButton(shopActor.getObjectId(), i, shopActor.isUnlimited()?null:shopActor.getMapStage().getChanges(), actor, doneButton); TextraButton buyCardButton = new BuyButton(shopActor.getObjectId(), i, shopActor.isUnlimited()?null:shopActor.getMapStage().getChanges(), actor, doneButton);
generated.add(buyCardButton); generated.add(buyCardButton);
if (!skipCard) { if (!skipCard) {
stage.addActor(buyCardButton); stage.addActor(buyCardButton);
@@ -386,7 +387,7 @@ public class RewardScene extends UIScene {
} }
} }
private class BuyButton extends TextButton { private class BuyButton extends TextraButton {
private final int objectID; private final int objectID;
private final int index; private final int index;
private final PointOfInterestChanges changes; private final PointOfInterestChanges changes;
@@ -397,7 +398,7 @@ public class RewardScene extends UIScene {
setDisabled(WorldSave.getCurrentSave().getPlayer().getGold() < price); setDisabled(WorldSave.getCurrentSave().getPlayer().getGold() < price);
} }
public BuyButton(int id, int i, PointOfInterestChanges ch, RewardActor actor, TextButton style) { public BuyButton(int id, int i, PointOfInterestChanges ch, RewardActor actor, TextraButton style) {
super("", style.getStyle()); super("", style.getStyle());
this.objectID = id; this.objectID = id;
this.index = i; this.index = i;

View File

@@ -12,6 +12,8 @@ import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.GdxRuntimeException; import com.badlogic.gdx.utils.GdxRuntimeException;
import com.badlogic.gdx.utils.IntMap; import com.badlogic.gdx.utils.IntMap;
import com.badlogic.gdx.utils.Scaling; import com.badlogic.gdx.utils.Scaling;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.data.DifficultyData; import forge.adventure.data.DifficultyData;
import forge.adventure.util.Config; import forge.adventure.util.Config;
@@ -32,19 +34,19 @@ import java.util.zip.InflaterInputStream;
* Scene to load and save the game. * Scene to load and save the game.
*/ */
public class SaveLoadScene extends UIScene { public class SaveLoadScene extends UIScene {
private final IntMap<TextButton> buttons = new IntMap<>(); private final IntMap<TextraButton> buttons = new IntMap<>();
IntMap<WorldSaveHeader> previews = new IntMap<>(); IntMap<WorldSaveHeader> previews = new IntMap<>();
Color defColor; Color defColor;
Table layout; Table layout;
Modes mode; Modes mode;
Dialog dialog; Dialog dialog;
TextField textInput; TextField textInput;
Label header; TextraLabel header;
int currentSlot = -3, lastSelectedSlot = 0; int currentSlot = -3, lastSelectedSlot = 0;
Image previewImage; Image previewImage;
Label previewDate; TextraLabel previewDate;
Image previewBorder; Image previewBorder;
TextButton saveLoadButton, back, quickSave, autoSave, dialogSaveBtn, dialogAbortBtn; TextraButton saveLoadButton, back, quickSave, autoSave, dialogSaveBtn, dialogAbortBtn;
Actor lastHighlightedSave; Actor lastHighlightedSave;
SelectBox difficulty; SelectBox difficulty;
ScrollPane scrollPane; ScrollPane scrollPane;
@@ -73,14 +75,17 @@ public class SaveLoadScene extends UIScene {
dialog.getButtonTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName") + ": ")).align(Align.left).pad(2, 15, 2, 2); dialog.getButtonTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName") + ": ")).align(Align.left).pad(2, 15, 2, 2);
dialog.getButtonTable().add(textInput).fillX().expandX().padRight(15); dialog.getButtonTable().add(textInput).fillX().expandX().padRight(15);
dialog.getButtonTable().row(); dialog.getButtonTable().row();
dialog.getButtonTable().add(Controls.newTextButton(Forge.getLocalizer().getMessage("lblSave"), () -> SaveLoadScene.this.save())).align(Align.left).padLeft(15); dialogSaveBtn = Controls.newTextButton(Forge.getLocalizer().getMessage("lblSave"), () -> SaveLoadScene.this.save());
dialog.getButtonTable().add(Controls.newTextButton(Forge.getLocalizer().getMessage("lblAbort"), () -> SaveLoadScene.this.saveAbort())).align(Align.right).padRight(15); dialog.getButtonTable().add(dialogSaveBtn).align(Align.left).padLeft(15);
dialogAbortBtn = Controls.newTextButton(Forge.getLocalizer().getMessage("lblAbort"), () -> SaveLoadScene.this.saveAbort());
dialog.getButtonTable().add(dialogAbortBtn).align(Align.right).padRight(15);
//makes dialog hidden immediately when you open saveload scene.. //makes dialog hidden immediately when you open saveload scene..
dialog.getColor().a = 0; dialog.getColor().a = 0;
dialog.hide();
previewImage = ui.findActor("preview"); previewImage = ui.findActor("preview");
previewDate = ui.findActor("saveDate"); previewDate = ui.findActor("saveDate");
header = Controls.newLabel(Forge.getLocalizer().getMessage("lblSave")); header = Controls.newTextraLabel(Forge.getLocalizer().getMessage("lblSave"));
header.setAlignment(Align.center); header.setAlignment(Align.center);
layout.add(header).pad(2).colspan(4).align(Align.center).expandX(); layout.add(header).pad(2).colspan(4).align(Align.center).expandX();
layout.row(); layout.row();
@@ -90,15 +95,14 @@ public class SaveLoadScene extends UIScene {
addSaveSlot(Forge.getLocalizer().getMessage("lblSlot") + ": " + i, i); addSaveSlot(Forge.getLocalizer().getMessage("lblSlot") + ": " + i, i);
saveLoadButton = ui.findActor("save"); saveLoadButton = ui.findActor("save");
saveLoadButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSave")); saveLoadButton.setText(Forge.getLocalizer().getMessage("lblSave"));
ui.onButtonPress("save", () -> SaveLoadScene.this.loadSave()); ui.onButtonPress("save", () -> SaveLoadScene.this.loadSave());
back = ui.findActor("return"); back = ui.findActor("return");
back.getLabel().setText(Forge.getLocalizer().getMessage("lblBack"));
ui.onButtonPress("return", () -> SaveLoadScene.this.back()); ui.onButtonPress("return", () -> SaveLoadScene.this.back());
defColor = saveLoadButton.getColor(); defColor = saveLoadButton.getColor();
ScrollPane scrollPane = ui.findActor("saveSlots"); scrollPane = ui.findActor("saveSlots");
scrollPane.setActor(layout); scrollPane.setActor(layout);
ui.addActor(difficulty); ui.addActor(difficulty);
difficulty.setSelectedIndex(1); difficulty.setSelectedIndex(1);
@@ -123,9 +127,9 @@ public class SaveLoadScene extends UIScene {
} }
private TextButton addSaveSlot(String name, int i) { private TextraButton addSaveSlot(String name, int i) {
layout.add(Controls.newLabel(name)).align(Align.left).pad(2, 5, 2, 10); layout.add(Controls.newLabel(name)).align(Align.left).pad(2, 5, 2, 10);
TextButton button = Controls.newTextButton("..."); TextraButton button = Controls.newTextButton("...");
button.addListener(new ClickListener() { button.addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
@@ -137,7 +141,7 @@ public class SaveLoadScene extends UIScene {
} }
} }
}); });
layout.add(button).align(Align.left).expandX(); layout.add(button).fill(true,false).expand(true,false).align(Align.left).expandX();
buttons.put(i, button); buttons.put(i, button);
layout.row(); layout.row();
return button; return button;
@@ -171,11 +175,11 @@ public class SaveLoadScene extends UIScene {
if (previewDate != null) if (previewDate != null)
previewDate.setVisible(false); previewDate.setVisible(false);
} }
for (IntMap.Entry<TextButton> butt : new IntMap.Entries<TextButton>(buttons)) { for (IntMap.Entry<TextraButton> butt : new IntMap.Entries<TextraButton>(buttons)) {
butt.value.setColor(defColor); butt.value.setColor(defColor);
} }
if (buttons.containsKey(slot)) { if (buttons.containsKey(slot)) {
TextButton button = buttons.get(slot); TextraButton button = buttons.get(slot);
button.setColor(Color.RED); button.setColor(Color.RED);
selectActor(button, false); selectActor(button, false);
} }
@@ -448,8 +452,8 @@ public class SaveLoadScene extends UIScene {
else else
select(-3); select(-3);
updateFiles(); updateFiles();
autoSave.getLabel().setText(Forge.getLocalizer().getMessage("lblAutoSave")); autoSave.setText(Forge.getLocalizer().getMessage("lblAutoSave"));
quickSave.getLabel().setText(Forge.getLocalizer().getMessage("lblQuickSave")); quickSave.setText(Forge.getLocalizer().getMessage("lblQuickSave"));
if (mode == Modes.NewGamePlus) { if (mode == Modes.NewGamePlus) {
if (difficulty != null) { if (difficulty != null) {
difficulty.setVisible(true); difficulty.setVisible(true);
@@ -485,70 +489,4 @@ public class SaveLoadScene extends UIScene {
super.enter(); super.enter();
} }
@Override
public void resLoaded() {
super.resLoaded();
layout = new Table();
stage.addActor(layout);
dialog = Controls.newDialog(Forge.getLocalizer().getMessage("lblSave"));
textInput = Controls.newTextField("");
int c = 0;
String[] diffList = new String[Config.instance().getConfigData().difficulties.length];
for (DifficultyData diff : Config.instance().getConfigData().difficulties) {
diffList[c] = diff.name;
c++;
}
;
difficulty = Controls.newComboBox(diffList, null, o -> {
//DifficultyData difficulty1 = Config.instance().getConfigData().difficulties[difficulty.getSelectedIndex()];
return null;
});
dialog.getButtonTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblNameYourSaveFile"))).colspan(2).pad(2, 15, 2, 15);
dialog.getButtonTable().row();
dialog.getButtonTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName") + ": ")).align(Align.left).pad(2, 15, 2, 2);
dialog.getButtonTable().add(textInput).fillX().expandX().padRight(15);
dialog.getButtonTable().row();
dialogSaveBtn = Controls.newTextButton(Forge.getLocalizer().getMessage("lblSave"), () -> SaveLoadScene.this.save());
dialog.getButtonTable().add(dialogSaveBtn).align(Align.left).padLeft(15);
dialogAbortBtn = Controls.newTextButton(Forge.getLocalizer().getMessage("lblAbort"), () -> SaveLoadScene.this.saveAbort());
dialog.getButtonTable().add(dialogAbortBtn).align(Align.right).padRight(15);
//makes dialog hidden immediately when you open saveload scene..
dialog.getColor().a = 0;
dialog.hide();
previewImage = ui.findActor("preview");
previewDate = ui.findActor("saveDate");
header = Controls.newLabel(Forge.getLocalizer().getMessage("lblSave"));
header.setAlignment(Align.center);
layout.add(header).pad(2).colspan(4).align(Align.center).expandX();
layout.row();
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 < 11; i++)
addSaveSlot(Forge.getLocalizer().getMessage("lblSlot") + ": " + i, i);
saveLoadButton = ui.findActor("save");
saveLoadButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSave"));
ui.onButtonPress("save", () -> SaveLoadScene.this.loadSave());
back = ui.findActor("return");
back.getLabel().setText(Forge.getLocalizer().getMessage("lblBack"));
ui.onButtonPress("return", () -> SaveLoadScene.this.back());
defColor = saveLoadButton.getColor();
scrollPane = ui.findActor("saveSlots");
scrollPane.setActor(layout);
ui.addActor(difficulty);
difficulty.setSelectedIndex(1);
difficulty.setAlignment(Align.center);
difficulty.getStyle().fontColor = Color.GOLD;
if (Forge.isLandscapeMode()) {
difficulty.setX(280);
difficulty.setY(220);
} else {
difficulty.setX(190);
difficulty.setY(336);
}
}
} }

View File

@@ -1,14 +1,14 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.util.Config; import forge.adventure.util.Config;
import forge.adventure.util.Controls; import forge.adventure.util.Controls;
@@ -24,123 +24,12 @@ public class SettingsScene extends UIScene {
Stage stage; Stage stage;
Texture Background; Texture Background;
private Table settingGroup; private Table settingGroup;
TextButton back; TextraButton backButton;
ScrollPane scrollPane; ScrollPane scrollPane;
private SettingsScene() { private SettingsScene() {
super(Forge.isLandscapeMode() ? "ui/settings.json" : "ui/settings_portrait.json"); super(Forge.isLandscapeMode() ? "ui/settings.json" : "ui/settings_portrait.json");
}
@Override
public void dispose() {
if (stage != null)
stage.dispose();
}
public void renderAct(float delta) {
Gdx.gl.glClearColor(1, 0, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.getBatch().begin();
stage.getBatch().disableBlending();
stage.getBatch().draw(Background, 0, 0, getIntendedWidth(), getIntendedHeight());
stage.getBatch().enableBlending();
stage.getBatch().end();
stage.act(delta);
stage.draw();
}
@Override
public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
back();
}
if (keycode == Input.Keys.BUTTON_B)
performTouch(back);
else if (keycode == Input.Keys.BUTTON_L1) {
scrollPane.fling(1f, 0, -300);
} else if (keycode == Input.Keys.BUTTON_R1) {
scrollPane.fling(1f, 0, +300);
}
return true;
}
public boolean back() {
Forge.switchToLast();
return true;
}
private void addInputField(String name, ForgePreferences.FPref pref) {
TextField box = Controls.newTextField("");
box.setText(Preference.getPref(pref));
box.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
Preference.setPref(pref, ((TextField) actor).getText());
Preference.save();
}
});
addLabel(name);
settingGroup.add(box).align(Align.right);
}
private void addCheckBox(String name, ForgePreferences.FPref pref) {
CheckBox box = Controls.newCheckBox("");
box.setChecked(Preference.getPrefBoolean(pref));
box.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
Preference.setPref(pref, ((CheckBox) actor).isChecked());
Preference.save();
}
});
addLabel(name);
settingGroup.add(box).align(Align.right);
}
private void addSettingSlider(String name, ForgePreferences.FPref pref, int min, int max) {
Slider slide = Controls.newSlider(min, max, 1, false);
slide.setValue(Preference.getPrefInt(pref));
slide.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
Preference.setPref(pref, String.valueOf((int) ((Slider) actor).getValue()));
Preference.save();
}
});
addLabel(name);
settingGroup.add(slide).align(Align.right);
}
private void addSettingField(String name, boolean value, ChangeListener change) {
CheckBox box = Controls.newCheckBox("");
box.setChecked(value);
box.addListener(change);
addLabel(name);
settingGroup.add(box).align(Align.right);
}
private void addSettingField(String name, int value, ChangeListener change) {
TextField text = Controls.newTextField(String.valueOf(value));
text.setTextFieldFilter((textField, c) -> Character.isDigit(c));
text.addListener(change);
addLabel(name);
settingGroup.add(text).align(Align.right);
}
void addLabel(String name) {
Label label = Controls.newLabel(name);
label.setWrap(true);
settingGroup.row().space(5);
int w = Forge.isLandscapeMode() ? 160 : 80;
settingGroup.add(label).align(Align.left).pad(2, 2, 2, 5).width(w).expand();
}
@Override
public void resLoaded() {
super.resLoaded();
settingGroup = new Table(); settingGroup = new Table();
if (Preference == null) { if (Preference == null) {
Preference = new ForgePreferences(); Preference = new ForgePreferences();
@@ -271,47 +160,27 @@ public class SettingsScene extends UIScene {
settingGroup.row(); settingGroup.row();
back = ui.findActor("return"); backButton = ui.findActor("return");
back.getLabel().setText(Forge.getLocalizer().getMessage("lblBack"));
ui.onButtonPress("return", SettingsScene.this::back); ui.onButtonPress("return", SettingsScene.this::back);
ScrollPane scrollPane = ui.findActor("settings"); ScrollPane scrollPane = ui.findActor("settings");
scrollPane.setActor(settingGroup); scrollPane.setActor(settingGroup);
} }
private static SettingsScene object;
public static SettingsScene instance() {
if(object==null)
object=new SettingsScene();
return object;
}
@Override
public void dispose() {
if (stage != null)
stage.dispose();
}
public void renderAct(float delta) {
Gdx.gl.glClearColor(1, 0, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.getBatch().begin();
stage.getBatch().disableBlending();
stage.getBatch().draw(Background, 0, 0, getIntendedWidth(), getIntendedHeight());
stage.getBatch().enableBlending();
stage.getBatch().end();
stage.act(delta);
stage.draw();
}
@Override @Override
public boolean keyPressed(int keycode) { public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) { if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
back(); back();
} }
if (keycode == Input.Keys.BUTTON_B)
performTouch(backButton);
else if (keycode == Input.Keys.BUTTON_L1) {
scrollPane.fling(1f, 0, -300);
} else if (keycode == Input.Keys.BUTTON_R1) {
scrollPane.fling(1f, 0, +300);
}
return true; return true;
} }
@@ -381,13 +250,31 @@ public class SettingsScene extends UIScene {
} }
void addLabel(String name) { void addLabel(String name) {
Label label = Controls.newLabel(name); TextraLabel label = Controls.newTextraLabel(name);
label.setWrap(true); label.setWrap(true);
settingGroup.row().space(5); settingGroup.row().space(5);
int w = Forge.isLandscapeMode() ? 160 : 80; int w = Forge.isLandscapeMode() ? 160 : 80;
settingGroup.add(label).align(Align.left).pad(2, 2, 2, 5).width(w).expand(); settingGroup.add(label).align(Align.left).pad(2, 2, 2, 5).width(w).expand();
} }
private static SettingsScene object;
public static SettingsScene instance() {
if(object==null)
object=new SettingsScene();
return object;
}
@Override
public void dispose() {
if (stage != null)
stage.dispose();
}
@Override @Override
public void create() { public void create() {

View File

@@ -3,12 +3,12 @@ package forge.adventure.scene;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox; import com.badlogic.gdx.scenes.scene2d.ui.SelectBox;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.StaticData; import forge.StaticData;
import forge.adventure.data.RewardData; import forge.adventure.data.RewardData;
@@ -38,15 +38,15 @@ public class SpellSmithScene extends UIScene {
} }
private List<PaperCard> cardPool = new ArrayList<>(); private List<PaperCard> cardPool = new ArrayList<>();
private Label goldLabel; private TextraLabel goldLabel;
private TextButton pullButton; private TextraButton pullButton;
private ScrollPane rewardDummy; private ScrollPane rewardDummy;
private RewardActor rewardActor; private RewardActor rewardActor;
SelectBox<CardEdition> editionList; SelectBox<CardEdition> editionList;
//Button containers. //Button containers.
final private HashMap<String, TextButton> rarityButtons = new HashMap<>(); final private HashMap<String, TextraButton> rarityButtons = new HashMap<>();
final private HashMap<String, TextButton> costButtons = new HashMap<>(); final private HashMap<String, TextraButton> costButtons = new HashMap<>();
final private HashMap<String, TextButton> colorButtons = new HashMap<>(); final private HashMap<String, TextraButton> colorButtons = new HashMap<>();
//Filter variables. //Filter variables.
private String edition = ""; private String edition = "";
private String rarity = ""; private String rarity = "";
@@ -91,7 +91,7 @@ public class SpellSmithScene extends UIScene {
pullButton.setDisabled(true); pullButton.setDisabled(true);
goldLabel.setText("Gold: "+ Current.player().getGold()); goldLabel.setText("Gold: "+ Current.player().getGold());
for(String i : new String[]{"BBlack", "BBlue", "BGreen", "BRed", "BWhite", "BColorless"} ){ for(String i : new String[]{"BBlack", "BBlue", "BGreen", "BRed", "BWhite", "BColorless"} ){
TextButton button = ui.findActor(i); TextraButton button = ui.findActor(i);
if(button != null){ if(button != null){
colorButtons.put(i, button); colorButtons.put(i, button);
button.addListener(new ClickListener() { button.addListener(new ClickListener() {
@@ -104,7 +104,7 @@ public class SpellSmithScene extends UIScene {
} }
} }
for(String i : new String[]{"BCommon", "BUncommon", "BRare", "BMythic"} ){ for(String i : new String[]{"BCommon", "BUncommon", "BRare", "BMythic"} ){
TextButton button = ui.findActor(i); TextraButton button = ui.findActor(i);
if(button != null) { if(button != null) {
rarityButtons.put(i, button); rarityButtons.put(i, button);
button.addListener(new ClickListener() { button.addListener(new ClickListener() {
@@ -117,7 +117,7 @@ public class SpellSmithScene extends UIScene {
} }
} }
for(String i : new String[]{"B02", "B35", "B68", "B9X"} ){ for(String i : new String[]{"B02", "B35", "B68", "B9X"} ){
TextButton button = ui.findActor(i); TextraButton button = ui.findActor(i);
if(button != null) { if(button != null) {
costButtons.put(i, button); costButtons.put(i, button);
button.addListener(new ClickListener() { button.addListener(new ClickListener() {
@@ -148,7 +148,7 @@ public class SpellSmithScene extends UIScene {
} }
private boolean selectRarity(String what){ private boolean selectRarity(String what){
for(Map.Entry<String, TextButton> B : rarityButtons.entrySet()) for(Map.Entry<String, TextraButton> B : rarityButtons.entrySet())
B.getValue().setColor(Color.WHITE); B.getValue().setColor(Color.WHITE);
switch(what){ switch(what){
case "BCommon": case "BCommon":
@@ -170,11 +170,11 @@ public class SpellSmithScene extends UIScene {
} }
private void selectColor(String what){ private void selectColor(String what){
TextButton B = colorButtons.get(what); TextraButton B = colorButtons.get(what);
switch(what){ switch(what){
case "BColorless": case "BColorless":
if(B.getColor().equals(Color.RED)) B.setColor(Color.WHITE); else { if(B.getColor().equals(Color.RED)) B.setColor(Color.WHITE); else {
for (Map.Entry<String, TextButton> BT : colorButtons.entrySet()) for (Map.Entry<String, TextraButton> BT : colorButtons.entrySet())
BT.getValue().setColor(Color.WHITE); BT.getValue().setColor(Color.WHITE);
B.setColor(Color.RED); B.setColor(Color.RED);
} }
@@ -191,7 +191,7 @@ public class SpellSmithScene extends UIScene {
} }
private boolean selectCost(String what){ private boolean selectCost(String what){
for(Map.Entry<String, TextButton> B : costButtons.entrySet()) for(Map.Entry<String, TextraButton> B : costButtons.entrySet())
B.getValue().setColor(Color.WHITE); B.getValue().setColor(Color.WHITE);
switch(what){ switch(what){
case "B02": case "B02":
@@ -218,11 +218,11 @@ public class SpellSmithScene extends UIScene {
cost_low = -1; cost_high = 9999; cost_low = -1; cost_high = 9999;
rarity = ""; rarity = "";
currentPrice = (int)basePrice; currentPrice = (int)basePrice;
goldLabel.setText("Gold: "+ Current.player().getGold()); goldLabel.setText(Current.player().getGold()+"[+Gold]");
for(Map.Entry<String, TextButton> B : colorButtons.entrySet()) B.getValue().setColor(Color.WHITE); for(Map.Entry<String, TextraButton> B : colorButtons.entrySet()) B.getValue().setColor(Color.WHITE);
for(Map.Entry<String, TextButton> B : costButtons.entrySet()) B.getValue().setColor(Color.WHITE); for(Map.Entry<String, TextraButton> B : costButtons.entrySet()) B.getValue().setColor(Color.WHITE);
for(Map.Entry<String, TextButton> B : rarityButtons.entrySet()) B.getValue().setColor(Color.WHITE); for(Map.Entry<String, TextraButton> B : rarityButtons.entrySet()) B.getValue().setColor(Color.WHITE);
editionList.setColor(Color.WHITE); editionList.setColor(Color.WHITE);
filterResults(); filterResults();
super.enter(); super.enter();
@@ -231,10 +231,10 @@ public class SpellSmithScene extends UIScene {
public void filterResults() { public void filterResults() {
Iterable<PaperCard> P = RewardData.getAllCards(); Iterable<PaperCard> P = RewardData.getAllCards();
goldLabel.setText("Gold: "+ Current.player().getGold()); goldLabel.setText( Current.player().getGold()+"[+Gold]");
float totalCost = basePrice * Current.player().goldModifier(); float totalCost = basePrice * Current.player().goldModifier();
final List<String> colorFilter = new ArrayList<>(); final List<String> colorFilter = new ArrayList<>();
for(Map.Entry<String, TextButton> B : colorButtons.entrySet()) for(Map.Entry<String, TextraButton> B : colorButtons.entrySet())
switch (B.getKey()){ switch (B.getKey()){
case "BColorless": case "BColorless":
if(B.getValue().getColor().equals(Color.RED)) colorFilter.add("Colorless"); if(B.getValue().getColor().equals(Color.RED)) colorFilter.add("Colorless");

View File

@@ -3,8 +3,8 @@ package forge.adventure.scene;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.github.tommyettinger.textra.TextraButton;
import forge.Forge; import forge.Forge;
import forge.adventure.stage.GameHUD; import forge.adventure.stage.GameHUD;
import forge.adventure.stage.GameStage; import forge.adventure.stage.GameStage;
@@ -20,8 +20,10 @@ import forge.screens.TransitionScreen;
*/ */
public class StartScene extends UIScene { public class StartScene extends UIScene {
TextButton saveButton, resumeButton, continueButton, newGameButton, newGameButtonPlus, loadButton, settingsButton, exitButton, switchButton; private static StartScene object;
TextraButton saveButton, resumeButton, continueButton, newGameButton, newGameButtonPlus, loadButton, settingsButton, exitButton, switchButton, dialogOk, dialogCancel, dialogButtonSelected;
Dialog dialog; Dialog dialog;
private int selected = -1;
public StartScene() { public StartScene() {
super(Forge.isLandscapeMode() ? "ui/start_menu.json" : "ui/start_menu_portrait.json"); super(Forge.isLandscapeMode() ? "ui/start_menu.json" : "ui/start_menu_portrait.json");
@@ -36,23 +38,13 @@ public class StartScene extends UIScene {
ui.onButtonPress("Switch", () -> Forge.switchToClassic()); ui.onButtonPress("Switch", () -> Forge.switchToClassic());
newGameButton = ui.findActor("Start"); newGameButton = ui.findActor("Start");
newGameButton.getLabel().setText(Forge.getLocalizer().getMessage("lblNewGame"));
newGameButtonPlus = ui.findActor("Start+");
newGameButtonPlus.getLabel().setText(Forge.getLocalizer().getMessage("lblNewGame") + "+");
loadButton = ui.findActor("Load"); loadButton = ui.findActor("Load");
loadButton.getLabel().setText(Forge.getLocalizer().getMessage("lblLoad"));
saveButton = ui.findActor("Save"); saveButton = ui.findActor("Save");
saveButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSave"));
resumeButton = ui.findActor("Resume"); resumeButton = ui.findActor("Resume");
resumeButton.getLabel().setText(Forge.getLocalizer().getMessage("lblResume"));
continueButton = ui.findActor("Continue"); continueButton = ui.findActor("Continue");
continueButton.getLabel().setText(Forge.getLocalizer().getMessage("lblContinue"));
settingsButton = ui.findActor("Settings"); settingsButton = ui.findActor("Settings");
settingsButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSettings"));
exitButton = ui.findActor("Exit"); exitButton = ui.findActor("Exit");
exitButton.getLabel().setText(Forge.getLocalizer().getMessage("lblExit"));
switchButton = ui.findActor("Switch"); switchButton = ui.findActor("Switch");
switchButton.getLabel().setText(Forge.getLocalizer().getMessage("lblClassic"));
saveButton.setVisible(false); saveButton.setVisible(false);
resumeButton.setVisible(false); resumeButton.setVisible(false);
@@ -67,6 +59,12 @@ public class StartScene extends UIScene {
dialog.getColor().a = 0; dialog.getColor().a = 0;
} }
public static StartScene instance() {
if(object==null)
object=new StartScene();
return object;
}
public boolean NewGame() { public boolean NewGame() {
Forge.switchScene(NewGameScene.instance()); Forge.switchScene(NewGameScene.instance());
return true; return true;

View File

@@ -9,18 +9,14 @@ import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap;
import com.badlogic.gdx.utils.Scaling; import com.badlogic.gdx.utils.Scaling;
import com.badlogic.gdx.utils.Timer; import com.badlogic.gdx.utils.Timer;
import com.badlogic.gdx.utils.viewport.ScalingViewport; import com.badlogic.gdx.utils.viewport.ScalingViewport;
import com.github.tommyettinger.textra.TextraButton;
import forge.Forge; import forge.Forge;
import forge.adventure.util.Config; import forge.adventure.util.Config;
import forge.adventure.util.Controls; import forge.adventure.util.Controls;
@@ -37,7 +33,7 @@ public class UIScene extends Scene {
String uiFile; String uiFile;
private Dialog keyboardDialog; private Dialog keyboardDialog;
private Label kbLabel; private Label kbLabel;
private TextButton keyA, keyB, keyC, keyD, keyE, keyF, keyG, keyH, keyI, keyJ, keyK, keyL, keyM, keyN, keyO, keyP, private TextraButton keyA, keyB, keyC, keyD, keyE, keyF, keyG, keyH, keyI, keyJ, keyK, keyL, keyM, keyN, keyO, keyP,
keyQ, keyR, keyS, keyT, keyU, keyV, keyW, keyX, keyY, keyZ, key1, key2, key3, key4, key5, key6, key7, key8, keyQ, keyR, keyS, keyT, keyU, keyV, keyW, keyX, keyY, keyZ, key1, key2, key3, key4, key5, key6, key7, key8,
key9, key0, keyDot, keyComma, keyShift, keyBackspace, keySpace, keyOK; key9, key0, keyDot, keyComma, keyShift, keyBackspace, keySpace, keyOK;
public Actor lastInputField; public Actor lastInputField;
@@ -246,33 +242,33 @@ public class UIScene extends Scene {
} }
private void shiftKey() { private void shiftKey() {
lowercaseKey = !lowercaseKey; lowercaseKey = !lowercaseKey;
keyShift.getLabel().setColor(lowercaseKey ? Color.WHITE : Color.CYAN); keyShift.setColor(lowercaseKey ? Color.WHITE : Color.CYAN);
keyA.getLabel().setText(lowercaseKey ? "a" : "A"); keyA.setText(lowercaseKey ? "a" : "A");
keyB.getLabel().setText(lowercaseKey ? "b" : "B"); keyB.setText(lowercaseKey ? "b" : "B");
keyC.getLabel().setText(lowercaseKey ? "c" : "C"); keyC.setText(lowercaseKey ? "c" : "C");
keyD.getLabel().setText(lowercaseKey ? "d" : "D"); keyD.setText(lowercaseKey ? "d" : "D");
keyE.getLabel().setText(lowercaseKey ? "e" : "E"); keyE.setText(lowercaseKey ? "e" : "E");
keyF.getLabel().setText(lowercaseKey ? "f" : "F"); keyF.setText(lowercaseKey ? "f" : "F");
keyG.getLabel().setText(lowercaseKey ? "g" : "G"); keyG.setText(lowercaseKey ? "g" : "G");
keyH.getLabel().setText(lowercaseKey ? "h" : "H"); keyH.setText(lowercaseKey ? "h" : "H");
keyI.getLabel().setText(lowercaseKey ? "i" : "I"); keyI.setText(lowercaseKey ? "i" : "I");
keyJ.getLabel().setText(lowercaseKey ? "j" : "J"); keyJ.setText(lowercaseKey ? "j" : "J");
keyK.getLabel().setText(lowercaseKey ? "k" : "K"); keyK.setText(lowercaseKey ? "k" : "K");
keyL.getLabel().setText(lowercaseKey ? "l" : "L"); keyL.setText(lowercaseKey ? "l" : "L");
keyM.getLabel().setText(lowercaseKey ? "m" : "M"); keyM.setText(lowercaseKey ? "m" : "M");
keyN.getLabel().setText(lowercaseKey ? "n" : "N"); keyN.setText(lowercaseKey ? "n" : "N");
keyO.getLabel().setText(lowercaseKey ? "o" : "O"); keyO.setText(lowercaseKey ? "o" : "O");
keyP.getLabel().setText(lowercaseKey ? "p" : "P"); keyP.setText(lowercaseKey ? "p" : "P");
keyQ.getLabel().setText(lowercaseKey ? "q" : "Q"); keyQ.setText(lowercaseKey ? "q" : "Q");
keyR.getLabel().setText(lowercaseKey ? "r" : "R"); keyR.setText(lowercaseKey ? "r" : "R");
keyS.getLabel().setText(lowercaseKey ? "s" : "S"); keyS.setText(lowercaseKey ? "s" : "S");
keyT.getLabel().setText(lowercaseKey ? "t" : "T"); keyT.setText(lowercaseKey ? "t" : "T");
keyU.getLabel().setText(lowercaseKey ? "u" : "U"); keyU.setText(lowercaseKey ? "u" : "U");
keyV.getLabel().setText(lowercaseKey ? "v" : "V"); keyV.setText(lowercaseKey ? "v" : "V");
keyW.getLabel().setText(lowercaseKey ? "w" : "W"); keyW.setText(lowercaseKey ? "w" : "W");
keyX.getLabel().setText(lowercaseKey ? "x" : "X"); keyX.setText(lowercaseKey ? "x" : "X");
keyY.getLabel().setText(lowercaseKey ? "y" : "Y"); keyY.setText(lowercaseKey ? "y" : "Y");
keyZ.getLabel().setText(lowercaseKey ? "z" : "Z"); keyZ.setText(lowercaseKey ? "z" : "Z");
} }
public void setSelectedKey(int keyCode) { public void setSelectedKey(int keyCode) {
switch(keyCode) { switch(keyCode) {
@@ -632,7 +628,7 @@ public class UIScene extends Scene {
if (actor instanceof TextButton) if (actor instanceof TextButton)
((TextButton) actor).fire(eventExit); ((TextButton) actor).fire(eventExit);
else if (actor instanceof Selector) else if (actor instanceof Selector)
((Selector) actor).getLabel().fire(eventExit); ((Selector) actor).fire(eventExit);
else if (actor instanceof TextField) { else if (actor instanceof TextField) {
if (stage.getKeyboardFocus() == actor) if (stage.getKeyboardFocus() == actor)
stage.setKeyboardFocus(null); stage.setKeyboardFocus(null);
@@ -668,8 +664,8 @@ public class UIScene extends Scene {
if (kbVisible) { if (kbVisible) {
if (selectedKey != null) { if (selectedKey != null) {
selectedKey.fire(eventExit); selectedKey.fire(eventExit);
if (selectedKey instanceof TextButton) if (selectedKey instanceof TextraButton)
if (!(((TextButton) selectedKey) == keyOK || ((TextButton) selectedKey) == keySpace)) if (!(selectedKey == keyOK || selectedKey == keySpace))
lastSelectedKey = selectedKey; lastSelectedKey = selectedKey;
} }
selectedKey = actor; selectedKey = actor;
@@ -685,10 +681,10 @@ public class UIScene extends Scene {
return; return;
Actor a = actorObjectMap.get(key); Actor a = actorObjectMap.get(key);
if (a != null) { if (a != null) {
if (a instanceof TextButton) if (a instanceof TextraButton)
((TextButton) a).fire(eventEnter); a.fire(eventEnter);
else if (a instanceof Selector) else if (a instanceof Selector)
((Selector) a).getLabel().fire(eventEnter); ((Selector) a).fire(eventEnter);
else if (a instanceof TextField) { else if (a instanceof TextField) {
stage.setKeyboardFocus(a); stage.setKeyboardFocus(a);
} else if (a instanceof ImageButton) { } else if (a instanceof ImageButton) {

View File

@@ -26,7 +26,7 @@ public class Console extends Window {
private Console console; private Console console;
public InputLine(Console console) { public InputLine(Console console) {
super("", Controls.GetSkin()); super("", Controls.getSkin());
this.console = console; this.console = console;
writeEnters=true; writeEnters=true;
} }
@@ -77,8 +77,8 @@ public class Console extends Window {
} }
public Console() { public Console() {
super("", Controls.GetSkin()); super("", Controls.getSkin());
content = new Table(Controls.GetSkin()); content = new Table(Controls.getSkin());
input = new InputLine(this); input = new InputLine(this);
scroll = new ScrollPane(content,new ScrollPane.ScrollPaneStyle()); scroll = new ScrollPane(content,new ScrollPane.ScrollPaneStyle());

View File

@@ -2,6 +2,9 @@ package forge.adventure.stage;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.controllers.ControllerListener;
import com.badlogic.gdx.controllers.Controllers;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
@@ -10,17 +13,19 @@ import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Touchpad;
import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener; import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Scaling; import com.badlogic.gdx.utils.Scaling;
import com.badlogic.gdx.utils.Timer;
import com.badlogic.gdx.utils.viewport.ScalingViewport; import com.badlogic.gdx.utils.viewport.ScalingViewport;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.player.AdventurePlayer; import forge.adventure.player.AdventurePlayer;
import forge.adventure.scene.Scene; import forge.adventure.scene.*;
import forge.adventure.scene.SceneType;
import forge.adventure.util.Config; import forge.adventure.util.Config;
import forge.adventure.util.Controls; import forge.adventure.util.Controls;
import forge.adventure.util.Current; import forge.adventure.util.Current;
@@ -33,17 +38,19 @@ import forge.gui.GuiBase;
/** /**
* Stage to handle everything rendered in the HUD * Stage to handle everything rendered in the HUD
*/ */
public class GameHUD extends Stage { public class GameHUD extends Stage implements ControllerListener {
static public GameHUD instance; static public GameHUD instance;
private final GameStage gameStage; private final GameStage gameStage;
private final Image avatar; private final Image avatar;
private final Image miniMapPlayer; private final Image miniMapPlayer;
private final Label lifePoints; private final TextraLabel lifePoints;
private final Label money; private final TextraLabel money;
private final Label mana; private final TextraLabel mana;
private final Image miniMap, gamehud, mapborder, avatarborder, blank; private final Image miniMap, gamehud, mapborder, avatarborder, blank;
private TextButton deckActor, menuActor, statsActor, inventoryActor; private final InputEvent eventTouchDown;
private final InputEvent eventTouchUp;
private TextraButton deckActor, menuActor, statsActor, inventoryActor;
private UIActor ui; private UIActor ui;
private Touchpad touchpad; private Touchpad touchpad;
private Console console; private Console console;
@@ -66,19 +73,15 @@ public class GameHUD extends Stage {
avatarborder = ui.findActor("avatarborder"); avatarborder = ui.findActor("avatarborder");
deckActor = ui.findActor("deck"); deckActor = ui.findActor("deck");
deckActor.getLabel().setText(Forge.getLocalizer().getMessage("lblDeck"));
menuActor = ui.findActor("menu"); menuActor = ui.findActor("menu");
referenceX = menuActor.getX(); referenceX = menuActor.getX();
menuActor.getLabel().setText(Forge.getLocalizer().getMessage("lblMenu"));
statsActor = ui.findActor("statistic"); statsActor = ui.findActor("statistic");
statsActor.getLabel().setText(Forge.getLocalizer().getMessage("lblStatus"));
inventoryActor = ui.findActor("inventory"); inventoryActor = ui.findActor("inventory");
inventoryActor.getLabel().setText(Forge.getLocalizer().getMessage("lblItem"));
gamehud = ui.findActor("gamehud"); gamehud = ui.findActor("gamehud");
miniMapPlayer = new Image(new Texture(Config.instance().getFile("ui/minimap_player.png"))); miniMapPlayer = new Image(new Texture(Config.instance().getFile("ui/minimap_player.png")));
//create touchpad //create touchpad
touchpad = new Touchpad(10, Controls.GetSkin()); touchpad = new Touchpad(10, Controls.getSkin());
touchpad.setBounds(15, 15, TOUCHPAD_SCALE, TOUCHPAD_SCALE); touchpad.setBounds(15, 15, TOUCHPAD_SCALE, TOUCHPAD_SCALE);
touchpad.addListener(new ChangeListener() { touchpad.addListener(new ChangeListener() {
@Override @Override
@@ -257,9 +260,9 @@ public class GameHUD extends Stage {
avatar.setDrawable(new TextureRegionDrawable(Current.player().avatar())); avatar.setDrawable(new TextureRegionDrawable(Current.player().avatar()));
Deck deck = AdventurePlayer.current().getSelectedDeck(); Deck deck = AdventurePlayer.current().getSelectedDeck();
if (deck == null || deck.isEmpty() || deck.getMain().toFlatList().size() < 30) { if (deck == null || deck.isEmpty() || deck.getMain().toFlatList().size() < 30) {
deckActor.getLabel().setColor(Color.RED); deckActor.setColor(Color.RED);
} else { } else {
deckActor.getLabel().setColor(menuActor.getLabel().getColor()); deckActor.setColor(menuActor.getColor());
} }
} }

View File

@@ -98,7 +98,7 @@ public abstract class GameStage extends Stage {
return; return;
foregroundSprites.removeActor(player); foregroundSprites.removeActor(player);
player = null; player = null;
GameStage.this.GetPlayer(); GameStage.this.getPlayerSprite();
} }
}); });
camera = (OrthographicCamera) getCamera(); camera = (OrthographicCamera) getCamera();

View File

@@ -2,9 +2,10 @@ package forge.adventure.stage;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.controllers.Controllers;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.maps.MapLayer; import com.badlogic.gdx.maps.MapLayer;
import com.badlogic.gdx.maps.MapObject; import com.badlogic.gdx.maps.MapObject;
@@ -15,17 +16,16 @@ import com.badlogic.gdx.maps.tiled.TiledMapTileLayer;
import com.badlogic.gdx.maps.tiled.objects.TiledMapTileMapObject; import com.badlogic.gdx.maps.tiled.objects.TiledMapTileMapObject;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.utils.*;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.github.tommyettinger.textra.TextraButton;
import com.badlogic.gdx.utils.Align; import com.github.tommyettinger.textra.TextraLabel;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Scaling;
import com.github.tommyettinger.textra.TypingAdapter; import com.github.tommyettinger.textra.TypingAdapter;
import com.github.tommyettinger.textra.TypingLabel; import com.github.tommyettinger.textra.TypingLabel;
import forge.Forge; import forge.Forge;
@@ -35,7 +35,6 @@ import forge.adventure.pointofintrest.PointOfInterestChanges;
import forge.adventure.scene.*; import forge.adventure.scene.*;
import forge.adventure.util.*; import forge.adventure.util.*;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.card.ColorSet;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.DeckProxy; import forge.deck.DeckProxy;
import forge.gui.FThreads; import forge.gui.FThreads;
@@ -43,20 +42,18 @@ import forge.screens.TransitionScreen;
import forge.sound.SoundEffectType; import forge.sound.SoundEffectType;
import forge.sound.SoundSystem; import forge.sound.SoundSystem;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static forge.adventure.util.Paths.MANA_ATLAS;
/** /**
* Stage to handle tiled maps for points of interests * Stage to handle tiled maps for points of interests
*/ */
public class MapStage extends GameStage { public class MapStage extends GameStage {
public static MapStage instance; public static MapStage instance;
Array<MapActor> actors = new Array<>(); final Array<MapActor> actors = new Array<>();
TiledMap map; TiledMap map;
Array<Rectangle>[][] collision; Array<Rectangle> collisionRect=new Array<>();
private float tileHeight; private float tileHeight;
private float tileWidth; private float tileWidth;
private float width; private float width;
@@ -70,9 +67,9 @@ public class MapStage extends GameStage {
private final Vector2 oldPosition3 = new Vector2(); private final Vector2 oldPosition3 = new Vector2();
private final Vector2 oldPosition4 = new Vector2(); private final Vector2 oldPosition4 = new Vector2();
private boolean isLoadingMatch = false; private boolean isLoadingMatch = false;
private HashMap<String, Byte> mapFlags = new HashMap<>(); //Stores local map flags. These aren't available outside this map. //private HashMap<String, Byte> mapFlags = new HashMap<>(); //Stores local map flags. These aren't available outside this map.
private Dialog dialog; private final Dialog dialog;
private Stage dialogStage; private Stage dialogStage;
private boolean dialogOnlyInput; private boolean dialogOnlyInput;
@@ -80,10 +77,11 @@ public class MapStage extends GameStage {
//These maps are defined as embedded properties within the Tiled maps. //These maps are defined as embedded properties within the Tiled maps.
private EffectData effect; //"Dungeon Effect": Character Effect applied to all adversaries within the map. private EffectData effect; //"Dungeon Effect": Character Effect applied to all adversaries within the map.
private boolean preventEscape = false; //Prevents player from escaping the dungeon by any means that aren't an exit. private boolean preventEscape = false; //Prevents player from escaping the dungeon by any means that aren't an exit.
private ObjectMap<Integer, TextButton> dialogButtonMap; private ObjectMap<Integer, TextraButton> dialogButtonMap;
private int selected = 0; private int selected = 0;
public InputEvent eventEnter, eventExit, eventTouchDown, eventTouchUp; public InputEvent eventEnter, eventExit, eventTouchDown, eventTouchUp;
TextButton selectedKey; TextraButton selectedKey;
private boolean foundPlayerSpawn=false;
public boolean getDialogOnlyInput() { public boolean getDialogOnlyInput() {
@@ -157,7 +155,7 @@ public class MapStage extends GameStage {
@Override @Override
public boolean isColliding(Rectangle adjustedBoundingRect) { public boolean isColliding(Rectangle adjustedBoundingRect) {
for (Rectangle collision : currentCollidingRectangles) { for (Rectangle collision : collisionRect) {
if (collision.overlaps(adjustedBoundingRect)) { if (collision.overlaps(adjustedBoundingRect)) {
return true; return true;
} }
@@ -165,24 +163,10 @@ public class MapStage extends GameStage {
return false; return false;
} }
final Array<Rectangle> currentCollidingRectangles = new Array<>();
@Override @Override
public void prepareCollision(Vector2 pos, Vector2 direction, Rectangle boundingRect) { public void prepareCollision(Vector2 pos, Vector2 direction, Rectangle boundingRect) {
currentCollidingRectangles.clear();
int x1 = (int) (Math.min(boundingRect.x, boundingRect.x + direction.x) / tileWidth);
int y1 = (int) (Math.min(boundingRect.y, boundingRect.y + direction.y) / tileHeight);
int x2 = (int) (Math.min(boundingRect.x + boundingRect.width, boundingRect.x + boundingRect.width + direction.x) / tileWidth);
int y2 = (int) (Math.min(boundingRect.y + boundingRect.height, boundingRect.y + boundingRect.height + direction.y) / tileHeight);
for (int x = x1; x <= x2; x++) {
for (int y = y1; y <= y2; y++) {
if (x < 0 || x >= width || y < 0 || y >= height) {
continue;
}
currentCollidingRectangles.addAll(collision[x][y]);
}
}
} }
@@ -194,18 +178,14 @@ public class MapStage extends GameStage {
if (collisionGroup == null) { if (collisionGroup == null) {
collisionGroup = new Group(); collisionGroup = new Group();
for (int x = 0; x < collision.length; x++) { for (Rectangle rectangle : collisionRect) {
for (int y = 0; y < collision[x].length; y++) { MapActor collisionActor = new MapActor(0);
for (Rectangle rectangle : collision[x][y]) { collisionActor.setBoundDebug(true);
MapActor collisionActor = new MapActor(0); collisionActor.setWidth(rectangle.width);
collisionActor.setBoundDebug(true); collisionActor.setHeight(rectangle.height);
collisionActor.setWidth(rectangle.width); collisionActor.setX(rectangle.x);
collisionActor.setHeight(rectangle.height); collisionActor.setY(rectangle.y);
collisionActor.setX(rectangle.x); collisionGroup.addActor(collisionActor);
collisionActor.setY(rectangle.y);
collisionGroup.addActor(collisionActor);
}
}
} }
} }
@@ -217,12 +197,12 @@ public class MapStage extends GameStage {
} }
private void effectDialog(EffectData E) { private void effectDialog(EffectData effectData) {
dialog.getButtonTable().clear(); dialog.getButtonTable().clear();
dialog.getContentTable().clear(); dialog.getContentTable().clear();
TextButton ok = Controls.newTextButton("OK", this::hideDialog); TextraButton ok = Controls.newTextButton("OK", this::hideDialog);
ok.setVisible(false); ok.setVisible(false);
TypingLabel L = Controls.newTypingLabel("{GRADIENT=CYAN;WHITE;1;1}Strange magical energies flow within this place...{ENDGRADIENT}\nAll opponents get:\n" + E.getDescription()); TypingLabel L = Controls.newTypingLabel("{GRADIENT=CYAN;WHITE;1;1}Strange magical energies flow within this place...{ENDGRADIENT}\nAll opponents get:\n" + effectData.getDescription());
L.setWrap(true); L.setWrap(true);
L.setTypingListener(new TypingAdapter() { L.setTypingListener(new TypingAdapter() {
@Override @Override
@@ -247,7 +227,7 @@ public class MapStage extends GameStage {
dialog.getContentTable().add(image).height(100); dialog.getContentTable().add(image).height(100);
dialog.getContentTable().add().row(); dialog.getContentTable().add().row();
} }
Label L = Controls.newLabel(message); TextraLabel L = Controls.newTextraLabel(message);
L.setWrap(true); L.setWrap(true);
dialog.getContentTable().add(L).width(250f); dialog.getContentTable().add(L).width(250f);
dialog.getButtonTable().add(Controls.newTextButton("OK", this::hideDialog)).width(250f); dialog.getButtonTable().add(Controls.newTextButton("OK", this::hideDialog)).width(250f);
@@ -259,81 +239,14 @@ public class MapStage extends GameStage {
public void showDeckAwardDialog(String message, Deck deck) { public void showDeckAwardDialog(String message, Deck deck) {
dialog.getContentTable().clear(); dialog.getContentTable().clear();
dialog.getButtonTable().clear(); dialog.getButtonTable().clear();
if (deck != null) {
TextureAtlas atlas = Config.instance().getAtlas(MANA_ATLAS); dialog.getContentTable().add(Controls.newTypingLabel(Controls.colorIdToTypingString(DeckProxy.getColorIdentity(deck)))).align(Align.center);
ColorSet deckColor = DeckProxy.getColorIdentity(deck); dialog.getContentTable().add().row();
if (deckColor.isColorless()) {
Image pixC = new Image(atlas.createSprite("pixC"));
pixC.setScaling(Scaling.fit);
dialog.getContentTable().add(pixC).height(20).width(20);
dialog.getContentTable().add().row();
} else if (deckColor.isMonoColor()) {
Image pix = new Image(atlas.createSprite("pixC"));
if (deckColor.hasWhite())
pix = new Image(atlas.createSprite("pixW"));
else if (deckColor.hasBlue())
pix = new Image(atlas.createSprite("pixU"));
else if (deckColor.hasBlack())
pix = new Image(atlas.createSprite("pixB"));
else if (deckColor.hasRed())
pix = new Image(atlas.createSprite("pixR"));
else if (deckColor.hasGreen())
pix = new Image(atlas.createSprite("pixG"));
pix.setScaling(Scaling.fit);
dialog.getContentTable().add(pix).height(20).width(20);
dialog.getContentTable().add().row();
} else if (deckColor.isMulticolor()) {
Group group = new Group();
int mul = 0;
if (deckColor.hasWhite()) {
Image pix = new Image(atlas.createSprite("pixW"));
pix.setScaling(Scaling.fit);
pix.setSize(20, 20);
pix.setPosition(0, 0);
group.addActor(pix);
mul++;
}
if (deckColor.hasBlue()) {
Image pix = new Image(atlas.createSprite("pixU"));
pix.setScaling(Scaling.fit);
pix.setSize(20, 20);
pix.setPosition(20 * mul, 0);
mul++;
group.addActor(pix);
}
if (deckColor.hasBlack()) {
Image pix = new Image(atlas.createSprite("pixB"));
pix.setScaling(Scaling.fit);
pix.setSize(20, 20);
pix.setPosition(20 * mul, 0);
mul++;
group.addActor(pix);
}
if (deckColor.hasRed()) {
Image pix = new Image(atlas.createSprite("pixR"));
pix.setScaling(Scaling.fit);
pix.setSize(20, 20);
pix.setPosition(20 * mul, 0);
mul++;
group.addActor(pix);
}
if (deckColor.hasGreen()) {
Image pix = new Image(atlas.createSprite("pixG"));
pix.setScaling(Scaling.fit);
pix.setSize(20, 20);
pix.setPosition(20 * mul, 0);
mul++;
group.addActor(pix);
}
group.setHeight(20);
group.setWidth(20 * mul);
dialog.getContentTable().add(group).align(Align.center);
dialog.getContentTable().add().row();
}
}
TypingLabel L = Controls.newTypingLabel(message); TypingLabel L = Controls.newTypingLabel(message);
L.setWrap(true); L.setWrap(true);
L.skipToTheEnd(); L.skipToTheEnd();
dialog.getContentTable().add(L).width(240); dialog.getContentTable().add(L).width(240);
dialog.getButtonTable().add(Controls.newTextButton("OK", this::hideDialog)).width(240); dialog.getButtonTable().add(Controls.newTextButton("OK", this::hideDialog)).width(240);
dialog.setKeepWithinStage(true); dialog.setKeepWithinStage(true);
@@ -351,13 +264,14 @@ public class MapStage extends GameStage {
foregroundSprites.removeActor(actor); foregroundSprites.removeActor(actor);
} }
actors = new Array<>(); actors.clear();
collisionRect.clear();
width = Float.parseFloat(map.getProperties().get("width").toString()); width = Float.parseFloat(map.getProperties().get("width").toString());
height = Float.parseFloat(map.getProperties().get("height").toString()); height = Float.parseFloat(map.getProperties().get("height").toString());
tileHeight = Float.parseFloat(map.getProperties().get("tileheight").toString()); tileHeight = Float.parseFloat(map.getProperties().get("tileheight").toString());
tileWidth = Float.parseFloat(map.getProperties().get("tilewidth").toString()); tileWidth = Float.parseFloat(map.getProperties().get("tilewidth").toString());
setBounds(width * tileWidth, height * tileHeight); setBounds(width * tileWidth, height * tileHeight);
collision = new Array[(int) width][(int) height]; //collision = new Array[(int) width][(int) height];
//Load dungeon effects. //Load dungeon effects.
MapProperties MP = map.getProperties(); MapProperties MP = map.getProperties();
@@ -385,23 +299,57 @@ public class MapStage extends GameStage {
loadObjects(layer, sourceMap); loadObjects(layer, sourceMap);
} }
} }
//reduce geometry in collision rectangles
int oldSize;
do {
oldSize=collisionRect.size;
for(int i=0;i<collisionRect.size;i++)
{
Rectangle r1= collisionRect.get(i);
for(int j=i+1;j<collisionRect.size;j++)
{
Rectangle r2= collisionRect.get(j);
if((Math.abs(r1.x-r2.x+r2.width)<1&&Math.abs(r1.y-r2.y)<1&&Math.abs(r1.height-r2.height)<1)//left edge is the same as right edge
||(Math.abs(r1.x+r1.width-r2.x)<1&&Math.abs(r1.y-r2.y)<1&&Math.abs(r1.height-r2.height)<1)//right edge is the same as left edge
||(Math.abs(r1.x - r2.x )<1&& Math.abs(r1.y+r1.height-r2.y)<1&&Math.abs(r1.width-r2.width)<1)//top edge is the same as bottom edge
||(Math.abs(r1.x - r2.x )<1&& Math.abs(r1.y-r2.y+r2.height)<1&&Math.abs(r1.width-r2.width)<1)//bottom edge is the same as left edge
||containsOrEquals(r1,r2)||containsOrEquals(r2,r1)
)
{
r1.merge(r2);
collisionRect.removeIndex(j);
i--;
break;
}
}
}
}while (oldSize!=collisionRect.size);
if (spriteLayer == null) System.err.print("Warning: No spriteLayer present in map.\n"); if (spriteLayer == null) System.err.print("Warning: No spriteLayer present in map.\n");
} }
static public boolean containsOrEquals(Rectangle r1,Rectangle r2) {
float xmi = r2.x;
float xma = xmi + r2.width;
float ymi = r2.y;
float yma = ymi + r2.height;
return xmi >= r1.x && xmi <= r1.x + r1.width && xma >= r1.x && xma <= r1.x + r1.width && ymi >= r1.y && ymi <= r1.y + r1.height && yma >= r1.y && yma <= r1.y + r1.height;
}
private void loadCollision(TiledMapTileLayer layer) { private void loadCollision(TiledMapTileLayer layer) {
for (int x = 0; x < layer.getWidth(); x++) { for (int x = 0; x < layer.getWidth(); x++) {
for (int y = 0; y < layer.getHeight(); y++) { for (int y = 0; y < layer.getHeight(); y++) {
if (collision[x][y] == null)
collision[x][y] = new Array<>();
Array<Rectangle> map = collision[x][y];
TiledMapTileLayer.Cell cell = layer.getCell(x, y); TiledMapTileLayer.Cell cell = layer.getCell(x, y);
if (cell == null) if (cell == null)
continue; continue;
for (MapObject collision : cell.getTile().getObjects()) { for (MapObject collision : cell.getTile().getObjects()) {
if (collision instanceof RectangleMapObject) { if (collision instanceof RectangleMapObject) {
Rectangle r = ((RectangleMapObject) collision).getRectangle(); Rectangle r = ((RectangleMapObject) collision).getRectangle();
map.add(new Rectangle((Math.round(layer.getTileWidth() * x) + r.x), (Math.round(layer.getTileHeight() * y) + r.y), Math.round(r.width), Math.round(r.height))); collisionRect.add(new Rectangle((Math.round(layer.getTileWidth() * x) + r.x), (Math.round(layer.getTileHeight() * y) + r.y), Math.round(r.width), Math.round(r.height)));
} }
} }
} }
@@ -409,13 +357,13 @@ public class MapStage extends GameStage {
} }
private boolean canSpawn(MapProperties prop) { private boolean canSpawn(MapProperties prop) {
DifficultyData DF = Current.player().getDifficulty(); DifficultyData difficultyData = Current.player().getDifficulty();
boolean spawnEasy = prop.get("spawn.Easy", Boolean.class); boolean spawnEasy = prop.get("spawn.Easy", Boolean.class);
boolean spawnNorm = prop.get("spawn.Normal", Boolean.class); boolean spawnNorm = prop.get("spawn.Normal", Boolean.class);
boolean spawnHard = prop.get("spawn.Hard", Boolean.class); boolean spawnHard = prop.get("spawn.Hard", Boolean.class);
if (DF.spawnRank == 2 && !spawnHard) return false; if (difficultyData.spawnRank == 2 && !spawnHard) return false;
if (DF.spawnRank == 1 && !spawnNorm) return false; if (difficultyData.spawnRank == 1 && !spawnNorm) return false;
if (DF.spawnRank == 0 && !spawnEasy) return false; if (difficultyData.spawnRank == 0 && !spawnEasy) return false;
return true; return true;
} }
@@ -423,8 +371,8 @@ public class MapStage extends GameStage {
player.setMoveModifier(2); player.setMoveModifier(2);
for (MapObject obj : layer.getObjects()) { for (MapObject obj : layer.getObjects()) {
MapProperties prop = obj.getProperties(); MapProperties prop = obj.getProperties();
if (prop.containsKey("type")) { String type = prop.get("type", String.class);
String type = prop.get("type", String.class); if (type!=null) {
int id = prop.get("id", int.class); int id = prop.get("id", int.class);
if (changes.isObjectDeleted(id)) if (changes.isObjectDeleted(id))
continue; continue;
@@ -440,12 +388,12 @@ public class MapStage extends GameStage {
String targetMap=prop.get("teleport").toString(); String targetMap=prop.get("teleport").toString();
boolean spawnPlayerThere=(targetMap==null||targetMap.isEmpty()&&sourceMap.isEmpty())||//if target is null and "from world" boolean spawnPlayerThere=(targetMap==null||targetMap.isEmpty()&&sourceMap.isEmpty())||//if target is null and "from world"
!sourceMap.isEmpty()&&targetMap.equals(sourceMap); !sourceMap.isEmpty()&&targetMap.equals(sourceMap);
if(foundPlayerSpawn) if(foundPlayerSpawn)
spawnPlayerThere=false; spawnPlayerThere=false;
if((prop.containsKey("spawn")&&prop.get("spawn").toString()=="true")&&spawnPlayerThere) if((prop.containsKey("spawn")&& prop.get("spawn").toString().equals("true"))&&spawnPlayerThere)
{ {
foundPlayerSpawn=true; foundPlayerSpawn=true;
spawnPlayerThere=true;
}//set spawn to option with "spawn" over other entries }//set spawn to option with "spawn" over other entries
EntryActor entry = new EntryActor(this, id, prop.get("teleport").toString(), x, y, w, h, prop.get("direction").toString(),spawnPlayerThere); EntryActor entry = new EntryActor(this, id, prop.get("teleport").toString(), x, y, w, h, prop.get("direction").toString(),spawnPlayerThere);
addMapActor(obj, entry); addMapActor(obj, entry);
@@ -467,33 +415,33 @@ public class MapStage extends GameStage {
break; break;
case "enemy": case "enemy":
if (!canSpawn(prop)) break; if (!canSpawn(prop)) break;
Object E = prop.get("enemy"); Object enemy = prop.get("enemy");
if (E != null && !E.toString().isEmpty()) { if (enemy != null && !enemy.toString().isEmpty()) {
EnemyData EN = WorldData.getEnemy(E.toString()); EnemyData EN = WorldData.getEnemy(enemy.toString());
if (EN == null) { if (EN == null) {
System.err.printf("Enemy \"%s\" not found.", E.toString()); System.err.printf("Enemy \"%s\" not found.", enemy);
break; break;
} }
EnemySprite mob = new EnemySprite(id, EN); EnemySprite mob = new EnemySprite(id, EN);
Object D = prop.get("dialog"); //Check if the enemy has a dialogue attached to it. Object dialogObject = prop.get("dialog"); //Check if the enemy has a dialogue attached to it.
if (D != null && !D.toString().isEmpty()) { if (dialogObject != null && !dialogObject.toString().isEmpty()) {
mob.dialog = new MapDialog(D.toString(), this, mob.getId()); mob.dialog = new MapDialog(dialogObject.toString(), this, mob.getId());
} }
D = prop.get("defeatDialog"); //Check if the enemy has a defeat dialogue attached to it. dialogObject = prop.get("defeatDialog"); //Check if the enemy has a defeat dialogue attached to it.
if (D != null && !D.toString().isEmpty()) { if (dialogObject != null && !dialogObject.toString().isEmpty()) {
mob.defeatDialog = new MapDialog(D.toString(), this, mob.getId()); mob.defeatDialog = new MapDialog(dialogObject.toString(), this, mob.getId());
} }
D = prop.get("name"); //Check for name override. dialogObject = prop.get("name"); //Check for name override.
if (D != null && !D.toString().isEmpty()) { if (dialogObject != null && !dialogObject.toString().isEmpty()) {
mob.nameOverride = D.toString(); mob.nameOverride = dialogObject.toString();
} }
D = prop.get("effect"); //Check for special effects. dialogObject = prop.get("effect"); //Check for special effects.
if (D != null && !D.toString().isEmpty()) { if (dialogObject != null && !dialogObject.toString().isEmpty()) {
mob.effect = JSONStringLoader.parse(EffectData.class, D.toString(), ""); mob.effect = JSONStringLoader.parse(EffectData.class, dialogObject.toString(), "");
} }
D = prop.get("reward"); //Check for additional rewards. dialogObject = prop.get("reward"); //Check for additional rewards.
if (D != null && !D.toString().isEmpty()) { if (dialogObject != null && !dialogObject.toString().isEmpty()) {
mob.rewards = JSONStringLoader.parse(RewardData[].class, D.toString(), "[]"); mob.rewards = JSONStringLoader.parse(RewardData[].class, dialogObject.toString(), "[]");
} }
mob.hidden = hidden; //Evil. mob.hidden = hidden; //Evil.
addMapActor(obj, mob); addMapActor(obj, mob);
@@ -521,7 +469,7 @@ public class MapStage extends GameStage {
})); }));
break; break;
case "exit": case "exit":
addMapActor(obj, new OnCollide(() -> MapStage.this.exit())); addMapActor(obj, new OnCollide(MapStage.this::exit));
break; break;
case "dialog": case "dialog":
if (obj instanceof TiledMapTileMapObject) { if (obj instanceof TiledMapTileMapObject) {
@@ -593,7 +541,7 @@ public class MapStage extends GameStage {
Current.player().win(); Current.player().win();
player.setAnimation(CharacterSprite.AnimationTypes.Attack); player.setAnimation(CharacterSprite.AnimationTypes.Attack);
currentMob.setAnimation(CharacterSprite.AnimationTypes.Death); currentMob.setAnimation(CharacterSprite.AnimationTypes.Death);
startPause(0.3f, () -> MapStage.this.getReward()); startPause(0.3f, MapStage.this::getReward);
} else { } else {
player.setAnimation(CharacterSprite.AnimationTypes.Hit); player.setAnimation(CharacterSprite.AnimationTypes.Hit);
currentMob.setAnimation(CharacterSprite.AnimationTypes.Attack); currentMob.setAnimation(CharacterSprite.AnimationTypes.Attack);
@@ -747,7 +695,7 @@ public class MapStage extends GameStage {
else else
dialogButtonMap.clear(); dialogButtonMap.clear();
for (int i = 0; i < dialog.getButtonTable().getCells().size; i++) { for (int i = 0; i < dialog.getButtonTable().getCells().size; i++) {
dialogButtonMap.put(i, (TextButton) dialog.getButtonTable().getCells().get(i).getActor()); dialogButtonMap.put(i, (TextraButton) dialog.getButtonTable().getCells().get(i).getActor());
} }
dialog.show(dialogStage, Actions.show()); dialog.show(dialogStage, Actions.show());
dialog.setPosition((dialogStage.getWidth() - dialog.getWidth()) / 2, (dialogStage.getHeight() - dialog.getHeight()) / 2); dialog.setPosition((dialogStage.getWidth() - dialog.getWidth()) / 2, (dialogStage.getHeight() - dialog.getHeight()) / 2);
@@ -812,7 +760,7 @@ public class MapStage extends GameStage {
return true; return true;
} }
private void selectDialogButton(TextButton dialogButton, boolean press) { private void selectDialogButton(TextraButton dialogButton, boolean press) {
if (dialogOnlyInput) { if (dialogOnlyInput) {
if (selectedKey != null) if (selectedKey != null)
selectedKey.fire(eventExit); selectedKey.fire(eventExit);
@@ -836,7 +784,7 @@ public class MapStage extends GameStage {
} }
}, 0.10f); }, 0.10f);
} }
private int getButtonIndexKey(TextButton dialogbutton) { private int getButtonIndexKey(TextraButton dialogbutton) {
if (dialogButtonMap.isEmpty()) if (dialogButtonMap.isEmpty())
return 0; return 0;
Integer key = dialogButtonMap.findKey(dialogbutton, true); Integer key = dialogButtonMap.findKey(dialogbutton, true);

View File

@@ -2,6 +2,7 @@ package forge.adventure.stage;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.controllers.Controllers; import com.badlogic.gdx.controllers.Controllers;
import com.badlogic.gdx.math.GridPoint2;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
@@ -29,7 +30,10 @@ import forge.sound.SoundSystem;
import forge.util.MyRandom; import forge.util.MyRandom;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import java.util.*; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
/** /**
@@ -145,7 +149,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
} }
private void removeEnemy(EnemySprite currentMob) { private void removeEnemy(EnemySprite currentMob) {
foregroundSprites.removeActor(currentMob); currentMob.removeAfterEffects();
Iterator<Pair<Float, EnemySprite>> it = enemies.iterator(); Iterator<Pair<Float, EnemySprite>> it = enemies.iterator();
while (it.hasNext()) { while (it.hasNext()) {
Pair<Float, EnemySprite> pair = it.next(); Pair<Float, EnemySprite> pair = it.next();
@@ -378,7 +382,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
EnemySprite enemy=null; EnemySprite enemy=null;
for (Pair<Float, EnemySprite> pair : enemies) { for (Pair<Float, EnemySprite> pair : enemies) {
float dist= pair.getValue().pos().sub(player.pos()).len(); float dist= pair.getValue().pos().sub(player.pos()).len();
if(shortestDist<dist) if(dist<shortestDist)
{ {
shortestDist=dist; shortestDist=dist;
enemy=pair.getValue(); enemy=pair.getValue();
@@ -386,8 +390,9 @@ public class WorldStage extends GameStage implements SaveFileContent {
} }
if(enemy!=null) if(enemy!=null)
{ {
enemy.playEffect(Paths.EFFECT_KILL);
removeEnemy(enemy); removeEnemy(enemy);
player.playEffect(Paths.EFFECT_KILL); player.playEffect(Paths.TRIGGER_KILL);
} }
} }

View File

@@ -1,6 +1,7 @@
package forge.adventure.util; package forge.adventure.util;
import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
@@ -11,8 +12,13 @@ import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Null;
import com.github.tommyettinger.textra.Font;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import com.github.tommyettinger.textra.TypingLabel; import com.github.tommyettinger.textra.TypingLabel;
import forge.Forge; import forge.Forge;
import forge.card.ColorSet;
import java.util.function.Function; import java.util.function.Function;
@@ -20,8 +26,48 @@ import java.util.function.Function;
* Class to create ui elements in the correct style * Class to create ui elements in the correct style
*/ */
public class Controls { public class Controls {
static public TextButton newTextButton(String text) { static class LabelFix extends TextraLabel
return new TextButton(text, GetSkin()); {
public LabelFix(String text)
{
super(text, getSkin(),getTextraFont());
}
@Override
public void setText(@Null String text) {
this.storedText = text;
this.layout.setTargetWidth(this.getMaxWidth());
this.getFont().markup(text, this.layout.clear());
this.setWidth(this.layout.getWidth() + (this.style != null && this.style.background != null ? this.style.background.getLeftWidth() + this.style.background.getRightWidth() : 0.0F));
layout();
}
}
static class TextButtonFix extends TextraButton
{
public TextButtonFix(@Null String text)
{
super(text, Controls.getSkin(),Controls.getTextraFont()) ;
}
@Override
public void setStyle(Button.ButtonStyle style, boolean makeGridGlyphs) {
super.setStyle(style,makeGridGlyphs);
this.getTextraLabel().setFont( Controls.getTextraFont());
}
@Override
public void setText(@Null String text) {
getTextraLabel().storedText = text;
getTextraLabel().layout.setTargetWidth(getTextraLabel().getMaxWidth());
getTextraLabel().getFont().markup(text, getTextraLabel().layout.clear());
getTextraLabel().setWidth(getTextraLabel().layout.getWidth() + (getTextraLabel().style != null && getTextraLabel().style.background != null ? getTextraLabel().style.background.getLeftWidth() + getTextraLabel().style.background.getRightWidth() : 0.0F));
layout();
}
}
static public TextraButton newTextButton(String text) {
TextraButton button= new TextButtonFix(text);
// button.getTextraLabelCell().fill(true,false).expand(true,false);//keep it the same as TextButton
button.getTextraLabel().setWrap(false);
return button;
} }
static public Rectangle getBoundingRect(Actor actor) { static public Rectangle getBoundingRect(Actor actor) {
return new Rectangle(actor.getX(),actor.getY(),actor.getWidth(),actor.getHeight()); return new Rectangle(actor.getX(),actor.getY(),actor.getWidth(),actor.getHeight());
@@ -33,7 +79,7 @@ public class Controls {
} }
static public SelectBox newComboBox(String[] text, String item, Function<Object, Void> func) { static public SelectBox newComboBox(String[] text, String item, Function<Object, Void> func) {
SelectBox ret = new SelectBox<String>(GetSkin()); SelectBox ret = new SelectBox<String>(getSkin());
ret.getStyle().listStyle.selection.setTopHeight(4); ret.getStyle().listStyle.selection.setTopHeight(4);
ret.setItems(text); ret.setItems(text);
ret.addListener(new ChangeListener() { ret.addListener(new ChangeListener() {
@@ -54,7 +100,7 @@ public class Controls {
} }
static public SelectBox newComboBox(Float[] text, float item, Function<Object, Void> func) { static public SelectBox newComboBox(Float[] text, float item, Function<Object, Void> func) {
SelectBox ret = new SelectBox<Float>(GetSkin()); SelectBox ret = new SelectBox<Float>(getSkin());
ret.getStyle().listStyle.selection.setTopHeight(4); ret.getStyle().listStyle.selection.setTopHeight(4);
ret.setItems(text); ret.setItems(text);
ret.addListener(new ChangeListener() { ret.addListener(new ChangeListener() {
@@ -75,11 +121,11 @@ public class Controls {
} }
static public TextField newTextField(String text) { static public TextField newTextField(String text) {
return new TextField(text, GetSkin()); return new TextField(text, getSkin());
} }
static public TextField newTextField(String text, Function<String, Void> func) { static public TextField newTextField(String text, Function<String, Void> func) {
TextField ret = new TextField(text, GetSkin()); TextField ret = new TextField(text, getSkin());
ret.addListener(new ChangeListener() { ret.addListener(new ChangeListener() {
@Override @Override
public void changed(ChangeEvent event, Actor actor) { public void changed(ChangeEvent event, Actor actor) {
@@ -94,8 +140,8 @@ public class Controls {
return ret; return ret;
} }
static public TextButton newTextButton(String text, Runnable func) { static public TextraButton newTextButton(String text, Runnable func) {
TextButton ret = newTextButton(text); TextraButton ret = newTextButton(text);
ret.addListener(new ClickListener() { ret.addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
@@ -111,12 +157,12 @@ public class Controls {
} }
static public Slider newSlider(float min, float max, float step, boolean vertical) { static public Slider newSlider(float min, float max, float step, boolean vertical) {
Slider ret = new Slider(min, max, step, vertical, GetSkin()); Slider ret = new Slider(min, max, step, vertical, getSkin());
return ret; return ret;
} }
static public CheckBox newCheckBox(String text) { static public CheckBox newCheckBox(String text) {
CheckBox ret = new CheckBox(text, GetSkin()); CheckBox ret = new CheckBox(text, getSkin());
return ret; return ret;
} }
@@ -124,15 +170,15 @@ public class Controls {
switch (fontName) { switch (fontName) {
case "blackbig": case "blackbig":
case "big": case "big":
GetSkin().getFont("default").getData().setScale(2, 2); getSkin().getFont("default").getData().setScale(2, 2);
return GetSkin().getFont("default"); return getSkin().getFont("default");
default: default:
GetSkin().getFont("default").getData().setScale(1, 1); getSkin().getFont("default").getData().setScale(1, 1);
return GetSkin().getFont("default"); return getSkin().getFont("default");
} }
} }
static public Skin GetSkin() { static public Skin getSkin() {
FileHandle skinFile = Config.instance().getFile(Paths.SKIN); FileHandle skinFile = Config.instance().getFile(Paths.SKIN);
if (!Forge.getAssets().manager().contains(skinFile.path(), Skin.class)) { if (!Forge.getAssets().manager().contains(skinFile.path(), Skin.class)) {
Forge.getAssets().manager().load(skinFile.path(), Skin.class); Forge.getAssets().manager().load(skinFile.path(), Skin.class);
@@ -140,32 +186,151 @@ public class Controls {
FileHandle atlasFile = skinFile.sibling(skinFile.nameWithoutExtension() + ".atlas"); FileHandle atlasFile = skinFile.sibling(skinFile.nameWithoutExtension() + ".atlas");
Forge.getAssets().manager().load(atlasFile.path(), TextureAtlas.class); Forge.getAssets().manager().load(atlasFile.path(), TextureAtlas.class);
Forge.getAssets().manager().finishLoadingAsset(atlasFile.path()); Forge.getAssets().manager().finishLoadingAsset(atlasFile.path());
//font /*/font skin will load the LanaPixel.fnt now
FileHandle pixelFont = Config.instance().getFile(Paths.SKIN).sibling("LanaPixel.fnt"); FileHandle pixelFont = Config.instance().getFile(Paths.SKIN).sibling("LanaPixel.fnt");
Forge.getAssets().manager().load(pixelFont.path(), BitmapFont.class); Forge.getAssets().manager().load(pixelFont.path(), BitmapFont.class);
Forge.getAssets().manager().finishLoadingAsset(pixelFont.path()); Forge.getAssets().manager().finishLoadingAsset(pixelFont.path());
Forge.getAssets().manager().get(skinFile.path(), Skin.class).add("default", Forge.getAssets().manager().get(pixelFont.path(), BitmapFont.class), BitmapFont.class); Forge.getAssets().manager().get(skinFile.path(), Skin.class).add("default", Forge.getAssets().manager().get(pixelFont.path(), BitmapFont.class), BitmapFont.class);
Forge.getAssets().manager().get(skinFile.path(), Skin.class).addRegions(Forge.getAssets().manager().get(atlasFile.path(), TextureAtlas.class)); Forge.getAssets().manager().get(skinFile.path(), Skin.class).addRegions(Forge.getAssets().manager().get(atlasFile.path(), TextureAtlas.class));
Forge.getAssets().manager().finishLoadingAsset(skinFile.path()); Forge.getAssets().manager().finishLoadingAsset(skinFile.path());
*/
} }
return Forge.getAssets().manager().get(skinFile.path(), Skin.class); return Forge.getAssets().manager().get(skinFile.path(), Skin.class);
} }
public static Label newLabel(String name) { public static Label newLabel(String name) {
Label ret = new Label(name, GetSkin()); Label ret = new Label(name, getSkin());
return ret;
}
static public Color colorFromString(String name)
{
String upperCase=name.toUpperCase();
if(upperCase.startsWith("0X")||upperCase.startsWith("#"))
{
return new Color( Long.decode(upperCase).intValue());
}
if(upperCase.equals("WHITE"))
return Color.WHITE;
if(upperCase.equals("LIGHT_GRAY"))
return Color.LIGHT_GRAY;
if(upperCase.equals("GRAY"))
return Color.GRAY;
if(upperCase.equals("DARK_GRAY"))
return Color.DARK_GRAY;
if(upperCase.equals("BLACK"))
return Color.BLACK;
if(upperCase.equals("CLEAR"))
return Color.CLEAR;
if(upperCase.equals("BLUE"))
return Color.BLUE;
if(upperCase.equals("NAVY"))
return Color.NAVY;
if(upperCase.equals("ROYAL"))
return Color.ROYAL;
if(upperCase.equals("SLATE"))
return Color.SLATE;
if(upperCase.equals("SKY"))
return Color.SKY;
if(upperCase.equals("CYAN"))
return Color.CYAN;
if(upperCase.equals("TEAL"))
return Color.TEAL;
if(upperCase.equals("GREEN"))
return Color.GREEN;
if(upperCase.equals("CHARTREUSE"))
return Color.CHARTREUSE;
if(upperCase.equals("LIME"))
return Color.LIME;
if(upperCase.equals("FOREST"))
return Color.FOREST;
if(upperCase.equals("OLIVE"))
return Color.OLIVE;
if(upperCase.equals("YELLOW"))
return Color.YELLOW;
if(upperCase.equals("GOLD"))
return Color.GOLD;
if(upperCase.equals("GOLDENROD"))
return Color.GOLDENROD;
if(upperCase.equals("ORANGE"))
return Color.ORANGE;
if(upperCase.equals("TAN"))
return Color.TAN;
if(upperCase.equals("FIREBRICK"))
return Color.FIREBRICK;
if(upperCase.equals("RED"))
return Color.RED;
if(upperCase.equals("SCARLET"))
return Color.SCARLET;
if(upperCase.equals("CORAL"))
return Color.CORAL;
if(upperCase.equals("SALMON"))
return Color.SALMON;
if(upperCase.equals("PINK"))
return Color.PINK;
if(upperCase.equals("MAGENTA"))
return Color.MAGENTA;
if(upperCase.equals("PURPLE"))
return Color.PURPLE;
if(upperCase.equals("VIOLET"))
return Color.VIOLET;
if(upperCase.equals("PINK"))
return Color.MAROON;
return Color.BLACK;
}
public static TextraLabel newTextraLabel(String name) {
TextraLabel ret = new LabelFix(name);
return ret; return ret;
} }
public static String colorIdToTypingString(ColorSet color)
{
String coloerId="";
if(color.hasWhite())
coloerId+="[+w]";
if(color.hasBlue())
coloerId+="[+u]";
if(color.hasBlack())
coloerId+="[+b]";
if(color.hasRed())
coloerId+="[+r]";
if(color.hasGreen())
coloerId+="[+g]";
if(color.isColorless())
coloerId+="[+c]";
return coloerId;
}
public static TypingLabel newTypingLabel(String name) { public static TypingLabel newTypingLabel(String name) {
TypingLabel ret = new TypingLabel(name, GetSkin()); TypingLabel ret = new TypingLabel(name==null?"":name, getSkin(),getTextraFont());
ret.setVariable("player_name",Current.player().getName());
ret.setVariable("player_color_id",colorIdToTypingString(Current.player().getColorIdentity()));
return ret; return ret;
} }
public static Dialog newDialog(String title) { public static Dialog newDialog(String title) {
Dialog ret = new Dialog(title, GetSkin()); Dialog ret = new Dialog(title, getSkin());
ret.setMovable(false); ret.setMovable(false);
return ret; return ret;
} }
static Font textraFont=null;
static public Font getTextraFont()
{
if(textraFont==null)
{
textraFont=new Font(getSkin().getFont("default"));
textraFont.addAtlas(Config.instance().getAtlas(Paths.ITEMS_ATLAS));
textraFont.adjustLineHeight(0.8f);//not sure why this is needed maybe the font is bad
}
return textraFont;
}
static public Font getTextraFont(String name)
{
Font font=new Font(getSkin().getFont(name));
font.addAtlas(Config.instance().getAtlas(Paths.ITEMS_ATLAS));
return font;
}
} }

View File

@@ -1,9 +1,9 @@
package forge.adventure.util; package forge.adventure.util;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TypingLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.character.EnemySprite; import forge.adventure.character.EnemySprite;
import forge.adventure.data.DialogData; import forge.adventure.data.DialogData;
@@ -54,7 +54,7 @@ public class MapDialog {
String text; //Check for localized string (locname), otherwise print text. String text; //Check for localized string (locname), otherwise print text.
if(dialog.loctext != null && !dialog.loctext.isEmpty()) text = L.getMessage(dialog.loctext); if(dialog.loctext != null && !dialog.loctext.isEmpty()) text = L.getMessage(dialog.loctext);
else text = dialog.text; else text = dialog.text;
Label A = Controls.newLabel(text); TypingLabel A = Controls.newTypingLabel(text);
A.setWrap(true); A.setWrap(true);
D.getContentTable().add(A).width(WIDTH); //Add() returns a Cell, which is what the width is being applied to. D.getContentTable().add(A).width(WIDTH); //Add() returns a Cell, which is what the width is being applied to.
if(dialog.options != null) { if(dialog.options != null) {
@@ -63,8 +63,8 @@ public class MapDialog {
String name; //Get localized label if present. String name; //Get localized label if present.
if(option.locname != null && !option.locname.isEmpty()) name = L.getMessage(option.locname); if(option.locname != null && !option.locname.isEmpty()) name = L.getMessage(option.locname);
else name = option.name; else name = option.name;
TextButton B = Controls.newTextButton(name,() -> loadDialog(option)); TextraButton B = Controls.newTextButton(name,() -> loadDialog(option));
B.getLabel().setWrap(true); //We want this to wrap in case it's a wordy choice. B.getTextraLabel().setWrap(true); //We want this to wrap in case it's a wordy choice.
D.getButtonTable().add(B).width(WIDTH - 10); //The button table also returns a Cell when adding. D.getButtonTable().add(B).width(WIDTH - 10); //The button table also returns a Cell when adding.
//TODO: Reducing the space a tiny bit could help. But should be fine as long as there aren't more than 4-5 options. //TODO: Reducing the space a tiny bit could help. But should be fine as long as there aren't more than 4-5 options.
D.getButtonTable().row(); //Add a row. Tried to allow a few per row but it was a bit erratic. D.getButtonTable().row(); //Add a row. Tried to allow a few per row but it was a bit erratic.

View File

@@ -14,14 +14,14 @@ public class Paths {
public static final String SKIN_FONT = "skin/LanaPixel.ttf"; public static final String SKIN_FONT = "skin/LanaPixel.ttf";
public static final String ITEMS_EQUIP = "skin/equip.png"; public static final String ITEMS_EQUIP = "skin/equip.png";
public static final String ITEMS_ATLAS = "sprites/items.atlas"; public static final String ITEMS_ATLAS = "sprites/items.atlas";
public static final String MANA_ATLAS = "sprites/pixelmana.atlas";
public static final String COLOR_FRAME_ATLAS = "ui/color_frames.atlas"; public static final String COLOR_FRAME_ATLAS = "ui/color_frames.atlas";
public static final String ARENA_ATLAS = "ui/arena.atlas"; public static final String ARENA_ATLAS = "ui/arena.atlas";
public static final String MAP_MARKER = "sprites/map_marker.atlas"; public static final String MAP_MARKER = "sprites/map_marker.atlas";
public static final String EFFECT_HEAL = "particle_effects/heal.p"; public static final String EFFECT_HEAL = "particle_effects/heal.p";
public static final String EFFECT_KILL = "particle_effects/kill.p"; public static final String EFFECT_KILL = "particle_effects/killed.p";
public static final String TRIGGER_KILL = "particle_effects/kill.p";
public static final String EFFECT_HIDE = "particle_effects/hide.p"; public static final String EFFECT_HIDE = "particle_effects/hide.p";
public static final String EFFECT_SPRINT = "particle_effects/sprint.p"; public static final String EFFECT_SPRINT = "particle_effects/sprint.p";
public static final String EFFECT_FLY = "particle_effects/fly.p"; public static final String EFFECT_FLY = "particle_effects/fly.p";

View File

@@ -17,13 +17,13 @@ import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.Tooltip; import com.badlogic.gdx.scenes.scene2d.ui.Tooltip;
import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener; import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.Disposable;
import com.github.tommyettinger.textra.TextraButton;
import forge.Forge; import forge.Forge;
import forge.Graphics; import forge.Graphics;
import forge.ImageKeys; import forge.ImageKeys;
@@ -680,7 +680,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
Image tooltip_image; Image tooltip_image;
Table tooltip_actor; Table tooltip_actor;
float height; float height;
TextButton switchButton; TextraButton switchButton;
//Vector2 tmp = new Vector2(); //Vector2 tmp = new Vector2();
public HoldTooltip(Image tooltip_image) { public HoldTooltip(Image tooltip_image) {
@@ -704,7 +704,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
@Override @Override
public boolean longPress(Actor actor, float x, float y) { public boolean longPress(Actor actor, float x, float y) {
TextButton done = actor.getStage().getRoot().findActor("done"); TextraButton done = actor.getStage().getRoot().findActor("done");
if (done != null && Reward.Type.Card.equals(reward.type)) { if (done != null && Reward.Type.Card.equals(reward.type)) {
switchButton.setBounds(done.getX(), done.getY(), done.getWidth(), done.getHeight()); switchButton.setBounds(done.getX(), done.getY(), done.getWidth(), done.getHeight());
if (reward.getCard().hasBackFace()) if (reward.getCard().hasBackFace())

View File

@@ -3,11 +3,11 @@ package forge.adventure.util;
import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton; import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Pools; import com.badlogic.gdx.utils.Pools;
import com.github.tommyettinger.textra.TextraButton;
/** /**
* UI element to click through options, can be configured in an UiActor * UI element to click through options, can be configured in an UiActor
@@ -15,19 +15,19 @@ import com.badlogic.gdx.utils.Pools;
public class Selector extends Group { public class Selector extends Group {
private final ImageButton leftArrow; private final ImageButton leftArrow;
private final ImageButton rightArrow; private final ImageButton rightArrow;
private final TextButton label; private final TextraButton label;
private int currentIndex = 0; private int currentIndex = 0;
private Array<String> textList; private Array<String> textList;
public Selector() { public Selector() {
ImageButton.ImageButtonStyle leftArrowStyle = Controls.GetSkin().get("leftarrow", ImageButton.ImageButtonStyle.class); ImageButton.ImageButtonStyle leftArrowStyle = Controls.getSkin().get("leftarrow", ImageButton.ImageButtonStyle.class);
leftArrow = new ImageButton(leftArrowStyle); leftArrow = new ImageButton(leftArrowStyle);
ImageButton.ImageButtonStyle rightArrowStyle = Controls.GetSkin().get("rightarrow", ImageButton.ImageButtonStyle.class); ImageButton.ImageButtonStyle rightArrowStyle = Controls.getSkin().get("rightarrow", ImageButton.ImageButtonStyle.class);
rightArrow = new ImageButton(rightArrowStyle); rightArrow = new ImageButton(rightArrowStyle);
label = new TextButton("", Controls.GetSkin()); label = Controls.newTextButton("");
addActor(leftArrow); addActor(leftArrow);
addActor(rightArrow); addActor(rightArrow);
addActor(label); addActor(label);
@@ -80,10 +80,12 @@ public class Selector extends Group {
int oldIndex = currentIndex; int oldIndex = currentIndex;
this.currentIndex = currentIndex; this.currentIndex = currentIndex;
label.setText(textList.get(currentIndex)); label.setText(textList.get(currentIndex));
label.layout();
ChangeListener.ChangeEvent changeEvent = Pools.obtain(ChangeListener.ChangeEvent.class); ChangeListener.ChangeEvent changeEvent = Pools.obtain(ChangeListener.ChangeEvent.class);
if (fire(changeEvent)) { if (fire(changeEvent)) {
this.currentIndex = oldIndex; this.currentIndex = oldIndex;
label.setText(textList.get(currentIndex)); label.setText(textList.get(currentIndex));
label.layout();
} }
Pools.free(changeEvent); Pools.free(changeEvent);
} }
@@ -91,7 +93,7 @@ public class Selector extends Group {
public String getText() { public String getText() {
return textList.get(currentIndex); return textList.get(currentIndex);
} }
public TextButton getLabel() { public TextraButton getLabel() {
return label; return label;
} }
public ImageButton getLeftArrow() { public ImageButton getLeftArrow() {

View File

@@ -196,6 +196,8 @@ public class TemplateTmxMapLoader extends TmxMapLoader {
protected void loadObject(TiledMap map, MapObjects objects, XmlReader.Element element, float heightInPixels) { protected void loadObject(TiledMap map, MapObjects objects, XmlReader.Element element, float heightInPixels) {
if (element.getName().equals("object")) { if (element.getName().equals("object")) {
if( element.hasAttribute("class")&& !element.hasAttribute("type"))
element.setAttribute("type",element.getAttribute("class"));//set type to class value for Tiled 1.9 compatibility
if (!element.hasAttribute("template")) { if (!element.hasAttribute("template")) {
super.loadObject(map, objects, element, heightInPixels); super.loadObject(map, objects, element, heightInPixels);
return; return;

View File

@@ -13,6 +13,8 @@ import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap;
import com.badlogic.gdx.utils.OrderedMap; import com.badlogic.gdx.utils.OrderedMap;
import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.data.UIData; import forge.adventure.data.UIData;
@@ -44,11 +46,11 @@ public class UIActor extends Group {
readSelectorProperties((Selector) newActor, new OrderedMap.OrderedMapEntries<>(element)); readSelectorProperties((Selector) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "Label": case "Label":
newActor = new Label("", Controls.GetSkin()); newActor = Controls.newTextraLabel("");
readLabelProperties((Label) newActor, new OrderedMap.OrderedMapEntries<>(element)); readLabelProperties((TextraLabel) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "Table": case "Table":
newActor = new Table(Controls.GetSkin()); newActor = new Table(Controls.getSkin());
readTableProperties((Table) newActor, new OrderedMap.OrderedMapEntries<>(element)); readTableProperties((Table) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "Image": case "Image":
@@ -56,31 +58,31 @@ public class UIActor extends Group {
readImageProperties((Image) newActor, new OrderedMap.OrderedMapEntries<>(element)); readImageProperties((Image) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "ImageButton": case "ImageButton":
newActor = new ImageButton(Controls.GetSkin()); newActor = new ImageButton(Controls.getSkin());
readImageButtonProperties((ImageButton) newActor, new OrderedMap.OrderedMapEntries<>(element)); readImageButtonProperties((ImageButton) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "Window": case "Window":
newActor = new Window("", Controls.GetSkin()); newActor = new Window("", Controls.getSkin());
readWindowProperties((Window) newActor, new OrderedMap.OrderedMapEntries<>(element)); readWindowProperties((Window) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "TextButton": case "TextButton":
newActor = new TextButton("", Controls.GetSkin()); newActor = Controls.newTextButton("");
readButtonProperties((TextButton) newActor, new OrderedMap.OrderedMapEntries<>(element)); readButtonProperties((TextraButton) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "TextField": case "TextField":
newActor = new TextField("", Controls.GetSkin()); newActor = new TextField("", Controls.getSkin());
readTextFieldProperties((TextField) newActor, new OrderedMap.OrderedMapEntries<>(element)); readTextFieldProperties((TextField) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "Scroll": case "Scroll":
newActor = new ScrollPane(null, Controls.GetSkin()); newActor = new ScrollPane(null, Controls.getSkin());
readScrollPaneProperties((ScrollPane) newActor, new OrderedMap.OrderedMapEntries<>(element)); readScrollPaneProperties((ScrollPane) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "CheckBox": case "CheckBox":
newActor = new CheckBox("", Controls.GetSkin()); newActor = new CheckBox("", Controls.getSkin());
readCheckBoxProperties((CheckBox) newActor, new OrderedMap.OrderedMapEntries<>(element)); readCheckBoxProperties((CheckBox) newActor, new OrderedMap.OrderedMapEntries<>(element));
break; break;
case "SelectBox": case "SelectBox":
newActor = new SelectBox<>(Controls.GetSkin()); newActor = new SelectBox<>(Controls.getSkin());
break; break;
default: default:
throw new IllegalStateException("Unexpected value: " + type); throw new IllegalStateException("Unexpected value: " + type);
@@ -135,11 +137,11 @@ public class UIActor extends Group {
} }
private void readScrollPaneProperties(ScrollPane newActor, ObjectMap.Entries<String, String> entries) { private void readScrollPaneProperties(ScrollPane newActor, ObjectMap.Entries<String, String> entries) {
newActor.setActor(new Label("", Controls.GetSkin())); newActor.setActor(Controls.newTextraLabel(""));
for (ObjectMap.Entry property : entries) { for (ObjectMap.Entry property : entries) {
switch (property.key.toString()) { switch (property.key.toString()) {
case "style": case "style":
newActor.setStyle(Controls.GetSkin().get(property.value.toString(), ScrollPane.ScrollPaneStyle.class)); newActor.setStyle(Controls.getSkin().get(property.value.toString(), ScrollPane.ScrollPaneStyle.class));
break; break;
} }
} }
@@ -149,7 +151,7 @@ public class UIActor extends Group {
for (ObjectMap.Entry property : entries) { for (ObjectMap.Entry property : entries) {
switch (property.key.toString()) { switch (property.key.toString()) {
case "style": case "style":
newActor.setStyle(Controls.GetSkin().get(property.value.toString(), Window.WindowStyle.class)); newActor.setStyle(Controls.getSkin().get(property.value.toString(), Window.WindowStyle.class));
break; break;
} }
} }
@@ -170,13 +172,13 @@ public class UIActor extends Group {
} }
public static String localize(String str) { public static String localize(String str) {
Pattern regex=Pattern.compile("\\{[^\\}]*\\}"); Pattern regex=Pattern.compile("tr\\([^\\)]*\\)");
for(int i=0;i<100;i++) for(int i=0;i<100;i++)
{ {
Matcher matcher= regex.matcher(str); Matcher matcher= regex.matcher(str);
if(!matcher.find()) if(!matcher.find())
return str; return str;
str=matcher.replaceAll(Forge.getLocalizer().getMessage(matcher.group().substring(1,matcher.group().length()-1))); str=matcher.replaceFirst(Forge.getLocalizer().getMessage(matcher.group().substring(3,matcher.group().length()-1)));
} }
return str; return str;
} }
@@ -185,39 +187,34 @@ public class UIActor extends Group {
for (ObjectMap.Entry property : entries) { for (ObjectMap.Entry property : entries) {
switch (property.key.toString()) { switch (property.key.toString()) {
case "style": case "style":
newActor.setStyle(Controls.GetSkin().get(property.value.toString(), ImageButton.ImageButtonStyle.class)); newActor.setStyle(Controls.getSkin().get(property.value.toString(), ImageButton.ImageButtonStyle.class));
break; break;
} }
} }
} }
private void readLabelProperties(Label newActor, ObjectMap.Entries<String, String> entries) { private void readLabelProperties(TextraLabel newActor, ObjectMap.Entries<String, String> entries) {
Label.LabelStyle style = new Label.LabelStyle(newActor.getStyle());
for (ObjectMap.Entry property : entries) { for (ObjectMap.Entry property : entries) {
switch (property.key.toString()) { switch (property.key.toString()) {
case "text": case "text":
newActor.setText(localize(property.value.toString())); newActor.setText(localize(property.value.toString()));
break; break;
case "font"://legacy case "font":
style.font = Controls.getBitmapFont(property.value.toString());
if (property.value.toString().contains("black"))
style.fontColor = Color.BLACK;
if (property.value.toString().contains("big"))
newActor.setFontScale(2, 2);
newActor.setStyle(style);
break;
case "fontSize":
newActor.setFontScale((Float)property.value, (Float)property.value);
break;
case "fontName": case "fontName":
style.font = Controls.getBitmapFont(property.value.toString()); if(!property.value.toString().equals("default"))
newActor.setStyle(style); newActor.setFont(Controls.getTextraFont(property.value.toString()));
break; break;
case "style":
newActor.style=(Controls.getSkin().get(property.value.toString(), Label.LabelStyle.class));
break;
case "color":
case "fontColor": case "fontColor":
newActor.setColor(new Color(Integer.decode(property.value.toString()) )); newActor.layout.setBaseColor(Controls.colorFromString(property.value.toString()));
break; break;
} }
} }
newActor.setText(newActor.storedText);//necessary if color changes after text inserted
newActor.layout();
} }
private void readTableProperties(Table newActor, ObjectMap.Entries<String, String> entries) { private void readTableProperties(Table newActor, ObjectMap.Entries<String, String> entries) {
@@ -247,14 +244,18 @@ public class UIActor extends Group {
} }
} }
private void readButtonProperties(TextButton newActor, ObjectMap.Entries<String, String> entries) { private void readButtonProperties(TextraButton newActor, ObjectMap.Entries<String, String> entries) {
for (ObjectMap.Entry property : entries) { for (ObjectMap.Entry property : entries) {
switch (property.key.toString()) { switch (property.key.toString()) {
case "text": case "text":
newActor.setText(localize(property.value.toString())); newActor.setText(localize(property.value.toString()));
break; break;
case "style":
newActor.setStyle(Controls.getSkin().get(property.value.toString(), TextButton.TextButtonStyle.class));
break;
} }
} }
newActor.layout();
} }
private void readImageProperties(Image newActor, ObjectMap.Entries<String, String> entries) { private void readImageProperties(Image newActor, ObjectMap.Entries<String, String> entries) {

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.1</version> <version>0.7.2</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.thoughtworks.xstream</groupId> <groupId>com.thoughtworks.xstream</groupId>

View File

@@ -5,7 +5,7 @@
"playerBaseSpeed": 32, "playerBaseSpeed": 32,
"minDeckSize": 40, "minDeckSize": 40,
"colorIds":["W","U","B","R","G"], "colorIds":["W","U","B","R","G"],
"colorIdNames":["{lblWhite}","{lblBlue}","{lblBlack}","{lblRed}","{lblGreen}"], "colorIdNames":["tr(lblWhite) [+w]","tr(lblBlue) [+u]","tr(lblBlack) [+b]","tr(lblRed) [+r]","tr(lblGreen) [+g]"],
"restrictedCards": [ "restrictedCards": [
"Black Lotus", "Black Lotus",
"Mox Emerald", "Mox Emerald",

View File

@@ -3,11 +3,11 @@
"height": 4300, "height": 4300,
"width": 2 "width": 2
}, },
"activeFile": "map/main_story/plains_capital.tmx", "activeFile": "map/main_story/spawn.tmx",
"automapping.whileDrawing": false, "automapping.whileDrawing": false,
"expandedProjectPaths": [ "expandedProjectPaths": [
"map",
"tileset", "tileset",
"map",
"obj", "obj",
"map/main_story" "map/main_story"
], ],
@@ -1551,11 +1551,11 @@
"expandedObjectLayers": [ "expandedObjectLayers": [
4 4
], ],
"scale": 1.5, "scale": 3,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.66666666666666, "x": 230.5,
"y": 154 "y": 155.83333333333331
} }
}, },
"map/fort_1.tmx": { "map/fort_1.tmx": {
@@ -1939,11 +1939,11 @@
"expandedObjectLayers": [ "expandedObjectLayers": [
4 4
], ],
"scale": 1.5, "scale": 2,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 256.3333333333333, "x": 255.25,
"y": 129 "y": 122.25
} }
}, },
"map/magetower_1.tmx": { "map/magetower_1.tmx": {
@@ -2127,8 +2127,8 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.66666666666666, "x": 240,
"y": 911.6666666666666 "y": 912
} }
}, },
"map/main_story/forest_capital.tmx": { "map/main_story/forest_capital.tmx": {
@@ -2138,84 +2138,87 @@
"scale": 3, "scale": 3,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 319.8333333333333, "x": 320,
"y": 319.8333333333333 "y": 320
} }
}, },
"map/main_story/green_castle.tmx": { "map/main_story/green_castle.tmx": {
"scale": 3, "scale": 3,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.83333333333331, "x": 246,
"y": 239.83333333333331 "y": 239.66666666666663
} }
}, },
"map/main_story/island_capital.tmx": { "map/main_story/island_capital.tmx": {
"expandedObjectLayers": [ "expandedObjectLayers": [
4 4
], ],
"scale": 1, "scale": 2,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 319.5, "x": 320,
"y": 319.5 "y": 320
} }
}, },
"map/main_story/mountain_capital.tmx": { "map/main_story/mountain_capital.tmx": {
"expandedObjectLayers": [ "expandedObjectLayers": [
4 4
], ],
"scale": 4, "scale": 2,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 373.125, "x": 320,
"y": 216.75 "y": 320
} }
}, },
"map/main_story/plains_capital.tmx": { "map/main_story/plains_capital.tmx": {
"expandedObjectLayers": [ "expandedObjectLayers": [
4 4
], ],
"scale": 2, "scale": 8,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 410.75, "x": 320,
"y": 173.5 "y": 320
} }
}, },
"map/main_story/red_castle.tmx": { "map/main_story/red_castle.tmx": {
"scale": 2, "scale": 2,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.75, "x": 240,
"y": 239.75 "y": 240
} }
}, },
"map/main_story/skep.tmx": { "map/main_story/skep.tmx": {
"scale": 1.5, "scale": 1.5,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 358.6666666666667, "x": 240,
"y": 348.3333333333333 "y": 240
} }
}, },
"map/main_story/spawn.tmx": { "map/main_story/spawn.tmx": {
"scale": 1.5, "expandedObjectLayers": [
4
],
"scale": 4,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.66666666666666, "x": 240,
"y": 239.66666666666669 "y": 240
} }
}, },
"map/main_story/swamp_capital.tmx": { "map/main_story/swamp_capital.tmx": {
"expandedObjectLayers": [ "expandedObjectLayers": [
4 4
], ],
"scale": 3, "scale": 2,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 319.8333333333333, "x": 320,
"y": 319.8333333333333 "y": 320
} }
}, },
"map/main_story/unbenannt.tmx": { "map/main_story/unbenannt.tmx": {
@@ -2238,8 +2241,8 @@
"scale": 4, "scale": 4,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.875, "x": 240,
"y": 239.875 "y": 240
} }
}, },
"map/maze_1.tmx": { "map/maze_1.tmx": {
@@ -2379,11 +2382,14 @@
} }
}, },
"map/mountain_town.tmx": { "map/mountain_town.tmx": {
"expandedObjectLayers": [
4
],
"scale": 3, "scale": 3,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 235.5, "x": 235.5,
"y": 135.66666666666663 "y": 135.83333333333331
} }
}, },
"map/nest_blue_1.tmx": { "map/nest_blue_1.tmx": {
@@ -2694,6 +2700,9 @@
} }
}, },
"map/swamp_town.tmx": { "map/swamp_town.tmx": {
"expandedObjectLayers": [
4
],
"scale": 2, "scale": 2,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
@@ -2772,11 +2781,11 @@
} }
}, },
"map/waste_town.tmx": { "map/waste_town.tmx": {
"scale": 1.5, "scale": 3,
"selectedLayer": 4, "selectedLayer": 2,
"viewCenter": { "viewCenter": {
"x": 214.66666666666663, "x": 239.99999999999997,
"y": 299 "y": 240
} }
}, },
"map/waste_town_2.tmx": { "map/waste_town_2.tmx": {
@@ -2799,23 +2808,23 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 250.33333333333331, "x": 240,
"y": 148.33333333333331 "y": 136
} }
}, },
"map/yule_town.tmx": { "map/yule_town.tmx": {
"scale": 1.5, "scale": 1.5,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 250.99999999999997, "x": 240,
"y": 33.666666666666686 "y": 136
} }
}, },
"map/zombietown.tmx": { "map/zombietown.tmx": {
"scale": 2, "scale": 2,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 479.75, "x": 480,
"y": 272 "y": 272
} }
}, },
@@ -2840,7 +2849,6 @@
"map/main_story/red_castle.tmx", "map/main_story/red_castle.tmx",
"map/main_story/plains_capital.tmx", "map/main_story/plains_capital.tmx",
"map/main_story/forest_capital.tmx", "map/main_story/forest_capital.tmx",
"map/main_story/swamp_capital.tmx",
"map/main_story/mountain_capital.tmx", "map/main_story/mountain_capital.tmx",
"map/main_story/island_capital.tmx", "map/main_story/island_capital.tmx",
"map/main_story/spawn.tmx", "map/main_story/spawn.tmx",
@@ -2848,23 +2856,28 @@
"map/main_story/white_castle.tmx", "map/main_story/white_castle.tmx",
"tileset/main.tsx", "tileset/main.tsx",
"tileset/buildings.tsx", "tileset/buildings.tsx",
"map/forest_town.tmx" "map/zombietown.tmx",
"map/yule_town.tmx",
"map/wurmpond_1.tmx",
"map/waste_town.tmx",
"map/main_story/swamp_capital.tmx",
"map/main_story/skep.tmx"
], ],
"project": "main.tiled-project", "project": "main.tiled-project",
"property.type": "string", "property.type": "int",
"recentFiles": [ "recentFiles": [
"map/main_story/green_castle.tmx", "map/main_story/green_castle.tmx",
"map/main_story/red_castle.tmx", "map/main_story/red_castle.tmx",
"map/forest_town.tmx", "map/main_story/plains_capital.tmx",
"tileset/buildings.tsx", "map/main_story/forest_capital.tmx",
"tileset/main.tsx",
"map/main_story/white_castle.tmx",
"map/main_story/final_castle.tmx",
"map/main_story/spawn.tmx",
"map/main_story/island_capital.tmx",
"map/main_story/mountain_capital.tmx", "map/main_story/mountain_capital.tmx",
"map/main_story/island_capital.tmx",
"map/main_story/skep.tmx",
"map/main_story/swamp_capital.tmx", "map/main_story/swamp_capital.tmx",
"map/main_story/forest_capital.tmx" "map/waste_town.tmx",
"map/wurmpond_1.tmx",
"map/yule_town.tmx",
"map/zombietown.tmx"
], ],
"resizeMap.removeObjects": true, "resizeMap.removeObjects": true,
"textEdit.monospace": true "textEdit.monospace": true

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.1" orientation="orthogonal" renderorder="right-down" width="40" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="71"> <map version="1.9" tiledversion="1.9.1" orientation="orthogonal" renderorder="right-down" width="40" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="72">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
@@ -52,9 +52,8 @@
<property name="spawn" type="bool" value="true"/> <property name="spawn" type="bool" value="true"/>
</properties> </properties>
</object> </object>
<object id="59" template="../../obj/entry_left.tx" x="336.96" y="541.969" width="16" height="80.9948" rotation="179.747"/> <object id="59" template="../../obj/entry_left.tx" x="321" y="623" width="16" height="80.9948" rotation="0"/>
<object id="60" template="../../obj/entry_right.tx" x="254" y="623" width="16" height="85"/> <object id="60" template="../../obj/entry_right.tx" x="254" y="623" width="16" height="85"/>
<object id="61" template="../../obj/arena.tx" x="352" y="583"/>
<object id="62" template="../../obj/shop.tx" x="361" y="370"> <object id="62" template="../../obj/shop.tx" x="361" y="370">
<properties> <properties>
<property name="shopList" value="GreenEquipment"/> <property name="shopList" value="GreenEquipment"/>
@@ -102,5 +101,67 @@
<property name="shopList" value="Instant,Creature,Green,Gruul,Selesnya,Golgari,Simic,Elf "/> <property name="shopList" value="Instant,Creature,Green,Gruul,Selesnya,Golgari,Simic,Elf "/>
</properties> </properties>
</object> </object>
<object id="71" template="../../obj/arena.tx" x="359" y="290">
<properties>
<property name="arena">{
&quot;enemyPool&quot;:[
&quot;Ape&quot;,
&quot;Bear&quot;,
&quot;Centaur&quot;,
&quot;Centaur Warrior&quot;,
&quot;Dino&quot;,
&quot;Eldraine Faerie&quot;,
&quot;Elf&quot;,
&quot;Elf warrior&quot;,
&quot;Elk&quot;,
&quot;Faerie&quot;,
&quot;Giant Spider&quot;,
&quot;Gorgon&quot;,
&quot;Gorgon 2&quot;,
&quot;Green Beast&quot;,
&quot;Green Wiz1&quot;,
&quot;Green Wiz2&quot;,
&quot;Green Wiz3&quot;,
&quot;High Elf&quot;,
&quot;Hydra&quot;,
&quot;Satyr&quot;,
&quot;Snake&quot;,
&quot;Spider&quot;,
&quot;Treefolk&quot;,
&quot;Treefolk Guardian&quot;,
&quot;Viper&quot;,
&quot;Werewolf&quot;,
&quot;Wurm&quot;
],
&quot;rounds&quot;:3,
&quot;entryFee&quot;:100,
&quot;rewards&quot;: [[
{
&quot;type&quot;: &quot;card&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;:2,
&quot;rarity&quot;: [
&quot;Mythic Rare&quot;
],
&quot;colors&quot;: [&quot;green&quot;]
}
],[
{
&quot;type&quot;: &quot;gold&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;: 500
}
],[{
&quot;type&quot;: &quot;item&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;: 1,
&quot;itemNames&quot;: [&quot;Dungeon Map&quot;,&quot;Mad Staff&quot;,&quot;Gold Boots&quot;,&quot;Disrupting Scepter&quot;]
}
]
]
}</property>
</properties>
</object>
</objectgroup> </objectgroup>
</map> </map>

View File

@@ -36,49 +36,49 @@
<objectgroup id="4" name="Objects"> <objectgroup id="4" name="Objects">
<object id="41" template="../../obj/shop.tx" x="232" y="162"> <object id="41" template="../../obj/shop.tx" x="232" y="162">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Blue,Azorius,Dimir,Izzet,Simic,Merfolk "/>
</properties> </properties>
</object> </object>
<object id="56" template="../../obj/shop.tx" x="103" y="226"> <object id="56" template="../../obj/shop.tx" x="103" y="226">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Blue,Azorius,Dimir,Izzet,Simic,Merfolk "/>
</properties> </properties>
</object> </object>
<object id="57" template="../../obj/shop.tx" x="392" y="162"> <object id="57" template="../../obj/shop.tx" x="392" y="162">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Blue,Azorius,Dimir,Izzet,Simic,Merfolk "/>
</properties> </properties>
</object> </object>
<object id="43" template="../../obj/shop.tx" x="152" y="451"> <object id="43" template="../../obj/shop.tx" x="152" y="451">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Blue,Azorius,Dimir,Izzet,Simic,Merfolk "/>
</properties> </properties>
</object> </object>
<object id="47" template="../../obj/inn.tx" x="311" y="227"/> <object id="47" template="../../obj/inn.tx" x="311" y="227"/>
<object id="49" template="../../obj/shop.tx" x="520" y="225"> <object id="49" template="../../obj/shop.tx" x="520" y="225">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Blue,Azorius,Dimir,Izzet,Simic,Merfolk "/>
</properties> </properties>
</object> </object>
<object id="50" template="../../obj/shop.tx" x="536" y="354"> <object id="50" template="../../obj/shop.tx" x="536" y="354">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Blue,Azorius,Dimir,Izzet,Simic,Merfolk "/>
</properties> </properties>
</object> </object>
<object id="51" template="../../obj/shop.tx" x="472" y="450"> <object id="51" template="../../obj/shop.tx" x="472" y="450">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Blue,Azorius,Dimir,Izzet,Simic,Merfolk "/>
</properties> </properties>
</object> </object>
<object id="52" template="../../obj/shop.tx" x="88" y="354"> <object id="52" template="../../obj/shop.tx" x="88" y="354">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Blue,Azorius,Dimir,Izzet,Simic,Merfolk "/>
</properties> </properties>
</object> </object>
<object id="53" template="../../obj/spellsmith.tx" x="408" y="402"/> <object id="53" template="../../obj/spellsmith.tx" x="408" y="402"/>
<object id="55" template="../../obj/shop.tx" x="465" y="515"> <object id="55" template="../../obj/shop.tx" x="465" y="515">
<properties> <properties>
<property name="shopList" value="Plains"/> <property name="shopList" value="Island"/>
<property name="signYOffset" type="float" value="0"/> <property name="signYOffset" type="float" value="0"/>
</properties> </properties>
</object> </object>
@@ -87,7 +87,58 @@
<property name="spawn" type="bool" value="true"/> <property name="spawn" type="bool" value="true"/>
</properties> </properties>
</object> </object>
<object id="61" template="../../obj/arena.tx" x="216" y="403"/> <object id="61" template="../../obj/arena.tx" x="216" y="403">
<properties>
<property name="arena">{
&quot;enemyPool&quot;:[
&quot;Bird&quot;,
&quot;Djinn&quot;,
&quot;Elemental&quot;,
&quot;Merfolk&quot;,
&quot;Merfolk Avatar&quot;,
&quot;Merfolk Fighter&quot;,
&quot;Merfolk Lord&quot;,
&quot;Merfolk Soldier&quot;,
&quot;Merfolk warrior&quot;,
&quot;Blue Wiz1&quot;,
&quot;Blue Wiz2&quot;,
&quot;Blue Wiz3&quot;,
&quot;Geist&quot;,
&quot;Rogue&quot;,
&quot;Sea Monster&quot;,
&quot;Tarkir Djinn&quot;,
&quot;Doppelganger&quot;
],
&quot;rounds&quot;:3,
&quot;entryFee&quot;:100,
&quot;rewards&quot;: [[
{
&quot;type&quot;: &quot;card&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;:2,
&quot;rarity&quot;: [
&quot;Mythic Rare&quot;
],
&quot;colors&quot;: [&quot;blue&quot;]
}
],[
{
&quot;type&quot;: &quot;gold&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;: 500
}
],[{
&quot;type&quot;: &quot;item&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;: 1,
&quot;itemNames&quot;: [&quot;Mithril Armor&quot;,&quot;Mithril Shield&quot;,&quot;Mithril Boots&quot;,&quot;Dagger&quot;]
}
]
]
}</property>
</properties>
</object>
<object id="62" template="../../obj/shop.tx" x="360" y="370"> <object id="62" template="../../obj/shop.tx" x="360" y="370">
<properties> <properties>
<property name="shopList" value="BlueItems"/> <property name="shopList" value="BlueItems"/>

View File

@@ -36,12 +36,12 @@
<objectgroup id="4" name="Objects"> <objectgroup id="4" name="Objects">
<object id="41" template="../../obj/shop.tx" x="249" y="370"> <object id="41" template="../../obj/shop.tx" x="249" y="370">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Red,Rakdos,Gruul,Izzet,Boros,Goblin "/>
</properties> </properties>
</object> </object>
<object id="56" template="../../obj/shop.tx" x="153" y="371"> <object id="56" template="../../obj/shop.tx" x="153" y="371">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Red,Rakdos,Gruul,Izzet,Boros,Goblin "/>
</properties> </properties>
</object> </object>
<object id="57" template="../../obj/shop.tx" x="201" y="418"> <object id="57" template="../../obj/shop.tx" x="201" y="418">
@@ -51,34 +51,34 @@
</object> </object>
<object id="43" template="../../obj/shop.tx" x="105" y="370"> <object id="43" template="../../obj/shop.tx" x="105" y="370">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Red,Rakdos,Gruul,Izzet,Boros,Goblin "/>
</properties> </properties>
</object> </object>
<object id="47" template="../../obj/inn.tx" x="376" y="370"/> <object id="47" template="../../obj/inn.tx" x="376" y="370"/>
<object id="49" template="../../obj/shop.tx" x="105" y="418"> <object id="49" template="../../obj/shop.tx" x="105" y="418">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Red,Rakdos,Gruul,Izzet,Boros,Goblin "/>
</properties> </properties>
</object> </object>
<object id="50" template="../../obj/shop.tx" x="152" y="418"> <object id="50" template="../../obj/shop.tx" x="152" y="418">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Red,Rakdos,Gruul,Izzet,Boros,Goblin "/>
</properties> </properties>
</object> </object>
<object id="51" template="../../obj/shop.tx" x="248" y="417"> <object id="51" template="../../obj/shop.tx" x="248" y="417">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Red,Rakdos,Gruul,Izzet,Boros,Goblin "/>
</properties> </properties>
</object> </object>
<object id="52" template="../../obj/shop.tx" x="201" y="370"> <object id="52" template="../../obj/shop.tx" x="201" y="370">
<properties> <properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/> <property name="shopList" value="Instant,Creature,Red,Rakdos,Gruul,Izzet,Boros,Goblin "/>
</properties> </properties>
</object> </object>
<object id="53" template="../../obj/spellsmith.tx" x="152" y="258"/> <object id="53" template="../../obj/spellsmith.tx" x="152" y="258"/>
<object id="55" template="../../obj/shop.tx" x="368" y="433"> <object id="55" template="../../obj/shop.tx" x="368" y="433">
<properties> <properties>
<property name="shopList" value="Plains"/> <property name="shopList" value="Mountain"/>
<property name="signYOffset" type="float" value="0"/> <property name="signYOffset" type="float" value="0"/>
</properties> </properties>
</object> </object>
@@ -87,9 +87,73 @@
<property name="spawn" type="bool" value="true"/> <property name="spawn" type="bool" value="true"/>
</properties> </properties>
</object> </object>
<object id="59" template="../../obj/entry_left.tx" x="351" y="534" width="16" height="89.9726" rotation="179.747"/> <object id="59" template="../../obj/entry_left.tx" x="337" y="627" width="16" height="89.9726" rotation="0"/>
<object id="60" template="../../obj/entry_right.tx" x="266" y="623" width="16" height="88"/> <object id="60" template="../../obj/entry_right.tx" x="266" y="623" width="16" height="88"/>
<object id="61" template="../../obj/arena.tx" x="200" y="258"/> <object id="61" template="../../obj/arena.tx" x="200" y="258">
<properties>
<property name="arena">{
&quot;enemyPool&quot;:[
&quot;Amonkhet Minotaur&quot;,
&quot;Ashmouth Devil&quot;,
&quot;Axgard Dwarf&quot;,
&quot;Berserker&quot;,
&quot;Boggart&quot;,
&quot;Cyclops&quot;,
&quot;Devil&quot;,
&quot;Dinosaur&quot;,
&quot;Dragon&quot;,
&quot;Dwarf&quot;,
&quot;Efreet&quot;,
&quot;Fire Elemental&quot;,
&quot;Flame Elemental&quot;,
&quot;Goblin&quot;,
&quot;Goblin Chief&quot;,
&quot;Goblin Warrior&quot;,
&quot;Hellhound&quot;,
&quot;Immersturm Demon&quot;,
&quot;Khan&quot;,
&quot;Minotaur&quot;,
&quot;Minotaur Flayer&quot;,
&quot;Red Beast&quot;,
&quot;Red Wiz1&quot;,
&quot;Red Wiz2&quot;,
&quot;Red Wiz3&quot;,
&quot;Shaman&quot;,
&quot;Troll&quot;,
&quot;Vampire Lord&quot;,
&quot;Viashino&quot;,
&quot;Yeti&quot;
],
&quot;rounds&quot;:3,
&quot;entryFee&quot;:100,
&quot;rewards&quot;: [[
{
&quot;type&quot;: &quot;card&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;:2,
&quot;rarity&quot;: [
&quot;Mythic Rare&quot;
],
&quot;colors&quot;: [&quot;red&quot;]
}
],[
{
&quot;type&quot;: &quot;gold&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;: 500
}
],[{
&quot;type&quot;: &quot;item&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;: 1,
&quot;itemNames&quot;: [&quot;Aladdin's Ring&quot;,&quot;Axt&quot;,&quot;Ring of Immortals&quot;,&quot;Jandor's Ring&quot;]
}
]
]
}</property>
</properties>
</object>
<object id="62" template="../../obj/shop.tx" x="361" y="258"> <object id="62" template="../../obj/shop.tx" x="361" y="258">
<properties> <properties>
<property name="shopList" value="RedEquipment"/> <property name="shopList" value="RedEquipment"/>

View File

@@ -87,9 +87,9 @@
<property name="spawn" type="bool" value="true"/> <property name="spawn" type="bool" value="true"/>
</properties> </properties>
</object> </object>
<object id="59" template="../../obj/entry_left.tx" x="416" y="552" width="16" height="71.964" rotation="179.747"/> <object id="59" template="../../obj/entry_left.tx" x="392" y="625" width="16" height="71.964" rotation="0"/>
<object id="60" template="../../obj/entry_right.tx" x="304" y="624" width="16" height="69"/> <object id="60" template="../../obj/entry_right.tx" x="304" y="624" width="16" height="69"/>
<object id="61" template="../../obj/arena.tx" x="422.667" y="113.364"> <object id="61" template="../../obj/arena.tx" x="423" y="114">
<properties> <properties>
<property name="arena">{ <property name="arena">{

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.2" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="68"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="69">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
@@ -32,15 +32,16 @@
<object id="38" template="../../obj/entry_up.tx" x="1" y="481" width="478" height="16"> <object id="38" template="../../obj/entry_up.tx" x="1" y="481" width="478" height="16">
<properties> <properties>
<property name="spawn" type="bool" value="true"/> <property name="spawn" type="bool" value="true"/>
<property name="teleport" value=""/>
</properties> </properties>
</object> </object>
<object id="61" template="../../obj/entry_left.tx" x="0" y="465" width="16" height="465"/> <object id="61" template="../../obj/entry_left.tx" x="0" y="465" width="16" height="465"/>
<object id="65" template="../../obj/entry_left.tx" x="464" y="463" width="16" height="462"/> <object id="65" template="../../obj/entry_left.tx" x="464" y="463" width="16" height="462"/>
<object id="66" template="../../obj/entry_down.tx" x="16" y="17" width="447" height="16"/> <object id="66" template="../../obj/entry_down.tx" x="16" y="17" width="447" height="16"/>
<object id="67" name="IntroChar" type="dialog" gid="7627" x="238" y="208" width="16" height="16"> <object id="67" name="IntroChar" class="dialog" gid="7627" x="238" y="208" width="16" height="16">
<properties> <properties>
<property name="dialog">[{ <property name="dialog">[{
&quot;text&quot;:&quot;Hello Planeswalker&quot;, &quot;text&quot;:&quot;Hello Planeswalker {var=player_name}&quot;,
&quot;options&quot;:[ &quot;options&quot;:[
{ {
&quot;name&quot;:&quot;Why am I here&quot;, &quot;name&quot;:&quot;Why am I here&quot;,

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.1" orientation="orthogonal" renderorder="right-down" width="40" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="64"> <map version="1.9" tiledversion="1.9.1" orientation="orthogonal" renderorder="right-down" width="40" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="72">
<editorsettings> <editorsettings>
<export format="tmx"/> <export format="tmx"/>
</editorsettings> </editorsettings>
@@ -34,51 +34,11 @@
</data> </data>
</layer> </layer>
<objectgroup id="4" name="Objects"> <objectgroup id="4" name="Objects">
<object id="41" template="../../obj/shop.tx" x="473" y="273">
<properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/>
</properties>
</object>
<object id="56" template="../../obj/shop.tx" x="424" y="274">
<properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/>
</properties>
</object>
<object id="57" template="../../obj/shop.tx" x="520" y="273">
<properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/>
</properties>
</object>
<object id="43" template="../../obj/shop.tx" x="377" y="322">
<properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/>
</properties>
</object>
<object id="47" template="../../obj/inn.tx" x="361" y="371"/> <object id="47" template="../../obj/inn.tx" x="361" y="371"/>
<object id="49" template="../../obj/shop.tx" x="424" y="322">
<properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/>
</properties>
</object>
<object id="50" template="../../obj/shop.tx" x="472" y="322">
<properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/>
</properties>
</object>
<object id="51" template="../../obj/shop.tx" x="521" y="322">
<properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/>
</properties>
</object>
<object id="52" template="../../obj/shop.tx" x="376" y="274">
<properties>
<property name="shopList" value="Human,Boros,Orzhov,Selesnya,Selesnya,Azorius,White,Creature,Instant,Angel"/>
</properties>
</object>
<object id="53" template="../../obj/spellsmith.tx" x="392" y="194"/> <object id="53" template="../../obj/spellsmith.tx" x="392" y="194"/>
<object id="55" template="../../obj/shop.tx" x="416" y="402"> <object id="55" template="../../obj/shop.tx" x="416" y="402">
<properties> <properties>
<property name="shopList" value="Plains"/> <property name="shopList" value="Swamp"/>
<property name="signYOffset" type="float" value="0"/> <property name="signYOffset" type="float" value="0"/>
</properties> </properties>
</object> </object>
@@ -87,9 +47,63 @@
<property name="spawn" type="bool" value="true"/> <property name="spawn" type="bool" value="true"/>
</properties> </properties>
</object> </object>
<object id="59" template="../../obj/entry_left.tx" x="368" y="442" width="16" height="197.002" rotation="179.747"/> <object id="59" template="../../obj/entry_left.tx" x="354" y="635" width="16" height="197.002" rotation="0"/>
<object id="60" template="../../obj/entry_right.tx" x="242" y="642" width="16" height="198"/> <object id="60" template="../../obj/entry_right.tx" x="242" y="642" width="16" height="198"/>
<object id="61" template="../../obj/arena.tx" x="168" y="178"/> <object id="61" template="../../obj/arena.tx" x="168" y="178">
<properties>
<property name="arena">{
&quot;enemyPool&quot;:[
&quot;Beholder&quot;,
&quot;Big Zombie&quot;,
&quot;Black Wiz1&quot;,
&quot;Black Wiz2&quot;,
&quot;Black Wiz3&quot;,
&quot;Dark Knight&quot;,
&quot;Death Knight&quot;,
&quot;Demon&quot;,
&quot;Ghoul&quot;,
&quot;Ghost&quot;,
&quot;Harpy&quot;,
&quot;Harpy 2&quot;,
&quot;High Vampire&quot;,
&quot;Lich&quot;,
&quot;Rakdos Devil&quot;,
&quot;Skeleton&quot;,
&quot;Skeleton Soldier&quot;,
&quot;Vampire&quot;,
&quot;Zombie&quot;,
&quot;Zombie Lord&quot;
],
&quot;rounds&quot;:3,
&quot;entryFee&quot;:100,
&quot;rewards&quot;: [[
{
&quot;type&quot;: &quot;card&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;:2,
&quot;rarity&quot;: [
&quot;Mythic Rare&quot;
],
&quot;colors&quot;: [&quot;black&quot;]
}
],[
{
&quot;type&quot;: &quot;gold&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;: 500
}
],[{
&quot;type&quot;: &quot;item&quot;,
&quot;probability&quot;: 1,
&quot;count&quot;: 1,
&quot;itemNames&quot;: [&quot;Death Ring&quot;,&quot;Dark Armor&quot;,&quot;Dark Shield&quot;,&quot;Dark Boots&quot;]
}
]
]
}</property>
</properties>
</object>
<object id="62" template="../../obj/shop.tx" x="216" y="241"> <object id="62" template="../../obj/shop.tx" x="216" y="241">
<properties> <properties>
<property name="shopList" value="BlackItems"/> <property name="shopList" value="BlackItems"/>
@@ -102,5 +116,45 @@
<property name="signYOffset" type="float" value="0"/> <property name="signYOffset" type="float" value="0"/>
</properties> </properties>
</object> </object>
<object id="64" template="../../obj/shop.tx" x="376" y="274">
<properties>
<property name="shopList" value="Instant,Creature,Black,Dimir,Rakdos,Orzhov,Golgari,Simic,Zombie "/>
</properties>
</object>
<object id="65" template="../../obj/shop.tx" x="376" y="322">
<properties>
<property name="shopList" value="Instant,Creature,Black,Dimir,Rakdos,Orzhov,Golgari,Simic,Zombie "/>
</properties>
</object>
<object id="66" template="../../obj/shop.tx" x="424" y="274">
<properties>
<property name="shopList" value="Instant,Creature,Black,Dimir,Rakdos,Orzhov,Golgari,Simic,Zombie "/>
</properties>
</object>
<object id="67" template="../../obj/shop.tx" x="424" y="322">
<properties>
<property name="shopList" value="Instant,Creature,Black,Dimir,Rakdos,Orzhov,Golgari,Simic,Zombie "/>
</properties>
</object>
<object id="68" template="../../obj/shop.tx" x="472" y="274">
<properties>
<property name="shopList" value="Instant,Creature,Black,Dimir,Rakdos,Orzhov,Golgari,Simic,Zombie "/>
</properties>
</object>
<object id="69" template="../../obj/shop.tx" x="472" y="322">
<properties>
<property name="shopList" value="Instant,Creature,Black,Dimir,Rakdos,Orzhov,Golgari,Simic,Zombie "/>
</properties>
</object>
<object id="70" template="../../obj/shop.tx" x="520" y="274">
<properties>
<property name="shopList" value="Instant,Creature,Black,Dimir,Rakdos,Orzhov,Golgari,Simic,Zombie "/>
</properties>
</object>
<object id="71" template="../../obj/shop.tx" x="520" y="322">
<properties>
<property name="shopList" value="Instant,Creature,Black,Dimir,Rakdos,Orzhov,Golgari,Simic,Zombie "/>
</properties>
</object>
</objectgroup> </objectgroup>
</map> </map>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<map version="1.8" tiledversion="1.8.6" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="6" nextobjectid="58"> <map version="1.9" tiledversion="1.9.1" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="6" nextobjectid="59">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
@@ -7,12 +7,12 @@
<tileset firstgid="6321" source="../tileset/buildings.tsx"/> <tileset firstgid="6321" source="../tileset/buildings.tsx"/>
<layer id="1" name="Background" width="30" height="30"> <layer id="1" name="Background" width="30" height="30">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJyr4GZgqBjFo3gUDzhuwoIr0Ni0tg+XGwarvcSaRYxdA2HvQPl3MNhLjN3DzV5Cdg9U/NLCflqXD9S0F5s+QmZSw6+kuIceeKTZO4qHN7bmGXg3DCUMAHMg1Qw= eJzt1LEKACAIBND2fti5L291iLxAU+qG29SnBElvTRiGCc1QQWp0rdXnsdMulV10FmJluFn3VnAR+zXXsrPeN8KP/h883VWfNdPj1pN9boQuXbr/uhNtp9Ws
</data> </data>
</layer> </layer>
<layer id="2" name="Ground" width="30" height="30"> <layer id="2" name="Ground" width="30" height="30">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJy9l1FOwzAMhjN4QE2zI4zCAxyCh6EKCkfgAIODbByBAxQkBOqNeACBKD3C3omVRHWzNnHbrJasZl2X7/fsJO5SMHYQM3YofQpbccbuuWJOyZ3FNRP8UigdD3x/TIh1KZrcKeK2YzX+JbW8TMwNzbub797LJeNTNOPE9hRWwg77WfuYWP866hDfr9A4RExxpNxnG0dcJVcabzqu9vhV8o4I/ib9VHRzi0jpiuT1RNTOI+VmDFeIMUUabrn6LXiGPsM49ewHhvtIyHUi1HzcoRHrqxzsdVxzs4Wc+9jN9sWB9WUOdqL1AZeSuytOy+81V/O+O+qv0FxKLJRnzHOFp+b3xfXZGtXgmczx+SIM17V+wUyOfwi5o+b3V3NxflctmhNrTYCOzNo7Kv2flOg+dlO7pV7LkbV3wLnkO+cT0VyjRkeK5sTrF+tsY5qzv2+fkaD9wJ7TfI/3N/t7+ywEPpVdaC5lb2sz+/yn9jhQ998juPnAnmPWU2ebDelzQnF9TLtXGsvdzof1OHmAeIfah5ieexHgncq8J/V5P6HmF+pi29JHg/0Dv4Nh9Q== eJzVl91NwzAQxw08IDvuCMXwAGMURRAYgQEKgxRGYIBSqQJlJ5AQISP0HZ9sqxc3sa+JG4mTTnGdxL//9fxxmUnGjjPGTrSPYXPB2KMwzDG5R9mWCX4tjY4ncTgmxDqTTe4YcfuxOv/SWlYjc1PzHia7fUvN+JTNOLG9ppWww36zPiTW3455iPtr1E4RU8aNx+w5EFcljMa7jqvfXmveKcHftV/Ibm7JjS6ur+dy64Ibd224Qow50nAvzLvgBfoN7TyyHzjuCyHXSprxREAj1lcH2IusyVVnYXYsDqyvCLCV1QdcSu5uBC2/t8KM+xGYf6XlUmKhPOOeKyNz/lDcmC3QHLycMnY1TcMNrV8wl+NvQu6o+f2xXJzfeYtm5a0J0FF4e0dt/5MK9WN3c7eya5l7ewecS7FzXsnmGnU6cjQmXr9YZxvTnf371hkK7Qf+mO4+3t/8+/5ZCHwqu7Rcyt7WZv75T61xhnKXPWuOoVywPnVOKm6M6ddKQ7mbSb8aJ0W8few/c9130j7fJ1QuzItNSx0N9gflvWk0
</data> </data>
</layer> </layer>
<layer id="3" name="Walls" width="30" height="30"> <layer id="3" name="Walls" width="30" height="30">
@@ -20,7 +20,7 @@
<property name="spriteLayer" type="bool" value="true"/> <property name="spriteLayer" type="bool" value="true"/>
</properties> </properties>
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJxjYBgFo4B2YAcLA4M0jfEuFkx7Q1lp7zdsdgxFe5NlGRhSZDHZtLaXWDBqL6YYcjxpSzEw6EhhNwtX3GKL58HsX3zgPTsqTQhoMGK34yuJ9pILSPHvYaBby4FxWwHEepyY8iMhfimxdzLHwNhLjBgxAJZWybX3Cyt5dSgp9fY3JHvRw3sKGp+Qm8kJJ3Q7iQHUsJccQIq9hMKOVvZSE5BrL6V+H2r+HSz2AgAoOizU eJxjYBgFo4B2YAcLA4M0jfEuFkx7Q1lJd+sUDtLUY7ODHHtJBdS2N1mWgSFFFpMNA7BwIcdeUsMUGxiK4TyZAn8TYy+2eMIGcMUtNv1DMZxB4D07Kk0IaDBit+MrCfZSkq5J8e9hoFvLpRgYKoBYjxNTfiTELyX2oudDmL3ExB+5eZhY/xJjPiytkmvvF1by6lBS6u1vSPai+4lQOKO7mZx0QU48UcNecgAp9lKj7iTHXmoCcu2l1O9Dzb+DxV4ApmIxJg==
</data> </data>
</layer> </layer>
<layer id="5" name="Overlay" width="30" height="30"> <layer id="5" name="Overlay" width="30" height="30">
@@ -76,6 +76,10 @@
<property name="shopList" value="Equipment"/> <property name="shopList" value="Equipment"/>
</properties> </properties>
</object> </object>
<object id="49" template="../obj/spellsmith.tx" x="96" y="208"/> <object id="58" template="../obj/shop.tx" x="97" y="209">
<properties>
<property name="shopList" value="Instant,Creature,Land,Colorless,Artifact,Multicolor,Azorius,Dimir,Rakdos,Gruul,Selesnya,Orzhov,Izzet,Golgari,Boros,Simic,Golem,Sliver"/>
</properties>
</object>
</objectgroup> </objectgroup>
</map> </map>

View File

@@ -78,8 +78,8 @@ timeline0: 0.0
- X Scale - - X Scale -
lowMin: 0.0 lowMin: 0.0
lowMax: 0.0 lowMax: 0.0
highMin: 32.0 highMin: 64.0
highMax: 16.0 highMax: 48.0
relative: false relative: false
scalingCount: 2 scalingCount: 2
scaling0: 0.0 scaling0: 0.0
@@ -90,7 +90,16 @@ timeline1: 1.0
- Y Scale - - Y Scale -
active: false active: false
- Velocity - - Velocity -
active: false active: true
lowMin: 0.0
lowMax: 0.0
highMin: 100.0
highMax: 100.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Angle - - Angle -
active: false active: false
- Rotation - - Rotation -
@@ -144,8 +153,8 @@ spriteMode: random
explosion explosion
- Delay - - Delay -
active: true active: true
lowMin: 175.0 lowMin: 0.0
lowMax: 175.0 lowMax: 0.0
- Duration - - Duration -
lowMin: 100.0 lowMin: 100.0
lowMax: 100.0 lowMax: 100.0
@@ -223,8 +232,8 @@ timeline0: 0.0
- X Scale - - X Scale -
lowMin: 0.0 lowMin: 0.0
lowMax: 0.0 lowMax: 0.0
highMin: 32.0 highMin: 64.0
highMax: 16.0 highMax: 48.0
relative: false relative: false
scalingCount: 2 scalingCount: 2
scaling0: 0.0 scaling0: 0.0
@@ -235,9 +244,27 @@ timeline1: 1.0
- Y Scale - - Y Scale -
active: false active: false
- Velocity - - Velocity -
active: false active: true
lowMin: 0.0
lowMax: 0.0
highMin: 100.0
highMax: 100.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Angle - - Angle -
active: false active: true
lowMin: 0.0
lowMax: 0.0
highMin: 60.0
highMax: 60.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Rotation - - Rotation -
active: true active: true
lowMin: 0.0 lowMin: 0.0
@@ -289,153 +316,8 @@ spriteMode: random
explosion explosion
- Delay - - Delay -
active: true active: true
lowMin: 350.0
lowMax: 350.0
- Duration -
lowMin: 100.0
lowMax: 100.0
- Count -
min: 0
max: 200
- Emission -
lowMin: 0.0 lowMin: 0.0
lowMax: 0.0 lowMax: 0.0
highMin: 400.0
highMax: 400.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 0.0
lowMax: 0.0
highMin: 500.0
highMax: 500.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
independent: false
- Life Offset -
active: false
independent: false
- X Offset -
active: true
lowMin: -5.0
lowMax: -7.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Y Offset -
active: true
lowMin: 6.0
lowMax: 7.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Shape -
shape: point
- Spawn Width -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Height -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- X Scale -
lowMin: 0.0
lowMax: 0.0
highMin: 32.0
highMax: 16.0
relative: false
scalingCount: 2
scaling0: 0.0
scaling1: 1.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Y Scale -
active: false
- Velocity -
active: false
- Angle -
active: false
- Rotation -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 360.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Wind -
active: false
- Gravity -
active: false
- Tint -
colorsCount: 3
colors0: 1.0
colors1: 0.12156863
colors2: 0.047058824
timelineCount: 1
timeline0: 0.0
- Transparency -
lowMin: 0.0
lowMax: 0.0
highMin: 1.0
highMax: 1.0
relative: false
scalingCount: 2
scaling0: 1.0
scaling1: 0.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Options -
attached: true
continuous: false
aligned: false
additive: true
behind: false
premultipliedAlpha: false
spriteMode: random
- Image Paths -
/E:/workspace/Particle Park/particles/images/explosion-1.png
/E:/workspace/Particle Park/particles/images/explosion-2.png
/E:/workspace/Particle Park/particles/images/explosion-3.png
explosion
- Delay -
active: true
lowMin: 525.0
lowMax: 525.0
- Duration - - Duration -
lowMin: 100.0 lowMin: 100.0
lowMax: 100.0 lowMax: 100.0
@@ -513,8 +395,8 @@ timeline0: 0.0
- X Scale - - X Scale -
lowMin: 0.0 lowMin: 0.0
lowMax: 0.0 lowMax: 0.0
highMin: 32.0 highMin: 64.0
highMax: 16.0 highMax: 48.0
relative: false relative: false
scalingCount: 2 scalingCount: 2
scaling0: 0.0 scaling0: 0.0
@@ -525,9 +407,27 @@ timeline1: 1.0
- Y Scale - - Y Scale -
active: false active: false
- Velocity - - Velocity -
active: false active: true
lowMin: 0.0
lowMax: 0.0
highMin: 100.0
highMax: 100.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Angle - - Angle -
active: false active: true
lowMin: 0.0
lowMax: 0.0
highMin: 120.0
highMax: 120.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Rotation - - Rotation -
active: true active: true
lowMin: 0.0 lowMin: 0.0
@@ -579,8 +479,8 @@ spriteMode: random
explosion explosion
- Delay - - Delay -
active: true active: true
lowMin: 700.0 lowMin: 0.0
lowMax: 700.0 lowMax: 0.0
- Duration - - Duration -
lowMin: 100.0 lowMin: 100.0
lowMax: 100.0 lowMax: 100.0
@@ -658,8 +558,8 @@ timeline0: 0.0
- X Scale - - X Scale -
lowMin: 0.0 lowMin: 0.0
lowMax: 0.0 lowMax: 0.0
highMin: 32.0 highMin: 64.0
highMax: 16.0 highMax: 48.0
relative: false relative: false
scalingCount: 2 scalingCount: 2
scaling0: 0.0 scaling0: 0.0
@@ -670,9 +570,353 @@ timeline1: 1.0
- Y Scale - - Y Scale -
active: false active: false
- Velocity - - Velocity -
active: false active: true
lowMin: 0.0
lowMax: 0.0
highMin: 100.0
highMax: 100.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Angle - - Angle -
active: false active: true
lowMin: 0.0
lowMax: 0.0
highMin: 180.0
highMax: 180.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Rotation -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 360.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Wind -
active: false
- Gravity -
active: false
- Tint -
colorsCount: 3
colors0: 1.0
colors1: 0.12156863
colors2: 0.047058824
timelineCount: 1
timeline0: 0.0
- Transparency -
lowMin: 0.0
lowMax: 0.0
highMin: 1.0
highMax: 1.0
relative: false
scalingCount: 2
scaling0: 1.0
scaling1: 0.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Options -
attached: true
continuous: false
aligned: false
additive: true
behind: false
premultipliedAlpha: false
spriteMode: random
- Image Paths -
/E:/workspace/Particle Park/particles/images/explosion-1.png
/E:/workspace/Particle Park/particles/images/explosion-2.png
/E:/workspace/Particle Park/particles/images/explosion-3.png
explosion
- Delay -
active: true
lowMin: 0.0
lowMax: 0.0
- Duration -
lowMin: 100.0
lowMax: 100.0
- Count -
min: 0
max: 200
- Emission -
lowMin: 0.0
lowMax: 0.0
highMin: 400.0
highMax: 400.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 0.0
lowMax: 0.0
highMin: 500.0
highMax: 500.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
independent: false
- Life Offset -
active: false
independent: false
- X Offset -
active: true
lowMin: -5.0
lowMax: -7.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Y Offset -
active: true
lowMin: 6.0
lowMax: 7.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Shape -
shape: point
- Spawn Width -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Height -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- X Scale -
lowMin: 0.0
lowMax: 0.0
highMin: 64.0
highMax: 48.0
relative: false
scalingCount: 2
scaling0: 0.0
scaling1: 1.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Y Scale -
active: false
- Velocity -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 100.0
highMax: 100.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Angle -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 240.0
highMax: 240.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Rotation -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 360.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Wind -
active: false
- Gravity -
active: false
- Tint -
colorsCount: 3
colors0: 1.0
colors1: 0.12156863
colors2: 0.047058824
timelineCount: 1
timeline0: 0.0
- Transparency -
lowMin: 0.0
lowMax: 0.0
highMin: 1.0
highMax: 1.0
relative: false
scalingCount: 2
scaling0: 1.0
scaling1: 0.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Options -
attached: true
continuous: false
aligned: false
additive: true
behind: false
premultipliedAlpha: false
spriteMode: random
- Image Paths -
/E:/workspace/Particle Park/particles/images/explosion-1.png
/E:/workspace/Particle Park/particles/images/explosion-2.png
/E:/workspace/Particle Park/particles/images/explosion-3.png
explosion
- Delay -
active: true
lowMin: 0.0
lowMax: 0.0
- Duration -
lowMin: 100.0
lowMax: 100.0
- Count -
min: 0
max: 200
- Emission -
lowMin: 0.0
lowMax: 0.0
highMin: 400.0
highMax: 400.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 0.0
lowMax: 0.0
highMin: 500.0
highMax: 500.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
independent: false
- Life Offset -
active: false
independent: false
- X Offset -
active: true
lowMin: -3.0
lowMax: -7.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Y Offset -
active: true
lowMin: 5.0
lowMax: 4.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Shape -
shape: point
- Spawn Width -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Height -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- X Scale -
lowMin: 0.0
lowMax: 0.0
highMin: 64.0
highMax: 48.0
relative: false
scalingCount: 2
scaling0: 0.0
scaling1: 1.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Y Scale -
active: false
- Velocity -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 100.0
highMax: 100.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Angle -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 300.0
highMax: 300.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Rotation - - Rotation -
active: true active: true
lowMin: 0.0 lowMin: 0.0

View File

@@ -0,0 +1,722 @@
explosion
- Delay -
active: false
- Duration -
lowMin: 100.0
lowMax: 100.0
- Count -
min: 0
max: 200
- Emission -
lowMin: 0.0
lowMax: 0.0
highMin: 400.0
highMax: 400.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 0.0
lowMax: 0.0
highMin: 500.0
highMax: 500.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
independent: false
- Life Offset -
active: false
independent: false
- X Offset -
active: true
lowMin: -2.0
lowMax: 2.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Y Offset -
active: true
lowMin: -2.0
lowMax: 2.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Shape -
shape: point
- Spawn Width -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Height -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- X Scale -
lowMin: 0.0
lowMax: 0.0
highMin: 32.0
highMax: 16.0
relative: false
scalingCount: 2
scaling0: 0.0
scaling1: 1.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Y Scale -
active: false
- Velocity -
active: false
- Angle -
active: false
- Rotation -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 360.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Wind -
active: false
- Gravity -
active: false
- Tint -
colorsCount: 3
colors0: 1.0
colors1: 0.12156863
colors2: 0.047058824
timelineCount: 1
timeline0: 0.0
- Transparency -
lowMin: 0.0
lowMax: 0.0
highMin: 1.0
highMax: 1.0
relative: false
scalingCount: 2
scaling0: 1.0
scaling1: 0.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Options -
attached: true
continuous: false
aligned: false
additive: true
behind: false
premultipliedAlpha: false
spriteMode: random
- Image Paths -
/E:/workspace/Particle Park/particles/images/explosion-1.png
/E:/workspace/Particle Park/particles/images/explosion-2.png
/E:/workspace/Particle Park/particles/images/explosion-3.png
explosion
- Delay -
active: true
lowMin: 175.0
lowMax: 175.0
- Duration -
lowMin: 100.0
lowMax: 100.0
- Count -
min: 0
max: 200
- Emission -
lowMin: 0.0
lowMax: 0.0
highMin: 400.0
highMax: 400.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 0.0
lowMax: 0.0
highMin: 500.0
highMax: 500.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
independent: false
- Life Offset -
active: false
independent: false
- X Offset -
active: true
lowMin: 6.0
lowMax: 8.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Y Offset -
active: true
lowMin: -2.0
lowMax: 2.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Shape -
shape: point
- Spawn Width -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Height -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- X Scale -
lowMin: 0.0
lowMax: 0.0
highMin: 32.0
highMax: 16.0
relative: false
scalingCount: 2
scaling0: 0.0
scaling1: 1.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Y Scale -
active: false
- Velocity -
active: false
- Angle -
active: false
- Rotation -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 360.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Wind -
active: false
- Gravity -
active: false
- Tint -
colorsCount: 3
colors0: 1.0
colors1: 0.12156863
colors2: 0.047058824
timelineCount: 1
timeline0: 0.0
- Transparency -
lowMin: 0.0
lowMax: 0.0
highMin: 1.0
highMax: 1.0
relative: false
scalingCount: 2
scaling0: 1.0
scaling1: 0.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Options -
attached: true
continuous: false
aligned: false
additive: true
behind: false
premultipliedAlpha: false
spriteMode: random
- Image Paths -
/E:/workspace/Particle Park/particles/images/explosion-1.png
/E:/workspace/Particle Park/particles/images/explosion-2.png
/E:/workspace/Particle Park/particles/images/explosion-3.png
explosion
- Delay -
active: true
lowMin: 350.0
lowMax: 350.0
- Duration -
lowMin: 100.0
lowMax: 100.0
- Count -
min: 0
max: 200
- Emission -
lowMin: 0.0
lowMax: 0.0
highMin: 400.0
highMax: 400.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 0.0
lowMax: 0.0
highMin: 500.0
highMax: 500.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
independent: false
- Life Offset -
active: false
independent: false
- X Offset -
active: true
lowMin: -5.0
lowMax: -7.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Y Offset -
active: true
lowMin: 6.0
lowMax: 7.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Shape -
shape: point
- Spawn Width -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Height -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- X Scale -
lowMin: 0.0
lowMax: 0.0
highMin: 32.0
highMax: 16.0
relative: false
scalingCount: 2
scaling0: 0.0
scaling1: 1.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Y Scale -
active: false
- Velocity -
active: false
- Angle -
active: false
- Rotation -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 360.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Wind -
active: false
- Gravity -
active: false
- Tint -
colorsCount: 3
colors0: 1.0
colors1: 0.12156863
colors2: 0.047058824
timelineCount: 1
timeline0: 0.0
- Transparency -
lowMin: 0.0
lowMax: 0.0
highMin: 1.0
highMax: 1.0
relative: false
scalingCount: 2
scaling0: 1.0
scaling1: 0.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Options -
attached: true
continuous: false
aligned: false
additive: true
behind: false
premultipliedAlpha: false
spriteMode: random
- Image Paths -
/E:/workspace/Particle Park/particles/images/explosion-1.png
/E:/workspace/Particle Park/particles/images/explosion-2.png
/E:/workspace/Particle Park/particles/images/explosion-3.png
explosion
- Delay -
active: true
lowMin: 525.0
lowMax: 525.0
- Duration -
lowMin: 100.0
lowMax: 100.0
- Count -
min: 0
max: 200
- Emission -
lowMin: 0.0
lowMax: 0.0
highMin: 400.0
highMax: 400.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 0.0
lowMax: 0.0
highMin: 500.0
highMax: 500.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
independent: false
- Life Offset -
active: false
independent: false
- X Offset -
active: true
lowMin: 6.0
lowMax: 9.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Y Offset -
active: true
lowMin: -6.0
lowMax: -9.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Shape -
shape: point
- Spawn Width -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Height -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- X Scale -
lowMin: 0.0
lowMax: 0.0
highMin: 32.0
highMax: 16.0
relative: false
scalingCount: 2
scaling0: 0.0
scaling1: 1.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Y Scale -
active: false
- Velocity -
active: false
- Angle -
active: false
- Rotation -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 360.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Wind -
active: false
- Gravity -
active: false
- Tint -
colorsCount: 3
colors0: 1.0
colors1: 0.12156863
colors2: 0.047058824
timelineCount: 1
timeline0: 0.0
- Transparency -
lowMin: 0.0
lowMax: 0.0
highMin: 1.0
highMax: 1.0
relative: false
scalingCount: 2
scaling0: 1.0
scaling1: 0.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Options -
attached: true
continuous: false
aligned: false
additive: true
behind: false
premultipliedAlpha: false
spriteMode: random
- Image Paths -
/E:/workspace/Particle Park/particles/images/explosion-1.png
/E:/workspace/Particle Park/particles/images/explosion-2.png
/E:/workspace/Particle Park/particles/images/explosion-3.png
explosion
- Delay -
active: true
lowMin: 700.0
lowMax: 700.0
- Duration -
lowMin: 100.0
lowMax: 100.0
- Count -
min: 0
max: 200
- Emission -
lowMin: 0.0
lowMax: 0.0
highMin: 400.0
highMax: 400.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Life -
lowMin: 0.0
lowMax: 0.0
highMin: 500.0
highMax: 500.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
independent: false
- Life Offset -
active: false
independent: false
- X Offset -
active: true
lowMin: -2.0
lowMax: 2.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Y Offset -
active: true
lowMin: 6.0
lowMax: 8.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Shape -
shape: point
- Spawn Width -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Spawn Height -
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 0.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- X Scale -
lowMin: 0.0
lowMax: 0.0
highMin: 32.0
highMax: 16.0
relative: false
scalingCount: 2
scaling0: 0.0
scaling1: 1.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Y Scale -
active: false
- Velocity -
active: false
- Angle -
active: false
- Rotation -
active: true
lowMin: 0.0
lowMax: 0.0
highMin: 0.0
highMax: 360.0
relative: false
scalingCount: 1
scaling0: 1.0
timelineCount: 1
timeline0: 0.0
- Wind -
active: false
- Gravity -
active: false
- Tint -
colorsCount: 3
colors0: 1.0
colors1: 0.12156863
colors2: 0.047058824
timelineCount: 1
timeline0: 0.0
- Transparency -
lowMin: 0.0
lowMax: 0.0
highMin: 1.0
highMax: 1.0
relative: false
scalingCount: 2
scaling0: 1.0
scaling1: 0.0
timelineCount: 2
timeline0: 0.0
timeline1: 1.0
- Options -
attached: true
continuous: false
aligned: false
additive: true
behind: false
premultipliedAlpha: false
spriteMode: random
- Image Paths -
/E:/workspace/Particle Park/particles/images/explosion-1.png
/E:/workspace/Particle Park/particles/images/explosion-2.png
/E:/workspace/Particle Park/particles/images/explosion-3.png

View File

@@ -1,4 +1,4 @@
info face="LanaPixel" size=-11 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=1,1,1,1 spacing=0,0 outline=0 info face="LanaPixel" size=11 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=1,1,1,1 spacing=0,0 outline=0
common lineHeight=13 base=10 scaleW=2948 scaleH=2048 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4 common lineHeight=13 base=10 scaleW=2948 scaleH=2048 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
page id=0 file="LanaPixel.png" page id=0 file="LanaPixel.png"
chars count=19516 chars count=19516

View File

@@ -1,102 +0,0 @@
info face="MiKrollFantasyBig" size=12 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=2 padding=1,1,1,1 spacing=0,0
common lineHeight=28 base=21 scaleW=506 scaleH=39 pages=1 packed=0 alphaChnl=0 redChnl=0 greenChnl=0 blueChnl=0
page id=0 file="MiKrollFantasyBig.png"
chars count=97
char id=0 x=2 y=2 width=9 height=22 xoffset=0 yoffset=-1 xadvance=12 page=0 chnl=0
char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=-1 xadvance=10 page=0 chnl=0
char id=33 x=289 y=2 width=2 height=12 xoffset=-1 yoffset=9 xadvance=4 page=0 chnl=0
char id=34 x=332 y=26 width=6 height=4 xoffset=-1 yoffset=9 xadvance=8 page=0 chnl=0
char id=35 x=124 y=26 width=10 height=10 xoffset=-1 yoffset=11 xadvance=12 page=0 chnl=0
char id=36 x=129 y=2 width=8 height=12 xoffset=-1 yoffset=11 xadvance=10 page=0 chnl=0
char id=37 x=278 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=38 x=136 y=26 width=10 height=10 xoffset=-1 yoffset=11 xadvance=12 page=0 chnl=0
char id=39 x=344 y=26 width=2 height=4 xoffset=-1 yoffset=9 xadvance=4 page=0 chnl=0
char id=40 x=37 y=2 width=4 height=14 xoffset=-1 yoffset=7 xadvance=6 page=0 chnl=0
char id=41 x=43 y=2 width=4 height=14 xoffset=-1 yoffset=7 xadvance=6 page=0 chnl=0
char id=42 x=288 y=26 width=6 height=6 xoffset=-1 yoffset=9 xadvance=8 page=0 chnl=0
char id=43 x=296 y=26 width=6 height=6 xoffset=-1 yoffset=13 xadvance=8 page=0 chnl=0
char id=44 x=340 y=26 width=2 height=4 xoffset=-1 yoffset=19 xadvance=4 page=0 chnl=0
char id=45 x=366 y=26 width=4 height=2 xoffset=-1 yoffset=15 xadvance=6 page=0 chnl=0
char id=46 x=362 y=26 width=2 height=2 xoffset=-1 yoffset=19 xadvance=4 page=0 chnl=0
char id=47 x=77 y=2 width=6 height=14 xoffset=-1 yoffset=7 xadvance=8 page=0 chnl=0
char id=48 x=303 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=49 x=395 y=2 width=6 height=12 xoffset=-1 yoffset=9 xadvance=8 page=0 chnl=0
char id=50 x=385 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=51 x=375 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=52 x=363 y=2 width=10 height=12 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=53 x=353 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=54 x=343 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=55 x=333 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=56 x=323 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=57 x=313 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=58 x=221 y=2 width=2 height=12 xoffset=-1 yoffset=9 xadvance=4 page=0 chnl=0
char id=59 x=33 y=2 width=2 height=14 xoffset=-1 yoffset=9 xadvance=4 page=0 chnl=0
char id=60 x=112 y=26 width=10 height=10 xoffset=-1 yoffset=11 xadvance=12 page=0 chnl=0
char id=61 x=304 y=26 width=6 height=6 xoffset=-1 yoffset=13 xadvance=8 page=0 chnl=0
char id=62 x=98 y=26 width=12 height=10 xoffset=-1 yoffset=11 xadvance=14 page=0 chnl=0
char id=63 x=267 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=64 x=85 y=2 width=14 height=14 xoffset=-1 yoffset=7 xadvance=16 page=0 chnl=0
char id=65 x=109 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=66 x=119 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=67 x=143 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=68 x=153 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=69 x=163 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=70 x=173 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=71 x=183 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=72 x=193 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=73 x=203 y=2 width=6 height=12 xoffset=-1 yoffset=9 xadvance=8 page=0 chnl=0
char id=74 x=211 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=75 x=225 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=76 x=235 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=77 x=245 y=2 width=10 height=12 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=78 x=257 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=79 x=277 y=2 width=10 height=12 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=80 x=293 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=81 x=21 y=2 width=10 height=14 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=82 x=403 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=83 x=423 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=84 x=433 y=2 width=10 height=12 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=85 x=445 y=2 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=86 x=455 y=2 width=10 height=12 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=87 x=473 y=2 width=10 height=12 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=88 x=485 y=2 width=10 height=12 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=89 x=10 y=26 width=10 height=12 xoffset=-1 yoffset=9 xadvance=12 page=0 chnl=0
char id=90 x=22 y=26 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=91 x=49 y=2 width=4 height=14 xoffset=-1 yoffset=7 xadvance=6 page=0 chnl=0
char id=92 x=101 y=2 width=6 height=14 xoffset=-1 yoffset=7 xadvance=8 page=0 chnl=0
char id=93 x=55 y=2 width=4 height=14 xoffset=-1 yoffset=7 xadvance=6 page=0 chnl=0
char id=94 x=324 y=26 width=6 height=4 xoffset=-1 yoffset=9 xadvance=8 page=0 chnl=0
char id=95 x=352 y=26 width=8 height=2 xoffset=-1 yoffset=19 xadvance=10 page=0 chnl=0
char id=96 x=348 y=26 width=2 height=4 xoffset=-1 yoffset=9 xadvance=4 page=0 chnl=0
char id=97 x=250 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=98 x=32 y=26 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=99 x=270 y=26 width=6 height=8 xoffset=-1 yoffset=13 xadvance=8 page=0 chnl=0
char id=100 x=56 y=26 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=101 x=148 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=102 x=90 y=26 width=6 height=12 xoffset=-1 yoffset=9 xadvance=8 page=0 chnl=0
char id=103 x=80 y=26 width=8 height=12 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=104 x=70 y=26 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=105 x=66 y=26 width=2 height=12 xoffset=-1 yoffset=9 xadvance=4 page=0 chnl=0
char id=106 x=13 y=2 width=6 height=16 xoffset=-1 yoffset=9 xadvance=8 page=0 chnl=0
char id=107 x=46 y=26 width=8 height=12 xoffset=-1 yoffset=9 xadvance=10 page=0 chnl=0
char id=108 x=42 y=26 width=2 height=12 xoffset=-1 yoffset=9 xadvance=4 page=0 chnl=0
char id=109 x=158 y=26 width=10 height=8 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=0
char id=110 x=170 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=111 x=180 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=112 x=0 y=26 width=8 height=12 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=113 x=497 y=2 width=8 height=12 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=114 x=190 y=26 width=6 height=8 xoffset=-1 yoffset=13 xadvance=8 page=0 chnl=0
char id=115 x=198 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=116 x=467 y=2 width=4 height=12 xoffset=-1 yoffset=9 xadvance=6 page=0 chnl=0
char id=117 x=208 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=118 x=218 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=119 x=228 y=26 width=10 height=8 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=0
char id=120 x=240 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=121 x=413 y=2 width=8 height=12 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=122 x=260 y=26 width=8 height=8 xoffset=-1 yoffset=13 xadvance=10 page=0 chnl=0
char id=123 x=61 y=2 width=6 height=14 xoffset=-1 yoffset=7 xadvance=8 page=0 chnl=0
char id=124 x=139 y=2 width=2 height=12 xoffset=-1 yoffset=9 xadvance=4 page=0 chnl=0
char id=125 x=69 y=2 width=6 height=14 xoffset=-1 yoffset=7 xadvance=8 page=0 chnl=0
char id=126 x=312 y=26 width=10 height=6 xoffset=-1 yoffset=13 xadvance=12 page=0 chnl=0
char id=160 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=21 xadvance=10 page=0 chnl=0
kernings count=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,332 @@
ui_skin.png
size: 512, 512
format: RGBA8888
filter: Nearest, Nearest
repeat: none
BKey_3_14
rotate: false
xy: 253, 371
size: 32, 16
split: 6, 6, 9, 6
pad: 0, 0, 0, 0
orig: 32, 16
offset: 0, 0
index: -1
BKey_3_9
rotate: false
xy: 203, 321
size: 32, 16
split: 5, 5, 6, 7
pad: 0, 0, 0, 0
orig: 32, 16
offset: 0, 0
index: -1
MiKrollFantasy
rotate: false
xy: 1, 491
size: 506, 18
orig: 506, 18
offset: 0, 0
index: -1
MiKrollFantasy(1)
rotate: false
xy: 1, 450
size: 506, 39
orig: 506, 39
offset: 0, 0
index: -1
MiKrollFantasy(2)
rotate: false
xy: 1, 430
size: 506, 18
orig: 506, 18
offset: 0, 0
index: -1
MiKrollFantasy(3)
rotate: false
xy: 1, 389
size: 506, 39
orig: 506, 39
offset: 0, 0
index: -1
9patch4
rotate: false
xy: 75, 137
size: 48, 48
split: 7, 7, 7, 7
pad: 0, 0, 0, 0
orig: 48, 48
offset: 0, 0
index: -1
down
rotate: false
xy: 97, 119
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
down_down
rotate: false
xy: 125, 147
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
left
rotate: false
xy: 147, 169
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
left_down
rotate: false
xy: 203, 281
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
right
rotate: false
xy: 275, 353
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
right_down
rotate: false
xy: 305, 371
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
up
rotate: false
xy: 1, 19
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
up_down
rotate: false
xy: 51, 72
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
cursor
rotate: false
xy: 25, 58
size: 4, 3
split: 1, 1, 1, 1
pad: 0, 0, 0, 0
orig: 4, 3
offset: 0, 0
index: -1
item_frame
rotate: false
xy: 75, 115
size: 20, 20
orig: 20, 20
offset: 0, 0
index: -1
item_frame_hover
rotate: false
xy: 125, 165
size: 20, 20
orig: 20, 20
offset: 0, 0
index: -1
item_frame_selected
rotate: false
xy: 203, 299
size: 20, 20
orig: 20, 20
offset: 0, 0
index: -1
item_frame_selected_hover
rotate: false
xy: 253, 349
size: 20, 20
orig: 20, 20
offset: 0, 0
index: -1
select
rotate: false
xy: 509, 507
size: 2, 2
orig: 2, 2
offset: 0, 0
index: -1
bar
rotate: false
xy: 1, 55
size: 22, 6
split: 2, 2, 2, 2
pad: 0, 0, 0, 0
orig: 22, 6
offset: 0, 0
index: -1
barcontent
rotate: false
xy: 51, 108
size: 20, 3
split: 0, 0, 0, 0
orig: 20, 3
offset: 0, 0
index: -1
check
rotate: false
xy: 115, 127
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
map
rotate: false
xy: 1, 63
size: 48, 48
split: 17, 16, 13, 11
pad: 0, 0, 0, 0
orig: 48, 48
offset: 0, 0
index: -1
pressed
rotate: false
xy: 253, 331
size: 14, 16
split: 4, 4, 6, 5
pad: 0, 0, 0, 0
orig: 14, 16
offset: 0, 0
index: -1
pressedMap
rotate: false
xy: 1, 37
size: 16, 16
split: 6, 6, 4, 3
pad: 0, 0, 0, 0
orig: 16, 16
offset: 0, 0
index: -1
pressedround
rotate: false
xy: 293, 354
size: 12, 15
split: 4, 4, 7, 5
pad: 0, 0, 0, 0
orig: 12, 15
offset: 0, 0
index: -1
scroll
rotate: false
xy: 1, 2
size: 6, 15
split: 2, 2, 3, 4
pad: 0, 0, 0, 0
orig: 6, 15
offset: 0, 0
index: -1
scroll2
rotate: false
xy: 225, 312
size: 14, 7
split: 3, 3, 2, 3
pad: 0, 0, 0, 0
orig: 14, 7
offset: 0, 0
index: -1
thinwindow
rotate: false
xy: 51, 90
size: 16, 16
split: 2, 2, 2, 2
pad: 0, 0, 0, 0
orig: 16, 16
offset: 0, 0
index: -1
uncheck
rotate: false
xy: 125, 137
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
unpressed
rotate: false
xy: 237, 321
size: 14, 16
split: 4, 4, 4, 7
pad: 0, 0, 0, 0
orig: 14, 16
offset: 0, 0
index: -1
unpressed-disable
rotate: false
xy: 203, 263
size: 14, 16
split: 3, 3, 3, 6
pad: 0, 0, 0, 0
orig: 14, 16
offset: 0, 0
index: -1
unpressed-hover
rotate: false
xy: 165, 169
size: 14, 16
split: 3, 3, 3, 6
pad: 0, 0, 0, 0
orig: 14, 16
offset: 0, 0
index: -1
unpressedMap
rotate: false
xy: 287, 371
size: 16, 16
split: 6, 6, 3, 4
pad: 0, 0, 0, 0
orig: 16, 16
offset: 0, 0
index: -1
unpressedround
rotate: false
xy: 323, 372
size: 12, 15
split: 4, 4, 5, 7
pad: 0, 0, 0, 0
orig: 12, 15
offset: 0, 0
index: -1
windowMain
rotate: false
xy: 203, 339
size: 48, 48
split: 6, 6, 6, 6
pad: 0, 0, 0, 0
orig: 48, 48
offset: 0, 0
index: -1
touchBackground
rotate: false
xy: 1, 187
size: 200, 200
orig: 200, 200
offset: 0, 0
index: -1
touchKnob
rotate: false
xy: 1, 113
size: 72, 72
orig: 72, 72
offset: 0, 0
index: -1
dummy
rotate: false
xy: 0, 360
size: 5,5
orig: 1,1
split: 1, 1, 1, 1
pad: 0, 0, 0, 0
offset: 0,0
index:-1

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -4,9 +4,16 @@ size: 512, 512
format: RGBA8888 format: RGBA8888
filter: Nearest, Nearest filter: Nearest, Nearest
repeat: none repeat: none
white-pixel
rotate: false
xy: 221, 326
size: 1, 1
orig: 1, 1
offset: 0, 0
index: -1
BKey_3_14 BKey_3_14
rotate: false rotate: false
xy: 253, 371 xy: 125, 214
size: 32, 16 size: 32, 16
split: 6, 6, 9, 6 split: 6, 6, 9, 6
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -15,44 +22,37 @@ BKey_3_14
index: -1 index: -1
BKey_3_9 BKey_3_9
rotate: false rotate: false
xy: 203, 321 xy: 75, 164
size: 32, 16 size: 32, 16
split: 5, 5, 6, 7 split: 5, 5, 6, 7
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
orig: 32, 16 orig: 32, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
MiKrollFantasy 9patch17
rotate: false rotate: false
xy: 1, 491 xy: 253, 384
size: 506, 18 size: 48, 48
orig: 506, 18 orig: 48, 48
offset: 0, 0 offset: 0, 0
index: -1 index: -1
MiKrollFantasy(1) 9patch17_down
rotate: false rotate: false
xy: 1, 450 xy: 203, 334
size: 506, 39 size: 48, 48
orig: 506, 39 orig: 48, 48
offset: 0, 0 offset: 0, 0
index: -1 index: -1
MiKrollFantasy(2) 9patch17_h
rotate: false rotate: false
xy: 1, 430 xy: 1, 58
size: 506, 18 size: 48, 48
orig: 506, 18 orig: 48, 48
offset: 0, 0
index: -1
MiKrollFantasy(3)
rotate: false
xy: 1, 389
size: 506, 39
orig: 506, 39
offset: 0, 0 offset: 0, 0
index: -1 index: -1
9patch4 9patch4
rotate: false rotate: false
xy: 75, 137 xy: 75, 182
size: 48, 48 size: 48, 48
split: 7, 7, 7, 7 split: 7, 7, 7, 7
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -61,63 +61,63 @@ MiKrollFantasy(3)
index: -1 index: -1
down down
rotate: false rotate: false
xy: 97, 119 xy: 253, 344
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
down_down down_down
rotate: false rotate: false
xy: 125, 147 xy: 275, 366
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
left left
rotate: false rotate: false
xy: 147, 169 xy: 303, 394
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
left_down left_down
rotate: false rotate: false
xy: 203, 281 xy: 325, 416
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
right right
rotate: false rotate: false
xy: 275, 353 xy: 1, 18
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
right_down right_down
rotate: false rotate: false
xy: 305, 371 xy: 23, 40
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
up up
rotate: false rotate: false
xy: 1, 19 xy: 147, 196
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
up_down up_down
rotate: false rotate: false
xy: 51, 72 xy: 177, 214
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
cursor cursor
rotate: false rotate: false
xy: 25, 58 xy: 225, 329
size: 4, 3 size: 4, 3
split: 1, 1, 1, 1 split: 1, 1, 1, 1
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -126,42 +126,42 @@ cursor
index: -1 index: -1
item_frame item_frame
rotate: false rotate: false
xy: 75, 115 xy: 253, 362
size: 20, 20 size: 20, 20
orig: 20, 20 orig: 20, 20
offset: 0, 0 offset: 0, 0
index: -1 index: -1
item_frame_hover item_frame_hover
rotate: false rotate: false
xy: 125, 165 xy: 303, 412
size: 20, 20 size: 20, 20
orig: 20, 20 orig: 20, 20
offset: 0, 0 offset: 0, 0
index: -1 index: -1
item_frame_selected item_frame_selected
rotate: false rotate: false
xy: 203, 299 xy: 1, 36
size: 20, 20 size: 20, 20
orig: 20, 20 orig: 20, 20
offset: 0, 0 offset: 0, 0
index: -1 index: -1
item_frame_selected_hover item_frame_selected_hover
rotate: false rotate: false
xy: 253, 349 xy: 125, 192
size: 20, 20 size: 20, 20
orig: 20, 20 orig: 20, 20
offset: 0, 0 offset: 0, 0
index: -1 index: -1
select select
rotate: false rotate: false
xy: 509, 507 xy: 69, 146
size: 2, 2 size: 2, 2
orig: 2, 2 orig: 2, 2
offset: 0, 0 offset: 0, 0
index: -1 index: -1
bar bar
rotate: false rotate: false
xy: 1, 55 xy: 51, 150
size: 22, 6 size: 22, 6
split: 2, 2, 2, 2 split: 2, 2, 2, 2
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -170,7 +170,7 @@ bar
index: -1 index: -1
barcontent barcontent
rotate: false rotate: false
xy: 51, 108 xy: 203, 329
size: 20, 3 size: 20, 3
split: 0, 0, 0, 0 split: 0, 0, 0, 0
orig: 20, 3 orig: 20, 3
@@ -178,14 +178,14 @@ barcontent
index: -1 index: -1
check check
rotate: false rotate: false
xy: 115, 127 xy: 253, 334
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
map map
rotate: false rotate: false
xy: 1, 63 xy: 1, 108
size: 48, 48 size: 48, 48
split: 17, 16, 13, 11 split: 17, 16, 13, 11
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -194,7 +194,7 @@ map
index: -1 index: -1
pressed pressed
rotate: false rotate: false
xy: 253, 331 xy: 125, 174
size: 14, 16 size: 14, 16
split: 4, 4, 6, 5 split: 4, 4, 6, 5
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -203,7 +203,7 @@ pressed
index: -1 index: -1
pressedMap pressedMap
rotate: false rotate: false
xy: 1, 37 xy: 51, 132
size: 16, 16 size: 16, 16
split: 6, 6, 4, 3 split: 6, 6, 4, 3
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -212,7 +212,7 @@ pressedMap
index: -1 index: -1
pressedround pressedround
rotate: false rotate: false
xy: 293, 354 xy: 343, 417
size: 12, 15 size: 12, 15
split: 4, 4, 7, 5 split: 4, 4, 7, 5
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -221,7 +221,7 @@ pressedround
index: -1 index: -1
scroll scroll
rotate: false rotate: false
xy: 1, 2 xy: 303, 377
size: 6, 15 size: 6, 15
split: 2, 2, 3, 4 split: 2, 2, 3, 4
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -230,7 +230,7 @@ scroll
index: -1 index: -1
scroll2 scroll2
rotate: false rotate: false
xy: 225, 312 xy: 75, 155
size: 14, 7 size: 14, 7
split: 3, 3, 2, 3 split: 3, 3, 2, 3
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -239,7 +239,7 @@ scroll2
index: -1 index: -1
thinwindow thinwindow
rotate: false rotate: false
xy: 51, 90 xy: 203, 311
size: 16, 16 size: 16, 16
split: 2, 2, 2, 2 split: 2, 2, 2, 2
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -248,14 +248,14 @@ thinwindow
index: -1 index: -1
uncheck uncheck
rotate: false rotate: false
xy: 125, 137 xy: 293, 374
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
unpressed unpressed
rotate: false rotate: false
xy: 237, 321 xy: 109, 164
size: 14, 16 size: 14, 16
split: 4, 4, 4, 7 split: 4, 4, 4, 7
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -264,7 +264,7 @@ unpressed
index: -1 index: -1
unpressed-disable unpressed-disable
rotate: false rotate: false
xy: 203, 263 xy: 203, 293
size: 14, 16 size: 14, 16
split: 3, 3, 3, 6 split: 3, 3, 3, 6
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -273,7 +273,7 @@ unpressed-disable
index: -1 index: -1
unpressed-hover unpressed-hover
rotate: false rotate: false
xy: 165, 169 xy: 51, 114
size: 14, 16 size: 14, 16
split: 3, 3, 3, 6 split: 3, 3, 3, 6
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -282,7 +282,7 @@ unpressed-hover
index: -1 index: -1
unpressedMap unpressedMap
rotate: false rotate: false
xy: 287, 371 xy: 159, 214
size: 16, 16 size: 16, 16
split: 6, 6, 3, 4 split: 6, 6, 3, 4
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -291,7 +291,7 @@ unpressedMap
index: -1 index: -1
unpressedround unpressedround
rotate: false rotate: false
xy: 323, 372 xy: 1, 1
size: 12, 15 size: 12, 15
split: 4, 4, 5, 7 split: 4, 4, 5, 7
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -300,7 +300,7 @@ unpressedround
index: -1 index: -1
windowMain windowMain
rotate: false rotate: false
xy: 203, 339 xy: 203, 384
size: 48, 48 size: 48, 48
split: 6, 6, 6, 6 split: 6, 6, 6, 6
pad: 0, 0, 0, 0 pad: 0, 0, 0, 0
@@ -309,24 +309,15 @@ windowMain
index: -1 index: -1
touchBackground touchBackground
rotate: false rotate: false
xy: 1, 187 xy: 1, 232
size: 200, 200 size: 200, 200
orig: 200, 200 orig: 200, 200
offset: 0, 0 offset: 0, 0
index: -1 index: -1
touchKnob touchKnob
rotate: false rotate: false
xy: 1, 113 xy: 1, 158
size: 72, 72 size: 72, 72
orig: 72, 72 orig: 72, 72
offset: 0, 0 offset: 0, 0
index: -1 index: -1
dummy
rotate: false
xy: 0, 360
size: 5,5
orig: 1,1
split: 1, 1, 1, 1
pad: 0, 0, 0, 0
offset: 0,0
index:-1

View File

@@ -1,36 +1,27 @@
{ {
"com.badlogic.gdx.graphics.g2d.BitmapFont": { "BitmapFont": {
"big": {
"file": "LanaPixel.fnt"
},
"black": {
"file": "LanaPixel.fnt"
},
"blackbig": {
"file": "LanaPixel.fnt"
},
"default": { "default": {
"file": "LanaPixel.fnt" "file": "LanaPixel.fnt"
} }
}, },
"com.badlogic.gdx.graphics.Color": { "Color": {
"RGBA_0_0_0_0": {
"hex": "00000000"
},
"RGBA_0_0_0_255": { "RGBA_0_0_0_255": {
"r": 0, "hex": "000000ff"
"g": 0,
"b": 0,
"a": 1
}, },
"RGBA_0_216_255_255": { "RGBA_0_216_255_255": {
"r": 0, "hex": "00d8ffff"
"g": 0.848778, },
"b": 1, "RGBA_204_200_200_255": {
"a": 1 "hex": "ccc8c8ff"
}, },
"RGBA_255_255_255_255": { "RGBA_255_255_255_255": {
"r": 1, "hex": "ffffffff"
"g": 1, },
"b": 1, "RGBA_38_23_3_50": {
"a": 1 "hex": "b06a0e5a"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable": { "com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable": {
@@ -40,6 +31,20 @@
"minHeight": 40 "minHeight": 40
} }
}, },
"TintedDrawable": {
"clear": {
"name": "white-pixel",
"color": "RGBA_255_255_255_255"
},
"transparent": {
"name": "white-pixel",
"color": "RGBA_0_0_0_0"
},
"background": {
"name": "white-pixel",
"color": "RGBA_38_23_3_50"
}
},
"com.ray3k.tenpatch.TenPatchDrawable": { "com.ray3k.tenpatch.TenPatchDrawable": {
"paper10Patch": { "paper10Patch": {
"region": "map", "region": "map",
@@ -58,7 +63,8 @@
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"TenPatchGold": { "TenPatchGold": {
"region": "9patch4", "region": "9patch4",
@@ -77,7 +83,8 @@
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"windowMain10Patch": { "windowMain10Patch": {
"region": "windowMain", "region": "windowMain",
@@ -96,7 +103,8 @@
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"unpressed-hover10patch": { "unpressed-hover10patch": {
"region": "unpressed-hover", "region": "unpressed-hover",
@@ -105,17 +113,18 @@
"tiling": true, "tiling": true,
"minWidth": 14, "minWidth": 14,
"minHeight": 16, "minHeight": 16,
"rightWidth": 4, "rightWidth": 5,
"leftWidth": 4, "leftWidth": 5,
"bottomHeight": 7, "bottomHeight": 8,
"topHeight": 4, "topHeight": 5,
"offsetX": 0, "offsetX": 0,
"offsetY": 0, "offsetY": 0,
"offsetXspeed": 0, "offsetXspeed": 0,
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"unpressed-disable10Patch": { "unpressed-disable10Patch": {
"region": "unpressed-disable", "region": "unpressed-disable",
@@ -134,7 +143,8 @@
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"thinwindow10Patch": { "thinwindow10Patch": {
"region": "thinwindow", "region": "thinwindow",
@@ -153,7 +163,8 @@
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"pressed10Patch": { "pressed10Patch": {
"region": "pressed", "region": "pressed",
@@ -162,17 +173,18 @@
"tiling": true, "tiling": true,
"minWidth": 14, "minWidth": 14,
"minHeight": 16, "minHeight": 16,
"rightWidth": 4, "rightWidth": 5,
"leftWidth": 4, "leftWidth": 5,
"bottomHeight": 5, "bottomHeight": 6,
"topHeight": 6, "topHeight": 7,
"offsetX": 0, "offsetX": 0,
"offsetY": 0, "offsetY": 0,
"offsetXspeed": 0, "offsetXspeed": 0,
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"pressedMap10Patch": { "pressedMap10Patch": {
"region": "pressedMap", "region": "pressedMap",
@@ -191,7 +203,8 @@
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"goldpressed10Patch": { "goldpressed10Patch": {
"region": "BKey_3_14", "region": "BKey_3_14",
@@ -210,7 +223,8 @@
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"unpressedgold10patch": { "unpressedgold10patch": {
"region": "BKey_3_9", "region": "BKey_3_9",
@@ -229,7 +243,8 @@
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"unpressed10patch": { "unpressed10patch": {
"region": "unpressed", "region": "unpressed",
@@ -238,39 +253,81 @@
"tiling": true, "tiling": true,
"minWidth": 14, "minWidth": 14,
"minHeight": 16, "minHeight": 16,
"rightWidth": 4, "rightWidth": 5,
"leftWidth": 4, "leftWidth": 5,
"bottomHeight": 7, "bottomHeight": 8,
"topHeight": 4, "topHeight": 5,
"offsetX": 0, "offsetX": 0,
"offsetY": 0, "offsetY": 0,
"offsetXspeed": 0, "offsetXspeed": 0,
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
}, },
"dummy": { "Button10Patch": {
"region": "dummy", "region": "9patch17",
"horizontalStretchAreas": [ 1, 1 ], "horizontalStretchAreas": [ 13, 20, 26, 36 ],
"verticalStretchAreas": [ 1, 1 ], "verticalStretchAreas": [ 14, 21, 26, 37 ],
"tiling": true, "tiling": false,
"minWidth": 5, "minWidth": 48,
"minHeight": 5, "minHeight": 48,
"rightWidth": 0, "rightWidth": 8,
"leftWidth": 0, "leftWidth": 8,
"bottomHeight": 0, "bottomHeight": 8,
"topHeight": 0, "topHeight": 8,
"offsetX": 0, "offsetX": 0,
"offsetY": 0, "offsetY": 0,
"offsetXspeed": 0, "offsetXspeed": 0,
"offsetYspeed": 0, "offsetYspeed": 0,
"frameDuration": 0.03, "frameDuration": 0.03,
"regions": [], "regions": [],
"playMode": 2 "playMode": 2,
"crushMode": 0
},
"button_down_10patch": {
"region": "9patch17_down",
"horizontalStretchAreas": [ 13, 20, 26, 36 ],
"verticalStretchAreas": [ 14, 21, 26, 40 ],
"tiling": false,
"minWidth": 48,
"minHeight": 48,
"rightWidth": 8,
"leftWidth": 8,
"bottomHeight": 8,
"topHeight": 8,
"offsetX": 0,
"offsetY": 0,
"offsetXspeed": 0,
"offsetYspeed": 0,
"frameDuration": 0.03,
"regions": [],
"playMode": 2,
"crushMode": 0
},
"button_hover_10Patch": {
"region": "9patch17_h",
"horizontalStretchAreas": [ 13, 20, 26, 36 ],
"verticalStretchAreas": [ 14, 21, 26, 41 ],
"tiling": false,
"minWidth": 48,
"minHeight": 48,
"rightWidth": 8,
"leftWidth": 8,
"bottomHeight": 8,
"topHeight": 8,
"offsetX": 0,
"offsetY": 0,
"offsetXspeed": 0,
"offsetYspeed": 0,
"frameDuration": 0.03,
"regions": [],
"playMode": 2,
"crushMode": 0
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.Button$ButtonStyle": { "ButtonStyle": {
"default": { "default": {
"up": "unpressed10patch", "up": "unpressed10patch",
"down": "pressed10Patch", "down": "pressed10Patch",
@@ -289,14 +346,14 @@
"over": "BKey_3_9" "over": "BKey_3_9"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle": { "CheckBoxStyle": {
"default": { "default": {
"checkboxOn": "check", "checkboxOn": "check",
"checkboxOff": "uncheck", "checkboxOff": "uncheck",
"font": "default" "font": "default"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle": { "ImageButtonStyle": {
"default": { "default": {
"imageUp": "unpressed10patch", "imageUp": "unpressed10patch",
"imageDown": "pressed10Patch" "imageDown": "pressed10Patch"
@@ -316,30 +373,21 @@
"imageCheckedOver": "item_frame_selected_hover" "imageCheckedOver": "item_frame_selected_hover"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton$ImageTextButtonStyle": { "ImageTextButtonStyle": {
"default": { "default": {
"font": "default" "font": "default"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle": { "LabelStyle": {
"default": { "default": {
"font": "default" "font": "default"
}, },
"big": { "background": {
"parent": "default", "parent": "default",
"font": "default" "background": "background"
},
"white": {
"font": "default"
},
"whiteBig": {
"font": "default"
}
"nobg": {
"font": "black"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.List$ListStyle": { "ListStyle": {
"default": { "default": {
"font": "default", "font": "default",
"fontColorSelected": "RGBA_0_216_255_255", "fontColorSelected": "RGBA_0_216_255_255",
@@ -348,7 +396,7 @@
"background": "thinwindow10Patch" "background": "thinwindow10Patch"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.ProgressBar$ProgressBarStyle": { "ProgressBarStyle": {
"default-horizontal": { "default-horizontal": {
"background": "bar", "background": "bar",
"knob": "scroll" "knob": "scroll"
@@ -358,7 +406,7 @@
"knob": "scroll2" "knob": "scroll2"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle": { "ScrollPaneStyle": {
"default": { "default": {
"background": "windowMain10Patch" "background": "windowMain10Patch"
}, },
@@ -369,21 +417,20 @@
"background": "9patch4" "background": "9patch4"
}, },
"nobg": { "nobg": {
"background": "dummy", "background": "transparent"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.SelectBox$SelectBoxStyle": { "SelectBoxStyle": {
"default": { "default": {
"font": "default", "font": "default",
"fontColor": "RGBA_255_255_255_255", "fontColor": "RGBA_255_255_255_255",
"overFontColor": "RGBA_0_216_255_255", "overFontColor": "RGBA_0_216_255_255",
"disabledFontColor": "RGBA_255_255_255_255", "disabledFontColor": "RGBA_255_255_255_255",
"scrollStyle": "default", "scrollStyle": "default",
"listStyle": "default", "listStyle": "default"
"background": "unpressed10patch"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle": { "SliderStyle": {
"default-horizontal": { "default-horizontal": {
"background": "thinwindow10Patch", "background": "thinwindow10Patch",
"knob": "scroll" "knob": "scroll"
@@ -393,7 +440,7 @@
"knob": "scroll2" "knob": "scroll2"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.SplitPane$SplitPaneStyle": { "SplitPaneStyle": {
"default-horizontal": { "default-horizontal": {
"handle": "scroll2" "handle": "scroll2"
}, },
@@ -401,7 +448,7 @@
"handle": "scroll" "handle": "scroll"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle": { "TextButtonStyle": {
"default": { "default": {
"parent": "default", "parent": "default",
"font": "default", "font": "default",
@@ -425,9 +472,16 @@
"pressedOffsetY": -3, "pressedOffsetY": -3,
"unpressedOffsetX": 6, "unpressedOffsetX": 6,
"checkedOffsetX": 6 "checkedOffsetX": 6
},
"menu": {
"font": "default",
"up": "Button10Patch",
"down": "button_down_10patch",
"over": "button_hover_10Patch",
"pressedOffsetY": -2
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle": { "TextFieldStyle": {
"default": { "default": {
"font": "default", "font": "default",
"fontColor": "RGBA_255_255_255_255", "fontColor": "RGBA_255_255_255_255",
@@ -437,19 +491,24 @@
"selection": "select" "selection": "select"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.Touchpad$TouchpadStyle": { "TextTooltipStyle": {
"default": {
"label": "default"
}
},
"TouchpadStyle": {
"default": { "default": {
"background": "touchBackground", "background": "touchBackground",
"knob": "touchKnob" "knob": "touchKnob"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.Tree$TreeStyle": { "TreeStyle": {
"default": { "default": {
"plus": "unpressed", "plus": "unpressed",
"minus": "pressed" "minus": "pressed"
} }
}, },
"com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle": { "WindowStyle": {
"default": { "default": {
"background": "windowMain10Patch", "background": "windowMain10Patch",
"titleFont": "default", "titleFont": "default",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -3,6 +3,24 @@ size: 480,1008
format: RGBA8888 format: RGBA8888
filter: Nearest,Nearest filter: Nearest,Nearest
repeat: none repeat: none
c
xy: 368,80
size: 16, 16
b
xy: 384,80
size: 16, 16
r
xy: 368,96
size: 16, 16
g
xy: 384,96
size: 16, 16
u
xy: 368,112
size: 16, 16
w
xy: 384,112
size: 16, 16
CardBack CardBack
xy: 0, 0 xy: 0, 0
size: 48, 64 size: 48, 64
@@ -13,7 +31,19 @@ Life
xy: 48, 16 xy: 48, 16
size: 16, 16 size: 16, 16
Mana Mana
xy: 192, 912 xy: 48, 32
size: 16, 16
Deck
xy: 48, 48
size: 16, 16
Item
xy: 0, 64
size: 16, 16
Status
xy: 16, 64
size: 16, 16
Menu
xy: 32, 64
size: 16, 16 size: 16, 16
SolRing SolRing
xy: 320, 144 xy: 320, 144
@@ -171,7 +201,7 @@ Blood
Cheese Cheese
xy: 80, 768 xy: 80, 768
size: 16, 16 size: 16, 16
Gold GoldStack
xy: 208, 816 xy: 208, 816
size: 16, 16 size: 16, 16
Treasure Treasure

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 KiB

After

Width:  |  Height:  |  Size: 275 KiB

View File

@@ -20,7 +20,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "Back", "text": "tr(lblBack)",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 5, "x": 5,
@@ -28,8 +28,8 @@
} , } ,
{ {
"type": "Label", "type": "Label",
"style":"background",
"name": "gold", "name": "gold",
"text": "$",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 380, "x": 380,
@@ -38,7 +38,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "start", "name": "start",
"text": "Start", "text": "tr(lblBattle)",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 430, "x": 430,

View File

@@ -28,8 +28,8 @@
} , } ,
{ {
"type": "Label", "type": "Label",
"style":"background",
"name": "gold", "name": "gold",
"text": "$",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 65, "x": 65,
@@ -38,7 +38,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "start", "name": "start",
"text": "Start", "text": "tr(lblBattle)",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 125, "x": 125,

View File

@@ -20,7 +20,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 365, "x": 365,
@@ -29,7 +29,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "rename", "name": "rename",
"text": "Rename Deck", "text": "tr(lblRename)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 365, "x": 365,
@@ -38,7 +38,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "edit", "name": "edit",
"text": "Edit Deck", "text": "tr(lblEdit)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 365, "x": 365,

View File

@@ -20,7 +20,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 86, "width": 86,
"height": 30, "height": 30,
"x": 4, "x": 4,
@@ -29,7 +29,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "rename", "name": "rename",
"text": "Rename Deck", "text": "tr(lblRename)",
"width": 86, "width": 86,
"height": 30, "height": 30,
"x": 92, "x": 92,
@@ -38,7 +38,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "edit", "name": "edit",
"text": "Edit Deck", "text": "tr(lblEdit)",
"width": 86, "width": 86,
"height": 30, "height": 30,
"x": 180, "x": 180,

View File

@@ -85,7 +85,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "deck", "name": "deck",
"text": "Deck", "style":"menu",
"text": "{Scale=200%}[+Deck]",
"width": 40, "width": 40,
"height": 36, "height": 36,
"x": 428, "x": 428,
@@ -94,7 +95,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "inventory", "name": "inventory",
"text": "Inventory", "style":"menu",
"text": "{Scale=200%}[+Item]",
"width": 40, "width": 40,
"height": 36, "height": 36,
"x": 428, "x": 428,
@@ -104,7 +106,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "statistic", "name": "statistic",
"text": "Status", "style":"menu",
"text": "{Scale=200%}[+Status]",
"width": 40, "width": 40,
"height": 36, "height": 36,
"x": 428, "x": 428,
@@ -113,7 +116,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "menu", "name": "menu",
"text": "Menu", "style":"menu",
"text": "{Scale=200%}[+Menu]",
"width": 40, "width": 40,
"height": 36, "height": 36,
"x": 428, "x": 428,

View File

@@ -76,7 +76,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "deck", "name": "deck",
"text": "Deck", "style":"menu",
"text": "{Scale=200%}[+Deck]",
"width": 64, "width": 64,
"height": 36, "height": 36,
"x": 416, "x": 416,
@@ -85,7 +86,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "inventory", "name": "inventory",
"text": "Inventory", "style":"menu",
"text": "{Scale=200%}[+Item]",
"width": 64, "width": 64,
"height": 36, "height": 36,
"x": 416, "x": 416,
@@ -95,7 +97,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "statistic", "name": "statistic",
"text": "Status", "style":"menu",
"text": "{Scale=200%}[+Status]",
"width": 64, "width": 64,
"height": 36, "height": 36,
"x": 416, "x": 416,
@@ -104,7 +107,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "menu", "name": "menu",
"text": "Menu", "style":"menu",
"text": "{Scale=200%}[+Menu]",
"width": 64, "width": 64,
"height": 36, "height": 36,
"x": 416, "x": 416,

View File

@@ -60,7 +60,6 @@
"name": "lifePoints", "name": "lifePoints",
"width": 48, "width": 48,
"height": 16, "height": 16,
"fontSize": 1,
"x": 234, "x": 234,
"y": 64 "y": 64
}, },
@@ -70,7 +69,6 @@
"font": "default", "font": "default",
"width": 48, "width": 48,
"height": 3, "height": 3,
"fontSize": 1,
"x": 234, "x": 234,
"y": 85 "y": 85
}, },
@@ -80,14 +78,14 @@
"font": "default", "font": "default",
"width": 48, "width": 48,
"height": 3, "height": 3,
"fontSize": 1,
"x": 234, "x": 234,
"y": 104 "y": 104
}, },
{ {
"type": "TextButton", "type": "TextButton",
"name": "deck", "name": "deck",
"text": "Deck", "style":"menu",
"text": "{Scale=200%}[+Deck]",
"width": 64, "width": 64,
"height": 32, "height": 32,
"x": 206, "x": 206,
@@ -96,7 +94,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "inventory", "name": "inventory",
"text": "Inventory", "style":"menu",
"text": "{Scale=200%}[+Item]",
"width": 64, "width": 64,
"height": 32, "height": 32,
"x": 206, "x": 206,
@@ -106,7 +105,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "statistic", "name": "statistic",
"text": "Status", "style":"menu",
"text": "{Scale=200%}[+Status]",
"width": 64, "width": 64,
"height": 32, "height": 32,
"x": 206, "x": 206,
@@ -115,7 +115,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "menu", "name": "menu",
"text": "Menu", "style":"menu",
"text": "{Scale=200%}[+Menu]",
"width": 64, "width": 64,
"height": 32, "height": 32,
"x": 206, "x": 206,

View File

@@ -30,6 +30,7 @@
{ {
"type": "Label", "type": "Label",
"name": "tempHitPoints", "name": "tempHitPoints",
"text": "tr(lblTempHitPoints)",
"font": "default", "font": "default",
"width": 100, "width": 100,
"height": 30, "height": 30,
@@ -48,7 +49,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "sell", "name": "sell",
"text": "Sell cards", "text": "tr(lblSell)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 190, "x": 190,
@@ -66,7 +67,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "Leave", "text": "tr(lblBack)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 320, "x": 320,

View File

@@ -30,6 +30,7 @@
{ {
"type": "Label", "type": "Label",
"name": "tempHitPoints", "name": "tempHitPoints",
"text": "tr(lblTempHitPoints)",
"font": "default", "font": "default",
"width": 100, "width": 100,
"height": 30, "height": 30,
@@ -48,7 +49,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "sell", "name": "sell",
"text": "Sell cards", "text": "tr(lblSell)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 165, "x": 165,
@@ -66,7 +67,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "Leave", "text": "tr(lblBack)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 165, "x": 165,

View File

@@ -88,7 +88,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 60, "width": 60,
"height": 30, "height": 30,
"x": 400, "x": 400,

View File

@@ -115,7 +115,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 80, "width": 80,
"height": 30, "height": 30,
"x": 184, "x": 184,

View File

@@ -27,7 +27,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "Take all", "text": "tr(lblLeave)",
"width": 48, "width": 48,
"height": 30, "height": 30,
"x": 420, "x": 420,
@@ -36,7 +36,8 @@
{ {
"type": "Label", "type": "Label",
"name": "gold", "name": "gold",
"text": "$", "style":"background",
"text": "[+Gold]",
"width": 48, "width": 48,
"height": 30, "height": 30,
"x": 420, "x": 420,

View File

@@ -27,7 +27,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "Take all", "text": "tr(lblLeave)",
"width": 128, "width": 128,
"height": 32, "height": 32,
"x": 140, "x": 140,
@@ -36,7 +36,8 @@
{ {
"type": "Label", "type": "Label",
"name": "gold", "name": "gold",
"text": "$", "style":"background",
"text": "[+Gold]",
"width": 128, "width": 128,
"height": 32, "height": 32,
"x": 16, "x": 16,

View File

@@ -12,7 +12,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "{lblBack}", "text": "tr(lblBack)",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 5, "x": 5,

View File

@@ -12,7 +12,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "{lblBack}", "text": "tr(lblBack)",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 5, "x": 5,

View File

@@ -21,72 +21,64 @@
{ {
"type": "Label", "type": "Label",
"name" : "titleL", "name" : "titleL",
"text": "{lblCreateACharacter}", "text": "{SIZE=150%}[BLACK]tr(lblCreateACharacter)",
"width": 128, "width": 128,
"height": 16, "height": 16,
"scale": 2, "scale": 2,
"fontSize": 1.5,
"fontColor": "0x000000FF",
"x": 76, "x": 76,
"y": 16 "y": 16
} , } ,
{ {
"type": "Label", "type": "Label",
"name" : "nameL", "name" : "nameL",
"text": "{lblName}:", "text": "[BLACK]tr(lblName):",
"width": 128, "width": 128,
"height": 16, "height": 16,
"font" : "black",
"x": 75, "x": 75,
"y": 96 "y": 96
}, },
{ {
"type": "Label", "type": "Label",
"name" : "raceL", "name" : "raceL",
"text": "{lblRace}:", "text": "[BLACK]tr(lblRace):",
"width": 128, "width": 128,
"height": 16, "height": 16,
"font" : "black",
"x": 75, "x": 75,
"yOffset": 8 "yOffset": 8
}, },
{ {
"type": "Label", "type": "Label",
"name" : "genderL", "name" : "genderL",
"text": "{lblGender}:", "text": "[BLACK]tr(lblGender):",
"width": 128, "width": 128,
"height": 16, "height": 16,
"font" : "black",
"x": 75, "x": 75,
"yOffset": 8 "yOffset": 8
}, },
{ {
"type": "Label", "type": "Label",
"name" : "difficultyL", "name" : "difficultyL",
"text": "{lblDifficulty}:", "text": "[BLACK]tr(lblDifficulty):",
"width": 128, "width": 128,
"height": 16, "height": 16,
"font" : "black",
"x": 75, "x": 75,
"yOffset": 8 "yOffset": 8
}, },
{ {
"type": "Label", "type": "Label",
"name" : "colorIdL", "name" : "colorIdL",
"text": "{lblColors}:", "text": "[BLACK]tr(lblColors):",
"width": 128, "width": 128,
"height": 16, "height": 16,
"font" : "black",
"x": 75, "x": 75,
"yOffset": 8 "yOffset": 8
}, },
{ {
"type": "Label", "type": "Label",
"name" : "modeL", "name" : "modeL",
"text": "{lblMode}", "text": "[BLACK]tr(lblMode)",
"width": 128, "width": 128,
"height": 16, "height": 16,
"font" : "black",
"x": 75, "x": 75,
"yOffset": 8 "yOffset": 8
}, },
@@ -168,7 +160,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "back", "name": "back",
"text": "{lblBack}", "text": "tr(lblBack)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 348, "x": 348,
@@ -177,7 +169,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "start", "name": "start",
"text": "{lblStart}", "text": "tr(lblStart)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 348, "x": 348,

View File

@@ -21,72 +21,64 @@
{ {
"type": "Label", "type": "Label",
"name" : "titleL", "name" : "titleL",
"text": "{lblCreateACharacter}", "text": "{SIZE=150%}[BLACK]tr(lblCreateACharacter)",
"width": 128, "width": 128,
"height": 32, "height": 32,
"scale": 2, "scale": 2,
"fontSize": 1.5,
"fontColor": "0x000000FF",
"x": 30, "x": 30,
"y": 66 "y": 66
} , } ,
{ {
"type": "Label", "type": "Label",
"name" : "nameL", "name" : "nameL",
"text": "{lblName}:", "text": "[BLACK]tr(lblName):",
"width": 128, "width": 128,
"height": 24, "height": 24,
"fontColor": "0x000000FF",
"x": 16, "x": 16,
"y": 140 "y": 140
}, },
{ {
"type": "Label", "type": "Label",
"name" : "raceL", "name" : "raceL",
"text": "{lblRace}:", "text": "[BLACK]tr(lblRace):",
"width": 128, "width": 128,
"height": 24, "height": 24,
"fontColor": "0x000000FF",
"x": 16, "x": 16,
"yOffset": 8 "yOffset": 8
}, },
{ {
"type": "Label", "type": "Label",
"name" : "genderL", "name" : "genderL",
"text": "{lblGender}:", "text": "[BLACK]tr(lblGender):",
"width": 128, "width": 128,
"height": 24, "height": 24,
"fontColor": "0x000000FF",
"x": 16, "x": 16,
"yOffset": 8 "yOffset": 8
}, },
{ {
"type": "Label", "type": "Label",
"name" : "difficultyL", "name" : "difficultyL",
"text": "{lblDifficulty}:", "text": "[BLACK]tr(lblDifficulty):",
"width": 128, "width": 128,
"height": 24, "height": 24,
"fontColor": "0x000000FF",
"x": 16, "x": 16,
"yOffset": 8 "yOffset": 8
}, },
{ {
"type": "Label", "type": "Label",
"name" : "colorIdL", "name" : "colorIdL",
"text": "{lblColors}:", "text": "[BLACK]tr(lblColors):",
"width": 128, "width": 128,
"height": 24, "height": 24,
"font" : "black",
"x": 16, "x": 16,
"yOffset": 8 "yOffset": 8
}, },
{ {
"type": "Label", "type": "Label",
"name" : "modeL", "name" : "modeL",
"text": "{lblMode}", "text": "[BLACK]tr(lblMode)",
"width": 128, "width": 128,
"height": 24, "height": 24,
"font" : "black",
"x": 16, "x": 16,
"yOffset": 8 "yOffset": 8
}, },
@@ -167,7 +159,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "back", "name": "back",
"text": "{lblBack}", "text": "tr(lblBack)",
"width": 64, "width": 64,
"height": 28, "height": 28,
"x": 32, "x": 32,
@@ -176,7 +168,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "start", "name": "start",
"text": "{lblStart}", "text": "tr(lblStart)",
"width": 64, "width": 64,
"height": 28, "height": 28,
"x": 165, "x": 165,

View File

@@ -44,7 +44,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 368, "x": 368,
@@ -53,15 +53,10 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "save", "name": "save",
"text": "saveLoad",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 368, "x": 368,
"y": 220 "y": 220
},
{
"type": "Table",
"font": "default"
} }
] ]
} }

View File

@@ -44,7 +44,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 120, "width": 120,
"height": 32, "height": 32,
"x": 10, "x": 10,
@@ -53,7 +53,6 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "save", "name": "save",
"text": "saveLoad",
"width": 120, "width": 120,
"height": 32, "height": 32,
"x": 140, "x": 140,

View File

@@ -20,7 +20,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 52, "width": 52,
"height": 30, "height": 30,
"x": 415, "x": 415,

View File

@@ -20,7 +20,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 250, "width": 250,
"height": 32, "height": 32,
"x": 10, "x": 10,

View File

@@ -62,7 +62,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "Done", "text": "tr(lblBack)",
"x": 400, "x": 400,
"y": 240, "y": 240,
"width": 70, "width": 70,
@@ -71,7 +71,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BBlack", "name": "BBlack",
"text": "Black", "text": "tr(lblBlack)",
"x": 15, "x": 15,
"y": 120, "y": 120,
"width": 45, "width": 45,
@@ -80,7 +80,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BBlue", "name": "BBlue",
"text": "Blue", "text": "tr(lblBlue)",
"x": 65, "x": 65,
"y": 120, "y": 120,
"width": 45, "width": 45,
@@ -89,7 +89,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BGreen", "name": "BGreen",
"text": "Green", "text": "tr(lblGreen)",
"x": 115, "x": 115,
"y": 120, "y": 120,
"width": 45, "width": 45,
@@ -98,7 +98,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BRed", "name": "BRed",
"text": "Red", "text": "tr(lblRed)",
"x": 165, "x": 165,
"y": 120, "y": 120,
"width": 45, "width": 45,
@@ -107,7 +107,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BWhite", "name": "BWhite",
"text": "White", "text": "tr(lblWhite)",
"x": 215, "x": 215,
"y": 120, "y": 120,
"width": 45, "width": 45,
@@ -116,7 +116,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BColorless", "name": "BColorless",
"text": "Colorless", "text": "tr(lblColorless)",
"x": 265, "x": 265,
"y": 120, "y": 120,
"width": 45, "width": 45,
@@ -125,7 +125,6 @@
{ {
"type": "Label", "type": "Label",
"name": "gold", "name": "gold",
"text": "$",
"x": 0, "x": 0,
"y": 0, "y": 0,
"width": 120, "width": 120,
@@ -134,7 +133,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "pull", "name": "pull",
"text": "Pull", "text": "tr(lblDraw)",
"x": 360, "x": 360,
"y": 180, "y": 180,
"width": 90, "width": 90,
@@ -143,7 +142,7 @@
{ {
"type": "Label", "type": "Label",
"name": "colorLabel", "name": "colorLabel",
"text": "Colors", "text": "tr(lblColors)",
"x": 10, "x": 10,
"y": 90, "y": 90,
"width": 100, "width": 100,
@@ -152,7 +151,7 @@
{ {
"type": "Label", "type": "Label",
"name": "vnXYKZJw_P5wMnHa1tH7-3", "name": "vnXYKZJw_P5wMnHa1tH7-3",
"text": "Plane", "text": "tr(lblPlane)",
"x": 10, "x": 10,
"y": 30, "y": 30,
"width": 100, "width": 100,
@@ -170,7 +169,7 @@
{ {
"type": "Label", "type": "Label",
"name": "vnXYKZJw_P5wMnHa1tH7-5", "name": "vnXYKZJw_P5wMnHa1tH7-5",
"text": "Mana Cost", "text": "tr(lblManaCost)",
"x": 10, "x": 10,
"y": 150, "y": 150,
"width": 100, "width": 100,
@@ -215,7 +214,7 @@
{ {
"type": "Label", "type": "Label",
"name": "vnXYKZJw_P5wMnHa1tH7-10", "name": "vnXYKZJw_P5wMnHa1tH7-10",
"text": "Rarity", "text": "tr(lblRarity)",
"x": 10, "x": 10,
"y": 210, "y": 210,
"width": 100, "width": 100,
@@ -224,7 +223,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BCommon", "name": "BCommon",
"text": "Common", "text": "tr(lblCommon)",
"x": 10, "x": 10,
"y": 240, "y": 240,
"width": 70, "width": 70,
@@ -233,7 +232,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BUncommon", "name": "BUncommon",
"text": "Uncommon", "text": "tr(lblUncommon)",
"x": 90, "x": 90,
"y": 240, "y": 240,
"width": 70, "width": 70,
@@ -242,7 +241,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BRare", "name": "BRare",
"text": "Rare", "text": "tr(lblRare)",
"x": 170, "x": 170,
"y": 240, "y": 240,
"width": 70, "width": 70,
@@ -260,7 +259,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BResetEdition", "name": "BResetEdition",
"text": "Reset", "text": "tr(lblReset)",
"x": 250, "x": 250,
"y": 60, "y": 60,
"width": 70, "width": 70,

View File

@@ -62,7 +62,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "Done", "text": "tr(lblBack)",
"x": 175, "x": 175,
"y": 150, "y": 150,
"width": 70, "width": 70,
@@ -71,7 +71,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BBlack", "name": "BBlack",
"text": "Black", "text": "tr(lblBlack)",
"x": 58, "x": 58,
"y": 290, "y": 290,
"width": 45, "width": 45,
@@ -80,7 +80,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BBlue", "name": "BBlue",
"text": "Blue", "text": "tr(lblBlue)",
"x": 113, "x": 113,
"y": 290, "y": 290,
"width": 45, "width": 45,
@@ -89,7 +89,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BGreen", "name": "BGreen",
"text": "Green", "text": "tr(lblGreen)",
"x": 168, "x": 168,
"y": 290, "y": 290,
"width": 45, "width": 45,
@@ -98,7 +98,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BRed", "name": "BRed",
"text": "Red", "text": "tr(lblRed)",
"x": 58, "x": 58,
"y": 320, "y": 320,
"width": 45, "width": 45,
@@ -107,7 +107,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BWhite", "name": "BWhite",
"text": "White", "text": "tr(lblWhite)",
"x": 113, "x": 113,
"y": 320, "y": 320,
"width": 45, "width": 45,
@@ -116,7 +116,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BColorless", "name": "BColorless",
"text": "Colorless", "text": "tr(lblColorless)",
"x": 168, "x": 168,
"y": 320, "y": 320,
"width": 45, "width": 45,
@@ -125,7 +125,6 @@
{ {
"type": "Label", "type": "Label",
"name": "gold", "name": "gold",
"text": "$",
"x": 150, "x": 150,
"y": 0, "y": 0,
"width": 120, "width": 120,
@@ -134,7 +133,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "pull", "name": "pull",
"text": "Pull", "text": "tr(lblDraw)",
"x": 16, "x": 16,
"y": 150, "y": 150,
"width": 97, "width": 97,
@@ -143,7 +142,7 @@
{ {
"type": "Label", "type": "Label",
"name": "colorLabel", "name": "colorLabel",
"text": "Colors", "text": "tr(lblColors)",
"x": 10, "x": 10,
"y": 260, "y": 260,
"width": 100, "width": 100,
@@ -152,7 +151,7 @@
{ {
"type": "Label", "type": "Label",
"name": "vnXYKZJw_P5wMnHa1tH7-3", "name": "vnXYKZJw_P5wMnHa1tH7-3",
"text": "Plane", "text": "tr(lblPlane)",
"x": 10, "x": 10,
"y": 190, "y": 190,
"width": 100, "width": 100,
@@ -170,7 +169,7 @@
{ {
"type": "Label", "type": "Label",
"name": "vnXYKZJw_P5wMnHa1tH7-5", "name": "vnXYKZJw_P5wMnHa1tH7-5",
"text": "Mana Cost", "text": "tr(lblManaCost)",
"x": 10, "x": 10,
"y": 360, "y": 360,
"width": 100, "width": 100,
@@ -215,7 +214,7 @@
{ {
"type": "Label", "type": "Label",
"name": "vnXYKZJw_P5wMnHa1tH7-10", "name": "vnXYKZJw_P5wMnHa1tH7-10",
"text": "Rarity", "text": "tr(lblRarity)",
"x": 10, "x": 10,
"y": 427, "y": 427,
"width": 100, "width": 100,
@@ -224,7 +223,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BCommon", "name": "BCommon",
"text": "Common", "text": "tr(lblCommon)",
"x": 20, "x": 20,
"y": 450, "y": 450,
"width": 50, "width": 50,
@@ -233,7 +232,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BUncommon", "name": "BUncommon",
"text": "Uncommon", "text": "tr(lblUncommon)",
"x": 80, "x": 80,
"y": 450, "y": 450,
"width": 50, "width": 50,
@@ -242,7 +241,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BRare", "name": "BRare",
"text": "Rare", "text": "tr(lblRare)",
"x": 140, "x": 140,
"y": 450, "y": 450,
"width": 50, "width": 50,
@@ -260,7 +259,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "BResetEdition", "name": "BResetEdition",
"text": "Reset", "text": "tr(lblReset)",
"x": 195, "x": 195,
"y": 220, "y": 220,
"width": 70, "width": 70,

View File

@@ -12,7 +12,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Start", "name": "Start",
"text": "New Game", "text": "tr(lblNewGame)",
"width": 80, "width": 80,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -21,7 +21,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Start+", "name": "Start+",
"text": "New Game +", "text": "tr(lblNewGame) +",
"width": 80, "width": 80,
"height": 30, "height": 30,
"x": 240, "x": 240,
@@ -30,7 +30,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Load", "name": "Load",
"text": "Load", "text": "tr(lblLoad)",
"width": 160, "width": 160,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -39,7 +39,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Save", "name": "Save",
"text": "Save", "text": "tr(lblSave)",
"width": 160, "width": 160,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -48,7 +48,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Resume", "name": "Resume",
"text": "Resume", "text": "tr(lblResume)",
"width": 160, "width": 160,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -57,7 +57,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Continue", "name": "Continue",
"text": "Continue", "text": "tr(lblContinue)",
"width": 160, "width": 160,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -66,7 +66,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Settings", "name": "Settings",
"text": "Settings", "text": "tr(lblSettings)",
"width": 160, "width": 160,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -75,7 +75,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Exit", "name": "Exit",
"text": "Exit", "text": "tr(lblExit)",
"width": 75, "width": 75,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -84,7 +84,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Switch", "name": "Switch",
"text": "Classic", "text": "tr(lblClassic)",
"width": 75, "width": 75,
"height": 30, "height": 30,
"x": 245, "x": 245,

View File

@@ -12,7 +12,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Start", "name": "Start",
"text": "New Game", "text": "tr(lblNewGame)",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -21,7 +21,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Start+", "name": "Start+",
"text": "New Game +", "text": "tr(lblNewGame) +",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -30,7 +30,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Load", "name": "Load",
"text": "Load", "text": "tr(lblLoad)",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -39,7 +39,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Save", "name": "Save",
"text": "Save", "text": "tr(lblSave)",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -48,7 +48,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Resume", "name": "Resume",
"text": "Resume", "text": "tr(lblResume)",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -57,7 +57,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Settings", "name": "Settings",
"text": "Settings", "text": "tr(lblSettings)",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -66,7 +66,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Switch", "name": "Switch",
"text": "Classic", "text": "tr(lblClassic)",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -75,7 +75,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Exit", "name": "Exit",
"text": "Exit", "text": "tr(lblExit)",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -84,7 +84,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "Continue", "name": "Continue",
"text": "Continue", "text": "tr(lblContinue)",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,

View File

@@ -50,17 +50,17 @@
"y": 102, "y": 102,
"width": 80, "width": 80,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
"name": "wins", "name": "wins",
"text": "Win:", "text": "tr(lblWinProper):",
"x": 330, "x": 330,
"y": 102, "y": 102,
"width": 80, "width": 80,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
@@ -69,17 +69,17 @@
"y": 113, "y": 113,
"width": 80, "width": 80,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
"name": "loss", "name": "loss",
"text": "Loss:", "text": "tr(lblLossProper):",
"x": 330, "x": 330,
"y": 113, "y": 113,
"width": 80, "width": 80,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
@@ -88,17 +88,17 @@
"y": 125, "y": 125,
"width": 80, "width": 80,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
"name": "winloss", "name": "winloss",
"text": "Win Loss Ratio:", "text": "tr(lblWinProper)/tr(lblLossProper):",
"x": 330, "x": 330,
"y": 125, "y": 125,
"width": 80, "width": 80,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Scroll", "type": "Scroll",
@@ -112,7 +112,7 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 335, "x": 335,
@@ -143,12 +143,11 @@
"y": 20, "y": 20,
"width": 80, "width": 80,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
"name": "lifePoints", "name": "[BLACK]lifePoints",
"font": "black",
"width": 64, "width": 64,
"height": 16, "height": 16,
"x": 410, "x": 410,
@@ -157,7 +156,7 @@
{ {
"type": "Label", "type": "Label",
"name": "money", "name": "money",
"font": "black", "fontColor":"black",
"width": 64, "width": 64,
"height": 16, "height": 16,
"x": 410, "x": 410,

View File

@@ -50,17 +50,17 @@
"y": 56, "y": 56,
"width": 26, "width": 26,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
"name": "wins", "name": "wins",
"text": "Win:", "text": "tr(lblWinProper):",
"x": 98, "x": 98,
"y": 56, "y": 56,
"width": 60, "width": 60,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
@@ -69,17 +69,17 @@
"y": 68, "y": 68,
"width": 26, "width": 26,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
"name": "loss", "name": "loss",
"text": "Loss:", "text": "tr(lblLossProper):",
"x": 98, "x": 98,
"y": 68, "y": 68,
"width": 60, "width": 60,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
@@ -88,22 +88,22 @@
"y": 80, "y": 80,
"width": 26, "width": 26,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Label", "type": "Label",
"name": "winloss", "name": "winloss",
"text": "Win Loss Ratio:", "text": "tr(lblWinProper)/tr(lblLossProper):",
"x": 98, "x": 98,
"y": 80, "y": 80,
"width": 60, "width": 60,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "Back", "text": "tr(lblBack)",
"width": 260, "width": 260,
"height": 30, "height": 30,
"x": 5, "x": 5,
@@ -116,7 +116,7 @@
"y": 4, "y": 4,
"width": 80, "width": 80,
"height": 24, "height": 24,
"font": "black" "fontColor":"black"
}, },
{ {
"type": "Image", "type": "Image",
@@ -139,7 +139,7 @@
{ {
"type": "Label", "type": "Label",
"name": "lifePoints", "name": "lifePoints",
"font": "black", "fontColor":"black",
"width": 64, "width": 64,
"height": 16, "height": 16,
"x": 118, "x": 118,
@@ -148,7 +148,7 @@
{ {
"type": "Label", "type": "Label",
"name": "money", "name": "money",
"font": "black", "fontColor":"black",
"width": 64, "width": 64,
"height": 16, "height": 16,
"x": 118, "x": 118,

View File

@@ -477,7 +477,7 @@
{ {
"name": "Change", "name": "Change",
"equipmentSlot": "Right", "equipmentSlot": "Right",
"iconName": "Gold", "iconName": "GoldStack",
"effect": { "effect": {
"startBattleWithCard": [ "startBattleWithCard": [
"c_a_gold_draw" "c_a_gold_draw"

View File

@@ -19,8 +19,8 @@
"rewards": [ "rewards": [
{ "type": "item","count":1, "itemName": "White rune" }, { "type": "item","count":1, "itemName": "White rune" },
{ "type": "item","count":1, "itemName": "White Staff" }, { "type": "item","count":1, "itemName": "White Staff" },
{ "type": "mana","count":25, }, { "type": "mana","count":2 },
{ "type": "life","count":1, } { "type": "life","count":1 }
] ]
@@ -45,8 +45,8 @@
"rewards": [ "rewards": [
{ "type": "item","count":1, "itemName": "Red rune" }, { "type": "item","count":1, "itemName": "Red rune" },
{ "type": "item","count":1, "itemName": "Red Staff" }, { "type": "item","count":1, "itemName": "Red Staff" },
{ "type": "mana","count":25, }, { "type": "mana","count":2 },
{ "type": "life","count":1, } { "type": "life","count":1 }
] ]
@@ -71,8 +71,8 @@
"rewards": [ "rewards": [
{ "type": "item","count":1, "itemName": "Blue rune" }, { "type": "item","count":1, "itemName": "Blue rune" },
{ "type": "item","count":1, "itemName": "Blue Staff" }, { "type": "item","count":1, "itemName": "Blue Staff" },
{ "type": "mana","count":25, }, { "type": "mana","count":2 },
{ "type": "life","count":1, } { "type": "life","count":1 }
] ]
@@ -98,12 +98,12 @@
"rewards": [ "rewards": [
{ "type": "item","count":1, "itemName": "Black rune" }, { "type": "item","count":1, "itemName": "Black rune" },
{ "type": "item","count":1, "itemName": "Black Staff" }, { "type": "item","count":1, "itemName": "Black Staff" },
{ "type": "mana","count":25, }, { "type": "mana","count":2 },
{ "type": "life","count":1, } { "type": "life","count":1 }
] ]
} },
{ {
"name":"GreenEquipment", "name":"GreenEquipment",
"spriteAtlas":"maps/tileset/buildings.atlas", "spriteAtlas":"maps/tileset/buildings.atlas",
@@ -125,13 +125,12 @@
"rewards": [ "rewards": [
{ "type": "item","count":1, "itemName": "Green rune" }, { "type": "item","count":1, "itemName": "Green rune" },
{ "type": "item","count":1, "itemName": "Green Staff" }, { "type": "item","count":1, "itemName": "Green Staff" },
{ "type": "mana","count":25, }, { "type": "mana","count":2 },
{ "type": "life","count":1, } { "type": "life","count":1 }
] ]
} },{
,{
"name":"Equipment", "name":"Equipment",
"spriteAtlas":"maps/tileset/buildings.atlas", "spriteAtlas":"maps/tileset/buildings.atlas",
"sprite":"EquipmentShop", "sprite":"EquipmentShop",

View File

@@ -1,24 +1,24 @@
package forge.util; package forge.util;
import java.io.File;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.RejectedExecutionException;
import forge.card.CardEdition;
import forge.item.IPaperCard;
import org.apache.commons.lang3.tuple.Pair;
import forge.ImageKeys; import forge.ImageKeys;
import forge.StaticData; import forge.StaticData;
import forge.card.CardEdition;
import forge.gui.FThreads; import forge.gui.FThreads;
import forge.item.IPaperCard;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.localinstance.properties.ForgeConstants; import forge.localinstance.properties.ForgeConstants;
import forge.localinstance.properties.ForgePreferences; import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel; import forge.model.FModel;
import org.apache.commons.lang3.tuple.Pair;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.RejectedExecutionException;
public abstract class ImageFetcher { public abstract class ImageFetcher {
private static final ExecutorService threadPool = ThreadUtil.getServicePool();
// see https://scryfall.com/docs/api/languages and // see https://scryfall.com/docs/api/languages and
// https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes // https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
private static final HashMap<String, String> langCodeMap = new HashMap<>(); private static final HashMap<String, String> langCodeMap = new HashMap<>();
@@ -209,7 +209,7 @@ public abstract class ImageFetcher {
} }
}; };
try { try {
threadPool.submit(getDownloadTask(downloadUrls.toArray(new String[0]), destPath, notifyObservers)); ThreadUtil.getServicePool().submit(getDownloadTask(downloadUrls.toArray(new String[0]), destPath, notifyObservers));
} catch (RejectedExecutionException re) { } catch (RejectedExecutionException re) {
re.printStackTrace(); re.printStackTrace();
} }