Merge pull request #1586 from TrueFuFLeaderG/adventure

Adventure ui update and some fixes
This commit is contained in:
Anthony Calosa
2022-09-26 08:29:24 +08:00
committed by GitHub
101 changed files with 6279 additions and 2501 deletions

View File

@@ -9,26 +9,17 @@ import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.controllers.ControllerAdapter; import com.badlogic.gdx.controllers.ControllerAdapter;
import com.badlogic.gdx.controllers.ControllerListener; import com.badlogic.gdx.controllers.ControllerListener;
import com.badlogic.gdx.controllers.Controllers; import com.badlogic.gdx.controllers.Controllers;
import com.badlogic.gdx.graphics.Cursor; import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.TextureData;
import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Clipboard; import com.badlogic.gdx.utils.Clipboard;
import forge.adventure.scene.*; import forge.adventure.scene.*;
import forge.adventure.stage.MapStage;
import forge.adventure.util.Config; import forge.adventure.util.Config;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.animation.ForgeAnimation; import forge.animation.ForgeAnimation;
import forge.assets.Assets; import forge.assets.*;
import forge.assets.AssetsDownloader;
import forge.assets.FSkin;
import forge.assets.FSkinFont;
import forge.assets.ImageCache;
import forge.error.ExceptionHandler; import forge.error.ExceptionHandler;
import forge.gamemodes.limited.BoosterDraft; import forge.gamemodes.limited.BoosterDraft;
import forge.gui.FThreads; import forge.gui.FThreads;
@@ -1003,8 +994,6 @@ public class Forge implements ApplicationListener {
} }
storeScreen(); storeScreen();
sceneWasSwapped = true; sceneWasSwapped = true;
if (newScene instanceof GameScene)
MapStage.getInstance().clearIsInMap();
currentScene = newScene; currentScene = newScene;
currentScene.enter(); currentScene.enter();
@@ -1420,9 +1409,6 @@ public class Forge implements ApplicationListener {
hasGamepad = true; hasGamepad = true;
if (controller.canVibrate()) if (controller.canVibrate())
controller.startVibration(200,1); controller.startVibration(200,1);
if (Forge.isMobileAdventureMode && Forge.currentScene instanceof UIScene) {
((UIScene) Forge.currentScene).selectCurrent();
}
} }
@Override @Override
public void disconnected(Controller controller) { public void disconnected(Controller controller) {

View File

@@ -13,6 +13,9 @@ public class DialogData {
public String loctext; //References a localized string for the text body. public String loctext; //References a localized string for the text body.
public DialogData[] options; //List of sub-dialogs. Show up as options in the current one. public DialogData[] options; //List of sub-dialogs. Show up as options in the current one.
public String voiceFile;
static public class ActionData { static public class ActionData {
static public class QuestFlag { static public class QuestFlag {
public String key; public String key;

View File

@@ -412,7 +412,8 @@ public class AdventurePlayer implements Serializable, SaveFileContent {
addGold(reward.getCount()); addGold(reward.getCount());
break; break;
case Item: case Item:
inventoryItems.add(reward.getItem().name); if(reward.getItem()!=null)
inventoryItems.add(reward.getItem().name);
break; break;
case Life: case Life:
addMaxLife(reward.getCount()); addMaxLife(reward.getCount());

View File

@@ -1,6 +1,5 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Actor;
@@ -38,8 +37,6 @@ public class ArenaScene extends UIScene implements IAfterMatch {
} }
private final TextraButton doneButton; private final TextraButton doneButton;
Dialog startDialog;
Dialog areYouSureDialog;
private final TextraLabel goldLabel; private final TextraLabel goldLabel;
private final Group arenaPlane; private final Group arenaPlane;
@@ -81,7 +78,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
if(!arenaStarted) if(!arenaStarted)
ArenaScene.this.done(); ArenaScene.this.done();
else else
areYouSureDialog.show(stage); showAreYouSure();
}); });
ui.onButtonPress("start", () -> startButton()); ui.onButtonPress("start", () -> startButton());
doneButton = ui.findActor("done"); doneButton = ui.findActor("done");
@@ -91,38 +88,15 @@ public class ArenaScene extends UIScene implements IAfterMatch {
startButton=ui.findActor("start"); startButton=ui.findActor("start");
startDialog = new Dialog(Forge.getLocalizer().getMessage("lblStart"), Controls.getSkin())
{
protected void result(Object object)
{
if(object!=null&&object.equals(true))
startArena();
startDialog.hide();
}
};
startDialog.text("Do you want to go into the Arena?");
startDialog.button(Forge.getLocalizer().getMessage("lblYes"), true);
startDialog.button(Forge.getLocalizer().getMessage("lblNo"), false);
ui.addActor(startDialog);
startDialog.hide();
startDialog.getColor().a = 0;
areYouSureDialog= new Dialog(Forge.getLocalizer().getMessage("lblConcedeTitle"), Controls.getSkin()) }
{
protected void result(Object object) private void showAreYouSure() {
{
if(object!=null&&object.equals(true)) Dialog areYouSureDialog= prepareDialog(Forge.getLocalizer().getMessage("lblConcedeTitle"),ButtonYes|ButtonNo,()->loose());
loose();
startDialog.hide();
}
};
areYouSureDialog.text(Forge.getLocalizer().getMessage("lblConcedeCurrentGame")); areYouSureDialog.text(Forge.getLocalizer().getMessage("lblConcedeCurrentGame"));
areYouSureDialog.button(Forge.getLocalizer().getMessage("lblYes"), true); showDialog(areYouSureDialog);
areYouSureDialog.button(Forge.getLocalizer().getMessage("lblNo"), false);
ui.addActor(areYouSureDialog);
areYouSureDialog.hide();
areYouSureDialog.getColor().a = 0;
} }
private void loose() { private void loose() {
@@ -134,7 +108,9 @@ public class ArenaScene extends UIScene implements IAfterMatch {
private void startButton() { private void startButton() {
if(roundsWon ==0) if(roundsWon ==0)
{ {
startDialog.show(stage); Dialog startDialog = prepareDialog(Forge.getLocalizer().getMessage("lblStart"), ButtonYes|ButtonNo,()->startArena());
startDialog.text("Do you want to go into the Arena?");
showDialog(startDialog);
} }
else else
{ {
@@ -271,13 +247,6 @@ public class ArenaScene extends UIScene implements IAfterMatch {
} }
@Override
public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
done();
}
return true;
}
Array<EnemySprite> enemies = new Array<>(); Array<EnemySprite> enemies = new Array<>();
Array<Actor> fighters = new Array<>(); Array<Actor> fighters = new Array<>();

View File

@@ -1,9 +1,11 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
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;
@@ -17,11 +19,10 @@ import forge.adventure.util.Current;
public class DeckSelectScene extends UIScene { public class DeckSelectScene extends UIScene {
private final IntMap<TextraButton> buttons = new IntMap<>(); private final IntMap<TextraButton> buttons = new IntMap<>();
Color defColor; Color defColor;
Dialog dialog;
TextField textInput; TextField textInput;
Table layout; Table layout;
TextraLabel header; TextraLabel header;
TextraButton back, edit, rename, dialogRenameBtn, dialogAbortBtn; TextraButton back, edit, rename;
int currentSlot = 0; int currentSlot = 0;
ScrollPane scrollPane; ScrollPane scrollPane;
@@ -44,20 +45,7 @@ public class DeckSelectScene extends UIScene {
for (int i = 0; i < AdventurePlayer.NUMBER_OF_DECKS; i++) for (int i = 0; i < AdventurePlayer.NUMBER_OF_DECKS; i++)
addDeckSlot(Forge.getLocalizer().getMessage("lblDeck")+": " + (i + 1), i); addDeckSlot(Forge.getLocalizer().getMessage("lblDeck")+": " + (i + 1), i);
dialog = Controls.newDialog(Forge.getLocalizer().getMessage("lblSave"));
textInput = Controls.newTextField(""); 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();
dialogRenameBtn = Controls.newTextButton(Forge.getLocalizer().getMessage("lblRename"), () -> DeckSelectScene.this.rename());
dialog.getButtonTable().add(dialogRenameBtn).align(Align.left).padLeft(15);
dialogAbortBtn = Controls.newTextButton(Forge.getLocalizer().getMessage("lblAbort"), () -> dialog.hide());
dialog.getButtonTable().add(dialogAbortBtn).align(Align.right).padRight(15);
dialog.getColor().a = 0f;
dialog.hide();
back = ui.findActor("return"); back = ui.findActor("return");
edit = ui.findActor("edit"); edit = ui.findActor("edit");
rename = ui.findActor("rename"); rename = ui.findActor("rename");
@@ -65,8 +53,7 @@ public class DeckSelectScene extends UIScene {
ui.onButtonPress("edit", () -> DeckSelectScene.this.edit()); ui.onButtonPress("edit", () -> DeckSelectScene.this.edit());
ui.onButtonPress("rename", () -> { ui.onButtonPress("rename", () -> {
textInput.setText(Current.player().getSelectedDeck().getName()); textInput.setText(Current.player().getSelectedDeck().getName());
dialog.show(stage); showRenameDialog();
selectActor(textInput, false);
}); });
defColor = ui.findActor("return").getColor(); defColor = ui.findActor("return").getColor();
@@ -74,6 +61,17 @@ public class DeckSelectScene extends UIScene {
scrollPane.setActor(layout); scrollPane.setActor(layout);
} }
private void showRenameDialog() {
Dialog dialog = prepareDialog(Forge.getLocalizer().getMessage("lblRenameDeck"),ButtonOk|ButtonAbort,()->DeckSelectScene.this.rename());
dialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblNameYourSaveFile"))).colspan(2);
dialog.getContentTable().row();
dialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName")+": ")).align(Align.left);
dialog.getContentTable().add(textInput).fillX().expandX();
dialog.getContentTable().row();
showDialog(dialog);
}
private TextraButton addDeckSlot(String name, int i) { private TextraButton addDeckSlot(String name, int i) {
TextraButton button = Controls.newTextButton("-"); TextraButton button = Controls.newTextButton("-");
button.addListener(new ClickListener() { button.addListener(new ClickListener() {
@@ -91,13 +89,11 @@ public class DeckSelectScene extends UIScene {
layout.add(Controls.newLabel(name)).expandX().pad(2); layout.add(Controls.newLabel(name)).expandX().pad(2);
layout.add(button).expandX().pad(2); layout.add(button).expandX().pad(2);
buttons.put(i, button); buttons.put(i, button);
addToSelectable(new Selectable(button));
layout.row(); layout.row();
return button; return button;
} }
public void back() {
Forge.switchToLast();
}
public boolean select(int slot) { public boolean select(int slot) {
currentSlot = slot; currentSlot = slot;
@@ -115,30 +111,15 @@ public class DeckSelectScene extends UIScene {
} }
@Override
public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
back();
}
return true;
}
@Override @Override
public void enter() { public void enter() {
clearActorObjects();
for (int i = 0; i < AdventurePlayer.NUMBER_OF_DECKS; i++) { for (int i = 0; i < AdventurePlayer.NUMBER_OF_DECKS; i++) {
if (buttons.containsKey(i)) { if (buttons.containsKey(i)) {
buttons.get(i).setText(Current.player().getDeck(i).getName()); buttons.get(i).setText(Current.player().getDeck(i).getName());
buttons.get(i).getTextraLabel().layout(); buttons.get(i).getTextraLabel().layout();
addActorObject(buttons.get(i));
} }
} }
addActorObject(back);
addActorObject(rename);
addActorObject(edit);
addActorObject(textInput);
addActorObject(dialogRenameBtn);
addActorObject(dialogAbortBtn);
select(Current.player().getSelectedDeckIndex()); select(Current.player().getSelectedDeckIndex());
super.enter(); super.enter();
} }
@@ -146,7 +127,6 @@ public class DeckSelectScene extends UIScene {
private void rename() { private void rename() {
dialog.hide();
String text = textInput.getText(); String text = textInput.getText();
Current.player().renameDeck(text); Current.player().renameDeck(text);
buttons.get(currentSlot).setText(Current.player().getDeck(currentSlot).getName()); buttons.get(currentSlot).setText(Current.player().getDeck(currentSlot).getName());

View File

@@ -3,6 +3,7 @@ package forge.adventure.scene;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.GL20;
import forge.Forge; import forge.Forge;
import forge.adventure.stage.MapStage;
import forge.adventure.stage.WorldStage; import forge.adventure.stage.WorldStage;
/** /**
@@ -44,6 +45,7 @@ public class GameScene extends HudScene {
@Override @Override
public void enter() { public void enter() {
MapStage.getInstance().clearIsInMap();
Forge.clearTransitionScreen(); Forge.clearTransitionScreen();
Forge.clearCurrentScreen(); Forge.clearCurrentScreen();
super.enter(); super.enter();

View File

@@ -2,12 +2,13 @@ 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.controllers.Controller;
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.IAfterMatch;
import forge.adventure.stage.MapStage; import forge.adventure.stage.MapStage;
import forge.adventure.util.KeyBinding;
/** /**
* Hud base scene * Hud base scene
@@ -22,10 +23,18 @@ public abstract class HudScene extends Scene implements InputProcessor, IAfterMa
hud = GameHUD.getInstance(); hud = GameHUD.getInstance();
} }
@Override
public void connected(final Controller controller) {
hud.ui.controllerConnected();
}
@Override
public void disconnected(final Controller controller) {
hud.ui.controllerDisconnected();
}
@Override @Override
public boolean leave() { public boolean leave() {
stage.leave(); stage.leave();
return true; return super.leave();
} }
@Override @Override
@@ -33,6 +42,7 @@ public abstract class HudScene extends Scene implements InputProcessor, IAfterMa
Gdx.input.setInputProcessor(this); Gdx.input.setInputProcessor(this);
stage.enter(); stage.enter();
hud.enter(); hud.enter();
super.enter();
} }
@Override @Override
@@ -57,10 +67,8 @@ public abstract class HudScene extends Scene implements InputProcessor, IAfterMa
@Override @Override
public boolean keyDown(int keycode) { public boolean keyDown(int keycode) {
if (Forge.hasGamepad()) { if (MapStage.getInstance().isDialogOnlyInput()) {
if (MapStage.getInstance().isDialogOnlyInput()) { return MapStage.getInstance().dialogInput(keycode);
return MapStage.getInstance().buttonPress(keycode);
}
} }
if (hud.keyDown(keycode)) if (hud.keyDown(keycode))
return true; return true;
@@ -72,12 +80,23 @@ public abstract class HudScene extends Scene implements InputProcessor, IAfterMa
@Override @Override
public boolean keyUp(int keycode) { public boolean keyUp(int keycode) {
if (MapStage.getInstance().isDialogOnlyInput()) {
return true;
}
if (hud.keyUp(keycode)) if (hud.keyUp(keycode))
return true; return true;
if(isInHudOnlyMode()) if(isInHudOnlyMode())
return false; return false;
return stage.keyUp(keycode); return stage.keyUp(keycode);
} }
@Override
public boolean buttonDown(Controller var1, int var2) {
return keyDown(KeyBinding.controllerButtonToKey(var1,var2));
}
@Override
public boolean buttonUp(Controller var1, int var2) {
return keyUp(KeyBinding.controllerButtonToKey(var1,var2));
}
@Override @Override
public boolean keyTyped(char character) { public boolean keyTyped(char character) {
@@ -134,6 +153,11 @@ public abstract class HudScene extends Scene implements InputProcessor, IAfterMa
return stage.scrolled(amountX, amountY); return stage.scrolled(amountX, amountY);
} }
@Override
public boolean axisMoved(Controller controller, int axisIndex, float value) {
return stage.axisMoved(controller, axisIndex, value);
}
@Override @Override
public void setWinner(boolean winner) { public void setWinner(boolean winner) {
stage.setWinner(winner); stage.setWinner(winner);

View File

@@ -1,6 +1,5 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.github.tommyettinger.textra.TextraButton; import com.github.tommyettinger.textra.TextraButton;
import forge.Forge; import forge.Forge;
@@ -71,40 +70,11 @@ public class InnScene extends UIScene {
tempHitPointCost.setDisabled(!purchaseable); tempHitPointCost.setDisabled(!purchaseable);
tempHitPointCost.setText( tempHealthCost+"[+Gold]"); tempHitPointCost.setText( tempHealthCost+"[+Gold]");
clearActorObjects();
addActorObject(tempHitPointCost);
addActorObject(sell);
addActorObject(leave);
} }
private void sell() { private void sell() {
Forge.switchScene(ShopScene.instance()); Forge.switchScene(ShopScene.instance());
} }
@Override
public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
done();
}
if (keycode == Input.Keys.DPAD_RIGHT) {
if (selectedActor == null)
selectActor(tempHitPointCost, false);
else
selectNextActor(false);
} else if ( keycode == Input.Keys.DPAD_LEFT) {
if (selectedActor == null)
selectActor(leave, false);
else
selectPreviousActor(false);
} else if (keycode == Input.Keys.BUTTON_B) {
performTouch(leave);
} else if (keycode == Input.Keys.BUTTON_A) {
performTouch(selectedActor);
}
return true;
}
} }

View File

@@ -1,13 +1,11 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Input;
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.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.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.TextraButton;
import com.github.tommyettinger.textra.TextraLabel; import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
@@ -28,8 +26,6 @@ public class InventoryScene extends UIScene {
Button equipButton; Button equipButton;
TextraButton useButton; TextraButton useButton;
TextraLabel itemDescription; TextraLabel itemDescription;
Dialog confirm;
Dialog useDialog;
private final Table inventory; private final Table inventory;
private final Array<Button> inventoryButtons=new Array<>(); private final Array<Button> inventoryButtons=new Array<>();
private final HashMap<String,Button> equipmentSlots=new HashMap<>(); private final HashMap<String,Button> equipmentSlots=new HashMap<>();
@@ -44,7 +40,7 @@ public class InventoryScene extends UIScene {
equipOverlay = new Texture(Config.instance().getFile(Paths.ITEMS_EQUIP)); equipOverlay = new Texture(Config.instance().getFile(Paths.ITEMS_EQUIP));
ui.onButtonPress("return", () -> done()); ui.onButtonPress("return", () -> done());
leave = ui.findActor("return"); leave = ui.findActor("return");
ui.onButtonPress("delete", () -> confirm.show(stage)); ui.onButtonPress("delete", () -> showConfirm());
ui.onButtonPress("equip", () -> equip()); ui.onButtonPress("equip", () -> equip());
ui.onButtonPress("use", () -> use()); ui.onButtonPress("use", () -> use());
equipButton = ui.findActor("equip"); equipButton = ui.findActor("equip");
@@ -109,45 +105,16 @@ 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("", Controls.getSkin())
{
protected void result(Object object)
{
if(object!=null&&object.equals(true))
delete();
confirm.hide();
}
};
confirm.text( Controls.newLabel(Forge.getLocalizer().getMessage("lblDelete")));
confirm.button(Forge.getLocalizer().getMessage("lblYes"), true);
confirm.button(Forge.getLocalizer().getMessage("lblNo"), false);
ui.addActor(confirm);
confirm.hide();
itemDescription.setWrap(true); itemDescription.setWrap(true);
//makes confirm dialog hidden immediately when you open inventory first time..
confirm.getColor().a = 0;
useDialog = new Dialog("", Controls.getSkin()) }
{
protected void result(Object object)
{
useDialog.hide();
if(object!=null&&object.equals(true))
{
triggerUse();
useDialog.getColor().a = 0;
}
}
};
useDialog.button(Forge.getLocalizer().getMessage("lblYes"), true); private void showConfirm() {
useDialog.button(Forge.getLocalizer().getMessage("lblNo"), false); Dialog confirm = prepareDialog("",ButtonYes|ButtonNo,()->delete());
ui.addActor(useDialog); confirm.text( Controls.newLabel(Forge.getLocalizer().getMessage("lblDelete")));
useDialog.hide(); showDialog(confirm);
useDialog.getColor().a = 0;
} }
private static InventoryScene object; private static InventoryScene object;
@@ -197,11 +164,11 @@ public class InventoryScene extends UIScene {
ConsoleCommandInterpreter.getInstance().command(data.commandOnUse); ConsoleCommandInterpreter.getInstance().command(data.commandOnUse);
} }
private void use() { private void use() {
useDialog.getContentTable().clear();
ItemData data = ItemData.getItem(itemLocation.get(selected)); ItemData data = ItemData.getItem(itemLocation.get(selected));
if(data==null)return; if(data==null)return;
Dialog useDialog = prepareDialog("",ButtonYes|ButtonNo,()->triggerUse());
useDialog.getContentTable().add(Controls.newTextraLabel("Use "+data.name+"?\n"+data.getDescription())); useDialog.getContentTable().add(Controls.newTextraLabel("Use "+data.name+"?\n"+data.getDescription()));
useDialog.show(stage); showDialog(useDialog);
} }
private void setSelected(Button actor) { private void setSelected(Button actor) {
@@ -268,7 +235,7 @@ public class InventoryScene extends UIScene {
} }
private void updateInventory() { private void updateInventory() {
clearActorObjects(); clearSelectable();
inventoryButtons.clear(); inventoryButtons.clear();
inventory.clear(); inventory.clear();
for(int i=0;i<Current.player().getItems().size;i++) { for(int i=0;i<Current.player().getItems().size;i++) {
@@ -277,6 +244,13 @@ public class InventoryScene extends UIScene {
inventory.row(); inventory.row();
Button newActor=createInventorySlot(); Button newActor=createInventorySlot();
inventory.add(newActor).top().left().space(1); inventory.add(newActor).top().left().space(1);
addToSelectable(new Selectable(newActor){
@Override
public void onSelect(UIScene scene) {
setSelected(newActor);
super.onSelect(scene);
}
});
inventoryButtons.add(newActor); inventoryButtons.add(newActor);
ItemData item=ItemData.getItem(Current.player().getItems().get(i)); ItemData item=ItemData.getItem(Current.player().getItems().get(i));
if(item==null) if(item==null)
@@ -310,7 +284,6 @@ public class InventoryScene extends UIScene {
} }
} }
}); });
addActorObject(newActor);
} }
for(Map.Entry<String, Button> slot :equipmentSlots.entrySet()) { for(Map.Entry<String, Button> slot :equipmentSlots.entrySet()) {
if(slot.getValue().getChildren().size>=2) if(slot.getValue().getChildren().size>=2)
@@ -341,32 +314,4 @@ public class InventoryScene extends UIScene {
return button; return button;
} }
@Override
public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
done();
}
if (keycode == Input.Keys.BUTTON_SELECT)
performTouch(ui.findActor("return"));
else if (keycode == Input.Keys.BUTTON_B)
performTouch(ui.findActor("return"));
else if (keycode == Input.Keys.BUTTON_A) {
if (selectedActor instanceof ImageButton) {
performTouch(equipButton);
Timer.schedule(new Timer.Task() {
@Override
public void run() {
selectCurrent();
}
}, 0.25f);
} else {
performTouch(selectedActor);
}
} else if (keycode == Input.Keys.DPAD_RIGHT || keycode == Input.Keys.DPAD_DOWN)
selectNextActor(false);
else if (keycode == Input.Keys.DPAD_LEFT || keycode == Input.Keys.DPAD_UP)
selectPreviousActor(false);
return true;
}
} }

View File

@@ -1,16 +1,11 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Gdx;
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.InputListener;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.TextField; 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 com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.data.DifficultyData; import forge.adventure.data.DifficultyData;
@@ -22,7 +17,6 @@ import forge.adventure.util.UIActor;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.card.ColorSet; import forge.card.ColorSet;
import forge.deck.DeckProxy; import forge.deck.DeckProxy;
import forge.gui.GuiBase;
import forge.localinstance.properties.ForgePreferences; import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil; import forge.player.GamePlayerUtil;
@@ -54,16 +48,6 @@ public class NewGameScene extends UIScene {
selectedName = ui.findActor("nameField"); selectedName = ui.findActor("nameField");
selectedName.setText(NameGenerator.getRandomName("Any", "Any", "")); selectedName.setText(NameGenerator.getRandomName("Any", "Any", ""));
selectedName.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
if (!GuiBase.isAndroid() && showGamepadSelector) {
//show onscreen keyboard
return true;
}
return super.touchDown(event, x, y, pointer, button);
}
});
avatarImage = ui.findActor("avatarPreview"); avatarImage = ui.findActor("avatarPreview");
gender = ui.findActor("gender"); gender = ui.findActor("gender");
mode = ui.findActor("mode"); mode = ui.findActor("mode");
@@ -211,15 +195,10 @@ public class NewGameScene extends UIScene {
return false; return false;
} }
@Override
public void create() {
}
@Override @Override
public void enter() { public void enter() {
updateAvatar(); updateAvatar();
Gdx.input.setInputProcessor(stage); //Start taking input from the ui
if (Forge.createNewAdventureMap) { if (Forge.createNewAdventureMap) {
FModel.getPreferences().setPref(ForgePreferences.FPref.UI_ENABLE_MUSIC, false); FModel.getPreferences().setPref(ForgePreferences.FPref.UI_ENABLE_MUSIC, false);
@@ -233,155 +212,8 @@ public class NewGameScene extends UIScene {
GamePlayerUtil.getGuiPlayer().setName(selectedName.getText()); GamePlayerUtil.getGuiPlayer().setName(selectedName.getText());
Forge.switchScene(GameScene.instance()); Forge.switchScene(GameScene.instance());
} }
clearActorObjects();
addActorObject(selectedName);
addActorObject(race);
addActorObject(gender);
addActorObject(difficulty);
addActorObject(colorId);
addActorObject(mode);
addActorObject(ui.findActor("back"));
addActorObject(ui.findActor("start"));
unselectActors(); unselectActors();
super.enter(); super.enter();
} }
@Override
public boolean pointerMoved(int screenX, int screenY) {
ui.screenToLocalCoordinates(pointer.set(screenX,screenY));
if (showGamepadSelector) {
unselectActors();
showGamepadSelector = false;
}
if (kbVisible)
return super.pointerMoved(screenX, screenY);
updateHovered();
return super.pointerMoved(screenX, screenY);
}
@Override
public boolean keyPressed(int keycode) {
if (Forge.hasGamepad())
showGamepadSelector = true;
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
if(!kbVisible)
back();
}
if (keycode == Input.Keys.BUTTON_SELECT) {
if (showGamepadSelector) {
if(!kbVisible)
performTouch(ui.findActor("back"));
}
} else if (keycode == Input.Keys.BUTTON_START) {
if (showGamepadSelector) {
if(kbVisible)
keyOK();
else
performTouch(ui.findActor("start"));
}
} else if (keycode == Input.Keys.BUTTON_L2) {
if(!kbVisible)
selectedName.setText(NameGenerator.getRandomName("Female", "Any", selectedName.getText()));
} else if (keycode == Input.Keys.BUTTON_R2) {
if(!kbVisible)
selectedName.setText(NameGenerator.getRandomName("Male", "Any", selectedName.getText()));
} else if (keycode == Input.Keys.BUTTON_L1) {
if (showGamepadSelector) {
if (kbVisible)
toggleShiftOrBackspace(true);
else
performTouch(ui.findActor("leftAvatar"));
}
} else if (keycode == Input.Keys.BUTTON_R1) {
if (showGamepadSelector) {
if(kbVisible)
toggleShiftOrBackspace(false);
else
performTouch(ui.findActor("rightAvatar"));
}
} else if (keycode == Input.Keys.DPAD_DOWN) {
if (showGamepadSelector) {
if (kbVisible) {
setSelectedKey(keycode);
} else {
if (selectedActor == mode)
selectActor(selectedName, false);
else if (selectedActor == ui.findActor("back"))
selectActor(ui.findActor("start"), false);
else if (selectedActor == ui.findActor("start"))
selectActor(ui.findActor("back"), false);
else
selectNextActor(false);
}
}
} else if (keycode == Input.Keys.DPAD_UP) {
if (showGamepadSelector) {
if (kbVisible) {
setSelectedKey(keycode);
} else {
if (selectedActor == selectedName)
selectActor(mode, false);
else if (selectedActor == ui.findActor("start"))
selectActor(ui.findActor("back"), false);
else if (selectedActor == ui.findActor("back"))
selectActor(ui.findActor("start"), false);
else
selectPreviousActor(false);
}
}
} else if (keycode == Input.Keys.DPAD_LEFT) {
if (showGamepadSelector) {
if (kbVisible) {
setSelectedKey(keycode);
} else {
if (selectedActor == ui.findActor("back") || selectedActor == ui.findActor("start"))
selectActor(mode, false);
}
}
} else if (keycode == Input.Keys.DPAD_RIGHT) {
if (showGamepadSelector) {
if (kbVisible) {
setSelectedKey(keycode);
} else {
if (!(selectedActor == ui.findActor("back") || selectedActor == ui.findActor("start")))
selectActor(ui.findActor("start"), false);
}
}
} else if (keycode == Input.Keys.BUTTON_A) {
if (showGamepadSelector) {
if (kbVisible) {
if (selectedKey != null)
performTouch(selectedKey);
} else {
if (selectedActor != null) {
if (selectedActor instanceof TextraButton)
performTouch(selectedActor);
else if (selectedActor instanceof TextField && !kbVisible) {
lastInputField = selectedActor;
showOnScreenKeyboard("");
}
}
}
}
} else if (keycode == Input.Keys.BUTTON_B) {
if (showGamepadSelector) {
if (kbVisible) {
hideOnScreenKeyboard();
} else {
performTouch(ui.findActor("back"));
}
}
} else if (keycode == Input.Keys.BUTTON_X) {
if (showGamepadSelector) {
if(!kbVisible)
if (selectedActor != null && selectedActor instanceof Selector)
performTouch(((Selector) selectedActor).getLeftArrow());
}
} else if (keycode == Input.Keys.BUTTON_Y) {
if (showGamepadSelector) {
if(!kbVisible)
if (selectedActor != null && selectedActor instanceof Selector)
performTouch(((Selector) selectedActor).getRightArrow());
}
}
return true;
}
} }

View File

@@ -1,6 +1,5 @@
package forge.adventure.scene; package forge.adventure.scene;
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.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
@@ -15,7 +14,6 @@ import forge.adventure.character.EnemySprite;
import forge.adventure.data.EnemyData; import forge.adventure.data.EnemyData;
import forge.adventure.data.WorldData; import forge.adventure.data.WorldData;
import forge.adventure.player.AdventurePlayer; import forge.adventure.player.AdventurePlayer;
import forge.adventure.stage.GameHUD;
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;
@@ -40,6 +38,7 @@ public class PlayerStatisticScene extends UIScene {
TextraLabel 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");
@@ -89,29 +88,7 @@ public class PlayerStatisticScene extends UIScene {
} }
@Override
public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
back();
}
if (keycode == Input.Keys.BUTTON_B)
performTouch(ui.findActor("return"));
else if (keycode == Input.Keys.BUTTON_A)
performTouch(selectedActor);
else if (keycode == Input.Keys.BUTTON_L1 || keycode == Input.Keys.DPAD_UP) {
scrollPane.fling(1f, 0, -300);
} else if (keycode == Input.Keys.BUTTON_R1 || keycode == Input.Keys.DPAD_DOWN) {
scrollPane.fling(1f, 0, +300);
} else if (keycode == Input.Keys.DPAD_LEFT || keycode == Input.Keys.DPAD_RIGHT || keycode == Input.Keys.DPAD_UP || keycode == Input.Keys.DPAD_DOWN)
selectActor(back, false);
return true;
}
public boolean back() {
GameHUD.getInstance().getTouchpad().setVisible(false);
Forge.switchToLast();
return true;
}
private TextureRegion getColorFrame(ColorSet color){ private TextureRegion getColorFrame(ColorSet color){
String colorName= "color_"; String colorName= "color_";
if(color.hasWhite()) if(color.hasWhite())
@@ -188,9 +165,4 @@ public class PlayerStatisticScene extends UIScene {
} }
@Override
public void create() {
}
} }

View File

@@ -1,7 +1,6 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
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.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
@@ -53,9 +52,40 @@ public class RewardScene extends UIScene {
goldLabel=ui.findActor("gold"); goldLabel=ui.findActor("gold");
ui.onButtonPress("done", () -> RewardScene.this.done()); ui.onButtonPress("done", () -> RewardScene.this.done());
ui.onButtonPress("detail",()->RewardScene.this.toggleToolTip());
doneButton = ui.findActor("done"); doneButton = ui.findActor("done");
} }
private void toggleToolTip() {
Selectable selectable=getSelected();
if(selectable==null)
return;
RewardActor actor;
if(selectable.actor instanceof BuyButton)
{
actor= ((BuyButton) selectable.actor).reward;
}
else if (selectable.actor instanceof RewardActor)
{
actor= (RewardActor) selectable.actor;
}
else
{
return;
}
if(actor.toolTipIsVisible())
{
actor.hideTooltip();
}
else
{
if(!actor.isFlipped())
actor.showTooltip();
}
}
boolean doneClicked = false, shown = false; boolean doneClicked = false, shown = false;
float flipCountDown = 1.0f; float flipCountDown = 1.0f;
float exitCountDown = 0.0f; //Serves as additional check for when scene is exiting, so you can't double tap too fast. float exitCountDown = 0.0f; //Serves as additional check for when scene is exiting, so you can't double tap too fast.
@@ -139,59 +169,6 @@ public class RewardScene extends UIScene {
} }
} }
} }
@Override
public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
done();
}
if (keycode == Input.Keys.BUTTON_B || keycode == Input.Keys.BUTTON_START)
showLootOrDone();
else if (keycode == Input.Keys.BUTTON_A)
performTouch(selectedActor);
else if (keycode == Input.Keys.DPAD_RIGHT) {
hideTooltips();
selectNextActor(false);
if (selectedActor != null && Type.Loot == type) {
selectedActor.fire(eventEnter);
}
showHideTooltips();
} else if (keycode == Input.Keys.DPAD_LEFT) {
hideTooltips();
selectPreviousActor(false);
if (selectedActor != null && Type.Loot == type) {
selectedActor.fire(eventEnter);
}
showHideTooltips();
} else if (keycode == Input.Keys.BUTTON_Y) {
showTooltips = !showTooltips;
showHideTooltips();
}
return true;
}
private void showHideTooltips() {
if (selectedActor instanceof RewardActor) {
if (showTooltips) {
if (((RewardActor) selectedActor).isFlipped())
((RewardActor) selectedActor).showTooltip();
} else {
((RewardActor) selectedActor).hideTooltip();
}
} else if (selectedActor instanceof BuyButton) {
if (showTooltips)
((BuyButton) selectedActor).reward.showTooltip();
else
((BuyButton) selectedActor).reward.hideTooltip();
}
}
private void hideTooltips() {
if (selectedActor instanceof RewardActor) {
((RewardActor) selectedActor).hideTooltip();
} else if (selectedActor instanceof BuyButton) {
((BuyButton) selectedActor).reward.hideTooltip();
}
}
private void showLootOrDone() { private void showLootOrDone() {
boolean exit = true; boolean exit = true;
for (Actor actor : new Array.ArrayIterator<>(generated)) { for (Actor actor : new Array.ArrayIterator<>(generated)) {
@@ -230,7 +207,7 @@ public class RewardScene extends UIScene {
public void loadRewards(Array<Reward> newRewards, Type type, ShopActor shopActor) { public void loadRewards(Array<Reward> newRewards, Type type, ShopActor shopActor) {
clearActorObjects(); clearSelectable();
this.type = type; this.type = type;
doneClicked = false; doneClicked = false;
for (Actor actor : new Array.ArrayIterator<>(generated)) { for (Actor actor : new Array.ArrayIterator<>(generated)) {
@@ -244,7 +221,7 @@ public class RewardScene extends UIScene {
Actor card = ui.findActor("cards"); Actor card = ui.findActor("cards");
if(type==Type.Shop) { if(type==Type.Shop) {
goldLabel.setText("Gold:"+Current.player().getGold()); goldLabel.setText(Current.player().getGold()+"[+Gold]");
Actor background = ui.findActor("market_background"); Actor background = ui.findActor("market_background");
if(background!=null) if(background!=null)
background.setVisible(true); background.setVisible(true);
@@ -361,14 +338,14 @@ public class RewardScene extends UIScene {
if (currentRow != ((i + 1) / numberOfColumns)) if (currentRow != ((i + 1) / numberOfColumns))
yOff += doneButton.getHeight(); yOff += doneButton.getHeight();
TextraButton buyCardButton = new BuyButton(shopActor.getObjectId(), i, shopActor.isUnlimited()?null:shopActor.getMapStage().getChanges(), actor, doneButton); BuyButton 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);
addActorObject(buyCardButton); addToSelectable(buyCardButton);
} }
} else { } else {
addActorObject(actor); addToSelectable(actor);
} }
generated.add(actor); generated.add(actor);
if (!skipCard) { if (!skipCard) {
@@ -379,6 +356,7 @@ public class RewardScene extends UIScene {
updateBuyButtons(); updateBuyButtons();
} }
private void updateBuyButtons() { private void updateBuyButtons() {
for (Actor actor : new Array.ArrayIterator<>(generated)) { for (Actor actor : new Array.ArrayIterator<>(generated)) {
if (actor instanceof BuyButton) { if (actor instanceof BuyButton) {
@@ -391,7 +369,7 @@ public class RewardScene extends UIScene {
private final int objectID; private final int objectID;
private final int index; private final int index;
private final PointOfInterestChanges changes; private final PointOfInterestChanges changes;
RewardActor reward; public RewardActor reward;
int price; int price;
void update() { void update() {

View File

@@ -1,6 +1,5 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
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;
@@ -34,19 +33,20 @@ 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<TextraButton> buttons = new IntMap<>(); private static final int NUMBEROFSAVESLOTS = 11;
private final IntMap<Selectable<TextraButton>> buttons = new IntMap<>();
IntMap<WorldSaveHeader> previews = new IntMap<>(); IntMap<WorldSaveHeader> previews = new IntMap<>();
Color defColor;
Table layout; Table layout;
Modes mode; Modes mode;
Dialog dialog;
TextField textInput; TextField textInput;
TextraLabel header; TextraLabel header;
int currentSlot = -3, lastSelectedSlot = 0; int currentSlot = 0, lastSelectedSlot = 0;
Image previewImage; Image previewImage;
TextraLabel previewDate; TextraLabel previewDate;
Image previewBorder; Image previewBorder;
TextraButton saveLoadButton, back, quickSave, autoSave, dialogSaveBtn, dialogAbortBtn; TextraButton saveLoadButton, back;
Selectable<TextraButton> quickSave;
Selectable<TextraButton> autoSave;
Actor lastHighlightedSave; Actor lastHighlightedSave;
SelectBox difficulty; SelectBox difficulty;
ScrollPane scrollPane; ScrollPane scrollPane;
@@ -56,7 +56,6 @@ public class SaveLoadScene extends UIScene {
layout = new Table(); layout = new Table();
stage.addActor(layout); stage.addActor(layout);
dialog = Controls.newDialog(Forge.getLocalizer().getMessage("lblSave"));
textInput = Controls.newTextField(""); textInput = Controls.newTextField("");
int c = 0; int c = 0;
String[] diffList = new String[Config.instance().getConfigData().difficulties.length]; String[] diffList = new String[Config.instance().getConfigData().difficulties.length];
@@ -69,19 +68,7 @@ public class SaveLoadScene extends UIScene {
//DifficultyData difficulty1 = Config.instance().getConfigData().difficulties[difficulty.getSelectedIndex()]; //DifficultyData difficulty1 = Config.instance().getConfigData().difficulties[difficulty.getSelectedIndex()];
return null; 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"); previewImage = ui.findActor("preview");
previewDate = ui.findActor("saveDate"); previewDate = ui.findActor("saveDate");
header = Controls.newTextraLabel(Forge.getLocalizer().getMessage("lblSave")); header = Controls.newTextraLabel(Forge.getLocalizer().getMessage("lblSave"));
@@ -90,7 +77,7 @@ public class SaveLoadScene extends UIScene {
layout.row(); layout.row();
autoSave = addSaveSlot(Forge.getLocalizer().getMessage("lblAutoSave"), WorldSave.AUTO_SAVE_SLOT); autoSave = addSaveSlot(Forge.getLocalizer().getMessage("lblAutoSave"), WorldSave.AUTO_SAVE_SLOT);
quickSave = addSaveSlot(Forge.getLocalizer().getMessage("lblQuickSave"), WorldSave.QUICK_SAVE_SLOT); quickSave = addSaveSlot(Forge.getLocalizer().getMessage("lblQuickSave"), WorldSave.QUICK_SAVE_SLOT);
for (int i = 1; i < 11; i++) for (int i = 1; i < NUMBEROFSAVESLOTS; i++)
addSaveSlot(Forge.getLocalizer().getMessage("lblSlot") + ": " + i, i); addSaveSlot(Forge.getLocalizer().getMessage("lblSlot") + ": " + i, i);
saveLoadButton = ui.findActor("save"); saveLoadButton = ui.findActor("save");
@@ -99,8 +86,6 @@ public class SaveLoadScene extends UIScene {
back = ui.findActor("return"); back = ui.findActor("return");
ui.onButtonPress("return", () -> SaveLoadScene.this.back()); ui.onButtonPress("return", () -> SaveLoadScene.this.back());
defColor = saveLoadButton.getColor();
scrollPane = ui.findActor("saveSlots"); scrollPane = ui.findActor("saveSlots");
scrollPane.setActor(layout); scrollPane.setActor(layout);
ui.addActor(difficulty); ui.addActor(difficulty);
@@ -120,33 +105,58 @@ public class SaveLoadScene extends UIScene {
return object; return object;
} }
public class SaveSlot extends Selectable<TextraButton>
{
private int slotNumber;
private TextraButton addSaveSlot(String name, int i) { public SaveSlot( int slotNumber) {
layout.add(Controls.newLabel(name)).align(Align.left).pad(2, 5, 2, 10); super(Controls.newTextButton("..."));
TextraButton button = Controls.newTextButton("..."); this.slotNumber = slotNumber;
button.addListener(new ClickListener() { SaveSlot self=this;
@Override actor.addListener(new ClickListener() {
public void clicked(InputEvent event, float x, float y) { @Override
try { public void clicked(InputEvent event, float x, float y) {
if (!button.isDisabled()) try {
select(i); if (!actor.isDisabled())
} catch (Exception e) { {
e.printStackTrace(); selectActor(self);
}
} catch (Exception e) {
e.printStackTrace();
}
} }
} });
}); }
layout.add(button).fill(true,false).expand(true,false).align(Align.left).expandX(); @Override
public void onSelect(UIScene scene)
{
super.onSelect(scene);
updateSlot(slotNumber);
}
}
private Selectable<TextraButton> addSaveSlot(String name, int i) {
layout.add(Controls.newLabel(name)).align(Align.left).pad(2, 5, 2, 10);
SaveSlot button = new SaveSlot(i);
layout.add(button.actor).fill(true,false).expand(true,false).align(Align.left).expandX();
buttons.put(i, button); buttons.put(i, button);
layout.row(); layout.row();
addToSelectable(button) ;
return button; return button;
} }
public void back() {
Forge.switchToLast();
}
public boolean select(int slot) { public boolean select(int slot) {
if(!buttons.containsKey(slot))
return false;
selectActor(buttons.get(slot));
return updateSlot(slot);
}
private boolean updateSlot(int slot) {
currentSlot = slot; currentSlot = slot;
if (slot > 0) if (slot > 0)
lastSelectedSlot = slot; lastSelectedSlot = slot;
@@ -169,14 +179,6 @@ public class SaveLoadScene extends UIScene {
if (previewDate != null) if (previewDate != null)
previewDate.setVisible(false); previewDate.setVisible(false);
} }
for (IntMap.Entry<TextraButton> butt : new IntMap.Entries<TextraButton>(buttons)) {
butt.value.setColor(defColor);
}
if (buttons.containsKey(slot)) {
TextraButton button = buttons.get(slot);
button.setColor(Color.RED);
selectActor(button, false);
}
return true; return true;
} }
@@ -186,9 +188,16 @@ public class SaveLoadScene extends UIScene {
case Save: case Save:
if (currentSlot > 0) { if (currentSlot > 0) {
//prevent NPE, allowed saveslot is 1 to 10.. //prevent NPE, allowed saveslot is 1 to 10..
textInput.setText(buttons.get(currentSlot).getText().toString()); textInput.setText(buttons.get(currentSlot).actor.getText().toString());
dialog.show(stage);
selectActor(textInput, false); Dialog dialog=prepareDialog(Forge.getLocalizer().getMessage("lblSave"),ButtonOk|ButtonAbort,() -> SaveLoadScene.this.save());
dialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblNameYourSaveFile"))).colspan(2).pad(2, 15, 2, 15);
dialog.getContentTable().row();
dialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName") + ": ")).align(Align.left).pad(2, 15, 2, 2);
dialog.getContentTable().add(textInput).fillX().expandX().padRight(15);
dialog.getContentTable().row();
showDialog(dialog);
stage.setKeyboardFocus(textInput); stage.setKeyboardFocus(textInput);
} }
break; break;
@@ -228,143 +237,11 @@ public class SaveLoadScene extends UIScene {
} }
} }
public boolean saveAbort() {
dialog.hide();
return true;
}
@Override
public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
back();
}
if (kbVisible) {
if (keycode == Input.Keys.BUTTON_START)
keyOK();
else if (keycode == Input.Keys.BUTTON_L1)
toggleShiftOrBackspace(true);
else if (keycode == Input.Keys.BUTTON_R1)
toggleShiftOrBackspace(false);
else if (keycode == Input.Keys.BUTTON_B)
hideOnScreenKeyboard();
else if (keycode == Input.Keys.BUTTON_A) {
if (selectedKey != null)
performTouch(selectedKey);
} else if (keycode == Input.Keys.DPAD_UP || keycode == Input.Keys.DPAD_DOWN || keycode == Input.Keys.DPAD_LEFT || keycode == Input.Keys.DPAD_RIGHT)
setSelectedKey(keycode);
} else if (dialog.getColor().a != 0f) {
if (keycode == Input.Keys.BUTTON_A) {
if (selectedActor == textInput) {
lastInputField = textInput;
showOnScreenKeyboard(textInput.getText());
} else if (selectedActor == dialogAbortBtn || selectedActor == dialogSaveBtn) {
performTouch(selectedActor);
if (lastSelectedSlot > 0)
select(lastSelectedSlot);
else
select(-3);
}
} else if (keycode == Input.Keys.BUTTON_B) {
performTouch(dialogAbortBtn);
if (lastSelectedSlot > 0)
select(lastSelectedSlot);
else
select(-3);
}
else if (keycode == Input.Keys.DPAD_DOWN) {
if (selectedActor == null) {
selectActor(textInput, false);
} else if (selectedActor == textInput)
selectActor(dialogSaveBtn, false);
} else if (keycode == Input.Keys.DPAD_UP) {
if (selectedActor == null)
selectActor(dialogSaveBtn, false);
else if (selectedActor == dialogSaveBtn || selectedActor == dialogAbortBtn) {
selectActor(textInput, false);
}
} else if (keycode == Input.Keys.DPAD_LEFT) {
if (selectedActor == dialogAbortBtn)
selectActor(dialogSaveBtn, false);
} else if (keycode == Input.Keys.DPAD_RIGHT) {
if (selectedActor == dialogSaveBtn)
selectActor(dialogAbortBtn, false);
}
} else {
if (keycode == Input.Keys.BUTTON_B)
performTouch(back);
else if (keycode == Input.Keys.BUTTON_Y) {
if (difficulty != null && difficulty.isVisible()) {
int index = difficulty.getSelectedIndex()-1;
if (index < 0)
index = 0;
difficulty.setSelectedIndex(index);
}
} else if (keycode == Input.Keys.BUTTON_X) {
if (difficulty != null && difficulty.isVisible()) {
int index = difficulty.getSelectedIndex()+1;
if (index >= 2)
index = 2;
difficulty.setSelectedIndex(index);
}
} else if (keycode == Input.Keys.BUTTON_L1) {
scrollPane.fling(1f, 0, -300);
} else if (keycode == Input.Keys.BUTTON_R1) {
scrollPane.fling(1f, 0, +300);
} else if (keycode == Input.Keys.BUTTON_A) {
performTouch(selectedActor);
} else if (keycode == Input.Keys.DPAD_LEFT) {
if (selectedActor == back || selectedActor == saveLoadButton) {
if (lastHighlightedSave != null)
selectActor(lastHighlightedSave, false);
else
selectActor(actorObjectMap.get(0), false);
lastHighlightedSave = selectedActor;
}
} else if (keycode == Input.Keys.DPAD_RIGHT) {
if (!(selectedActor == back || selectedActor == saveLoadButton)) {
lastHighlightedSave = selectedActor;
selectActor(saveLoadButton, false);
}
} else if (keycode == Input.Keys.DPAD_DOWN) {
int index = mode == Modes.Save ? 9 : 11;
if (selectedActor == back)
selectActor(saveLoadButton, false);
else if (selectedActorIndex == index) {
selectActor(actorObjectMap.get(0), false);
scrollPane.fling(1f, 0, +300);
} else {
selectNextActor(false);
}
if (selectedActorIndex == 6)
scrollPane.fling(1f, 0, -300);
if (!(selectedActor == back || selectedActor == saveLoadButton))
lastHighlightedSave = selectedActor;
} else if (keycode == Input.Keys.DPAD_UP) {
if (selectedActor == saveLoadButton)
selectActor(back, false);
else if (selectedActorIndex == 0) {
selectActor(buttons.get(10), false);
scrollPane.fling(1f, 0, -300);
} else {
selectPreviousActor(false);
}
if (selectedActorIndex == 5)
scrollPane.fling(1f, 0, +300);
if (!(selectedActor == back || selectedActor == saveLoadButton))
lastHighlightedSave = selectedActor;
} else if (keycode == Input.Keys.BUTTON_START) {
performTouch(saveLoadButton);
}
}
return true;
}
public void save() { public void save() {
dialog.hide();
if (WorldSave.getCurrentSave().save(textInput.getText(), currentSlot)) { if (WorldSave.getCurrentSave().save(textInput.getText(), currentSlot)) {
updateFiles(); updateFiles();
//ensure the dialog is hidden before switching //ensure the dialog is hidden before switching
dialog.getColor().a = 0f;
Scene restoreScene = Forge.switchToLast(); Scene restoreScene = Forge.switchToLast();
if (restoreScene != null) { if (restoreScene != null) {
@@ -398,7 +275,7 @@ public class SaveLoadScene extends UIScene {
int slot = WorldSave.filenameToSlot(name.getName()); int slot = WorldSave.filenameToSlot(name.getName());
WorldSaveHeader header = (WorldSaveHeader) oos.readObject(); WorldSaveHeader header = (WorldSaveHeader) oos.readObject();
buttons.get(slot).setText(header.name); buttons.get(slot).actor.setText(header.name);
previews.put(slot, header); previews.put(slot, header);
} }
@@ -432,22 +309,18 @@ public class SaveLoadScene extends UIScene {
saveLoadButton.setText(Forge.getLocalizer().getMessage("lblStart")); saveLoadButton.setText(Forge.getLocalizer().getMessage("lblStart"));
break; break;
} }
autoSave.setDisabled(mode == Modes.Save); autoSave.actor.setDisabled(mode == Modes.Save);
quickSave.setDisabled(mode == Modes.Save); quickSave.actor.setDisabled(mode == Modes.Save);
this.mode = mode; this.mode = mode;
} }
@Override @Override
public void enter() { public void enter() {
unselectActors(); unselectActors();
clearActorObjects(); select(lastSelectedSlot);
if (lastSelectedSlot > 0)
select(lastSelectedSlot);
else
select(-3);
updateFiles(); updateFiles();
autoSave.setText(Forge.getLocalizer().getMessage("lblAutoSave")); autoSave.actor.setText(Forge.getLocalizer().getMessage("lblAutoSave"));
quickSave.setText(Forge.getLocalizer().getMessage("lblQuickSave")); quickSave.actor.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);
@@ -458,28 +331,6 @@ public class SaveLoadScene extends UIScene {
difficulty.setVisible(false); difficulty.setVisible(false);
} }
} }
if (!autoSave.isDisabled())
addActorObject(autoSave);
if (!quickSave.isDisabled())
addActorObject(quickSave);
for (int i=0; i <= 10; i++) {
if (buttons.containsKey(i))
addActorObject(buttons.get(i));
}
addActorObject(textInput);
addActorObject(dialogSaveBtn);
addActorObject(dialogAbortBtn);
addActorObject(back);
addActorObject(saveLoadButton);
if (scrollPane != null) {
if (lastSelectedSlot >= 6) {
scrollPane.fling(1f, 0, -300);
selectActor(buttons.get(lastSelectedSlot), false);
} else if (lastSelectedSlot > 0 && lastSelectedSlot < 6) {
scrollPane.fling(1f, 0, +300);
selectActor(buttons.get(lastSelectedSlot), false);
}
}
super.enter(); super.enter();
} }

View File

@@ -1,8 +1,8 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.scenes.scene2d.utils.Drawable; import com.badlogic.gdx.controllers.ControllerListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.controllers.Controllers;
import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.Disposable;
import forge.Forge; import forge.Forge;
import forge.adventure.util.Config; import forge.adventure.util.Config;
@@ -10,9 +10,44 @@ import forge.adventure.util.Config;
/** /**
* Base class for all rendered scenes * Base class for all rendered scenes
*/ */
public abstract class Scene<T> implements Disposable { public abstract class Scene implements Disposable {
static class SceneControllerListener implements ControllerListener {
@Override
public void connected(Controller controller) {
Forge.getCurrentScene().connected(controller);
}
@Override
public void disconnected(Controller controller) {
Forge.getCurrentScene().disconnected(controller);
}
@Override
public boolean buttonDown(Controller controller, int i) {
return Forge.getCurrentScene().buttonDown(controller,i);
}
@Override
public boolean buttonUp(Controller controller, int i) {
return Forge.getCurrentScene().buttonUp(controller,i);
}
@Override
public boolean axisMoved(Controller controller, int i, float v) {
return Forge.getCurrentScene().axisMoved(controller,i,v);
}
}
static private SceneControllerListener listener=null;
public Scene() { public Scene() {
if(listener==null)
{
listener=new SceneControllerListener();
Controllers.addListener(listener);
}
} }
public static int getIntendedWidth() { public static int getIntendedWidth() {
@@ -25,21 +60,34 @@ public abstract class Scene<T> implements Disposable {
public abstract void act(float delta); public abstract void act(float delta);
public abstract void render(); public abstract void render();
public void create() {
}
public Drawable DrawableImage(String path) {
return new TextureRegionDrawable(new Texture(Config.instance().getFile(path)));
}
public boolean leave() { public boolean leave() {
return true; return true;
} }
public void enter() { public void enter() {
}
public void connected(Controller controller) {
}
public void disconnected(Controller controller) {
}
public boolean buttonDown(Controller controller, int buttonIndex) {
return false;
}
public boolean buttonUp(Controller controller, int buttonIndex) {
return false;
}
public boolean axisMoved(Controller controller, int axisIndex, float value) {
return true;
} }

View File

@@ -1,6 +1,5 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Input;
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.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
@@ -13,7 +12,6 @@ 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;
import forge.adventure.util.UIActor;
import forge.gui.GuiBase; import forge.gui.GuiBase;
import forge.localinstance.properties.ForgePreferences; import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel; import forge.model.FModel;
@@ -59,24 +57,24 @@ public class SettingsScene extends UIScene {
} }
if(somethingWentWrong.get()) if(somethingWentWrong.get())
{ {
Dialog dialog=ui.showDialog(stage,"Something went wrong", UIActor.ButtonOk|UIActor.ButtonAbort,null); Dialog dialog=prepareDialog("Something went wrong", ButtonOk|ButtonAbort,null);
dialog.text("Copy was not successful check your access right\n and if the folder is in use"); dialog.text("Copy was not successful check your access right\n and if the folder is in use");
dialog.show(stage); showDialog(dialog);
} }
else else
{ {
Dialog dialog=ui.showDialog(stage,"Copied plane", UIActor.ButtonOk|UIActor.ButtonAbort,null); Dialog dialog=prepareDialog("Copied plane", ButtonOk|ButtonAbort,null);
dialog.text("New plane "+newPlaneName.getText()+" was created\nYou can now start the editor to change the plane\n" + dialog.text("New plane "+newPlaneName.getText()+" was created\nYou can now start the editor to change the plane\n" +
"or edit it manually from the folder\n" + "or edit it manually from the folder\n" +
Config.instance().getPlanePath("<user>"+newPlaneName.getText())); Config.instance().getPlanePath("<user>"+newPlaneName.getText()));
Config.instance().getSettingData().plane = "<user>"+newPlaneName.getText(); Config.instance().getSettingData().plane = "<user>"+newPlaneName.getText();
Config.instance().saveSettings(); Config.instance().saveSettings();
dialog.show(stage); showDialog(dialog);
} }
} }
private void createNewPlane() { private void createNewPlane() {
Dialog dialog=ui.showDialog(stage,"Create your own Plane", UIActor.ButtonOk|UIActor.ButtonAbort,()->copyNewPlane()); Dialog dialog=prepareDialog("Create your own Plane", ButtonOk|ButtonAbort,()->copyNewPlane());
dialog.text("Select a plane to copy"); dialog.text("Select a plane to copy");
dialog.getContentTable().row(); dialog.getContentTable().row();
dialog.getContentTable().add(selectSourcePlane); dialog.getContentTable().add(selectSourcePlane);
@@ -91,7 +89,7 @@ public class SettingsScene extends UIScene {
private SettingsScene() { private SettingsScene() {
super(Forge.isLandscapeMode() ? "ui/settings.json" : "ui/settings_portrait.json"); super(Forge.isLandscapeMode() ? "ui/settings.json" : "ui/settings_portrait.json");
selectSourcePlane = new SelectBox<String>(Controls.getSkin()); selectSourcePlane = Controls.newComboBox();
newPlaneName = Controls.newTextField(""); newPlaneName = Controls.newTextField("");
settingGroup = new Table(); settingGroup = new Table();
if (Preference == null) { if (Preference == null) {
@@ -237,24 +235,11 @@ public class SettingsScene extends UIScene {
ScrollPane scrollPane = ui.findActor("settings"); ScrollPane scrollPane = ui.findActor("settings");
scrollPane.setActor(settingGroup); scrollPane.setActor(settingGroup);
addToSelectable(settingGroup);
} }
@Override
public boolean keyPressed(int keycode) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.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;
}
public boolean back() { public boolean back() {
Forge.switchToLast(); Forge.switchToLast();
@@ -346,9 +331,4 @@ public class SettingsScene extends UIScene {
stage.dispose(); stage.dispose();
} }
@Override
public void create() {
}
} }

View File

@@ -1,9 +1,6 @@
package forge.adventure.scene; package forge.adventure.scene;
import com.badlogic.gdx.Gdx;
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.utils.Align;
import com.github.tommyettinger.textra.TextraButton; import com.github.tommyettinger.textra.TextraButton;
import forge.Forge; import forge.Forge;
import forge.adventure.stage.GameHUD; import forge.adventure.stage.GameHUD;
@@ -11,7 +8,6 @@ import forge.adventure.stage.GameStage;
import forge.adventure.stage.MapStage; import forge.adventure.stage.MapStage;
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.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.screens.TransitionScreen; import forge.screens.TransitionScreen;
@@ -21,42 +17,29 @@ import forge.screens.TransitionScreen;
public class StartScene extends UIScene { public class StartScene extends UIScene {
private static StartScene object; private static StartScene object;
TextraButton saveButton, resumeButton, continueButton, newGameButton, newGameButtonPlus, loadButton, settingsButton, exitButton, switchButton, dialogOk, dialogCancel, dialogButtonSelected; TextraButton saveButton, resumeButton, continueButton;
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");
ui.onButtonPress("Start", () -> StartScene.this.NewGame()); ui.onButtonPress("Start", StartScene.this::NewGame);
ui.onButtonPress("Start+", () -> NewGamePlus()); ui.onButtonPress("Start+", this::NewGamePlus);
ui.onButtonPress("Load", () -> StartScene.this.Load()); ui.onButtonPress("Load", StartScene.this::Load);
ui.onButtonPress("Save", () -> StartScene.this.Save()); ui.onButtonPress("Save", StartScene.this::Save);
ui.onButtonPress("Resume", () -> StartScene.this.Resume()); ui.onButtonPress("Resume", StartScene.this::Resume);
ui.onButtonPress("Continue", () -> StartScene.this.Continue()); ui.onButtonPress("Continue", StartScene.this::Continue);
ui.onButtonPress("Settings", () -> StartScene.this.settings()); ui.onButtonPress("Settings", StartScene.this::settings);
ui.onButtonPress("Exit", () -> StartScene.this.Exit()); ui.onButtonPress("Exit", StartScene.this::Exit);
ui.onButtonPress("Switch", () -> Forge.switchToClassic()); ui.onButtonPress("Switch", Forge::switchToClassic);
newGameButton = ui.findActor("Start");
loadButton = ui.findActor("Load");
saveButton = ui.findActor("Save"); saveButton = ui.findActor("Save");
resumeButton = ui.findActor("Resume"); resumeButton = ui.findActor("Resume");
continueButton = ui.findActor("Continue"); continueButton = ui.findActor("Continue");
settingsButton = ui.findActor("Settings");
exitButton = ui.findActor("Exit");
switchButton = ui.findActor("Switch");
saveButton.setVisible(false); saveButton.setVisible(false);
resumeButton.setVisible(false); resumeButton.setVisible(false);
dialog = Controls.newDialog(Forge.getLocalizer().getMessage("lblExitForge"));
dialog.getButtonTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblAreYouSureYouWishExitForge"))).colspan(2).pad(2, 15, 2, 15);
dialog.getButtonTable().row();
dialogOk = Controls.newTextButton(Forge.getLocalizer().getMessage("lblExit"), () -> Forge.exit(true));
dialogButtonSelected = dialogOk;
dialog.getButtonTable().add(dialogOk).width(60).align(Align.left).padLeft(15);
dialogCancel = Controls.newTextButton(Forge.getLocalizer().getMessage("lblCancel"), () -> dialog.hide());
dialog.getButtonTable().add(dialogCancel).width(60).align(Align.right).padRight(15);
dialog.getColor().a = 0;
} }
public static StartScene instance() { public static StartScene instance() {
@@ -117,8 +100,9 @@ public class StartScene extends UIScene {
} }
public boolean Exit() { public boolean Exit() {
if (dialog != null) Dialog dialog = prepareDialog(Forge.getLocalizer().getMessage("lblExitForge"), ButtonOk|ButtonAbort,()->Forge.exit(true));
dialog.show(stage); dialog.text( Controls.newLabel(Forge.getLocalizer().getMessage("lblAreYouSureYouWishExitForge")));
showDialog(dialog);
return true; return true;
} }
@@ -145,233 +129,16 @@ public class StartScene extends UIScene {
continueButton.setVisible(false); continueButton.setVisible(false);
} }
Gdx.input.setInputProcessor(stage); //Start taking input from the ui
if(Forge.createNewAdventureMap) if(Forge.createNewAdventureMap)
{ {
this.NewGame(); this.NewGame();
Current.setDebug(true);
GameStage.maximumScrollDistance=4f; GameStage.maximumScrollDistance=4f;
} }
super.enter(); super.enter();
} }
@Override
public void create() {
}
@Override
public boolean keyPressed(int keycode) {
if (Forge.hasGamepad())
showGamepadSelector = true;
if (dialog.getColor().a != 1) {
if (keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK) {
if (WorldSave.getCurrentSave().getWorld().getData() != null) {
if (showGamepadSelector)
performTouch(resumeButton);
else
Resume();
}
}
if (keycode == Input.Keys.DPAD_DOWN) {
selected++;
if (selected == 1 && Forge.isLandscapeMode())
selected++;
if (!saveButton.isVisible() && selected == 3)
selected++;
if (!resumeButton.isVisible() && selected == 4)
selected++;
if (!continueButton.isVisible() && selected == 5)
selected++;
if (selected > 7 && Forge.isLandscapeMode())
selected = 0;
if (selected > 8 && !Forge.isLandscapeMode())
selected = 8;
setSelected(selected, false);
} else if (keycode == Input.Keys.DPAD_UP) {
selected--;
if (selected == 7 && Forge.isLandscapeMode())
selected--;
if (!continueButton.isVisible() && selected == 5)
selected--;
if (!resumeButton.isVisible() && selected == 4)
selected--;
if (!saveButton.isVisible() && selected == 3)
selected--;
if (selected == 1 && Forge.isLandscapeMode())
selected--;
if (selected < 0)
selected = Forge.isLandscapeMode() ? 7 : 0;
setSelected(selected, false);
} else if (keycode == Input.Keys.DPAD_RIGHT && Forge.isLandscapeMode()) {
if (selected == 0 || selected == 7)
selected++;
if (selected > 8)
selected = 8;
setSelected(selected, false);
} else if (keycode == Input.Keys.DPAD_LEFT && Forge.isLandscapeMode()) {
if (selected == 1 || selected == 8)
selected--;
if (selected < 0)
selected = 0;
setSelected(selected, false);
} else if (keycode == Input.Keys.BUTTON_A)
setSelected(selected, true);
} else {
if (keycode == Input.Keys.DPAD_RIGHT) {
dialogOk.fire(eventExit);
dialogCancel.fire(eventEnter);
dialogButtonSelected = dialogCancel;
} else if (keycode == Input.Keys.DPAD_LEFT) {
dialogOk.fire(eventEnter);
dialogCancel.fire(eventExit);
dialogButtonSelected = dialogOk;
} else if (keycode == Input.Keys.BUTTON_A) {
dialogOk.fire(eventExit);
dialogCancel.fire(eventExit);
performTouch(dialogButtonSelected);
}
}
return true;
}
private void setSelected(int select, boolean press) {
if (!showGamepadSelector)
return;
unSelectAll();
switch (select) {
case 0:
newGameButton.fire(eventEnter);
if (press)
performTouch(newGameButton);
break;
case 1:
newGameButtonPlus.fire(eventEnter);
if (press)
performTouch(newGameButtonPlus);
break;
case 2:
loadButton.fire(eventEnter);
if (press)
performTouch(loadButton);
break;
case 3:
saveButton.fire(eventEnter);
if (press)
performTouch(saveButton);
break;
case 4:
resumeButton.fire(eventEnter);
if (press)
performTouch(resumeButton);
break;
case 5:
continueButton.fire(eventEnter);
if (press) {
performTouch(continueButton);
setSelected(4, false);
selected = 4;
}
break;
case 6:
settingsButton.fire(eventEnter);
if (press)
performTouch(settingsButton);
break;
case 7:
if (Forge.isLandscapeMode()) {
exitButton.fire(eventEnter);
if (press)
performTouch(exitButton);
} else {
switchButton.fire(eventEnter);
if (press)
performTouch(switchButton);
}
break;
case 8:
if (Forge.isLandscapeMode()) {
switchButton.fire(eventEnter);
if (press)
performTouch(switchButton);
} else {
exitButton.fire(eventEnter);
if (press)
performTouch(exitButton);
}
break;
default:
break;
}
}
private void unSelectAll() {
if (!showGamepadSelector)
return;
newGameButton.fire(eventExit);
newGameButtonPlus.fire(eventExit);
loadButton.fire(eventExit);
saveButton.fire(eventExit);
resumeButton.fire(eventExit);
continueButton.fire(eventExit);
settingsButton.fire(eventExit);
exitButton.fire(eventExit);
switchButton.fire(eventExit);
dialogOk.fire(eventExit);
dialogCancel.fire(eventExit);
}
private void updateSelected() {
if (dialog.getColor().a == 1) {
if (Controls.actorContainsVector(dialogOk, pointer)) {
dialogCancel.fire(eventExit);
dialogOk.fire(eventEnter);
dialogButtonSelected = dialogOk;
}
if (Controls.actorContainsVector(dialogCancel, pointer)) {
dialogOk.fire(eventExit);
dialogCancel.fire(eventEnter);
dialogButtonSelected = dialogCancel;
}
return;
}
if (Controls.actorContainsVector(newGameButton, pointer)) {
newGameButton.fire(eventEnter);
selected = 0;
}
if (Controls.actorContainsVector(newGameButtonPlus, pointer)) {
newGameButtonPlus.fire(eventEnter);
selected = 1;
}
if (Controls.actorContainsVector(loadButton, pointer)) {
loadButton.fire(eventEnter);
selected = 2;
}
if (Controls.actorContainsVector(saveButton, pointer)) {
saveButton.fire(eventEnter);
selected = 3;
}
if (Controls.actorContainsVector(resumeButton, pointer)) {
resumeButton.fire(eventEnter);
selected = 4;
}
if (Controls.actorContainsVector(continueButton, pointer)) {
continueButton.fire(eventEnter);
selected = 5;
}
if (Controls.actorContainsVector(settingsButton, pointer)) {
settingsButton.fire(eventEnter);
selected = 6;
}
if (Controls.actorContainsVector(exitButton, pointer)) {
exitButton.fire(eventEnter);
selected = Forge.isLandscapeMode() ? 7 : 8;
}
if (Controls.actorContainsVector(switchButton, pointer)) {
switchButton.fire(eventEnter);
selected = Forge.isLandscapeMode() ? 8 : 7;
}
}
private void NewGamePlus() { private void NewGamePlus() {
SaveLoadScene.instance().setMode(SaveLoadScene.Modes.NewGamePlus); SaveLoadScene.instance().setMode(SaveLoadScene.Modes.NewGamePlus);
Forge.switchScene(SaveLoadScene.instance()); Forge.switchScene(SaveLoadScene.instance());

File diff suppressed because it is too large Load Diff

View File

@@ -178,6 +178,15 @@ public static ConsoleCommandInterpreter getInstance()
Current.player().addMaxLife(amount); Current.player().addMaxLife(amount);
return "Added " + amount + " max life"; return "Added " + amount + " max life";
}); });
registerCommand(new String[]{"leave"}, s -> {
if(!MapStage.getInstance().isInMap()) return "not on a map";
MapStage.getInstance().exit();
return "Got out";
});
registerCommand(new String[]{"debug","collision"}, s -> {
currentGameStage().debugCollision(true);
return "Got out";
});
registerCommand(new String[]{"give", "card"}, s -> { registerCommand(new String[]{"give", "card"}, s -> {
//TODO: Specify optional amount. //TODO: Specify optional amount.
if(s.length<1) return "Command needs 1 parameter: Card name."; if(s.length<1) return "Command needs 1 parameter: Card name.";
@@ -290,13 +299,14 @@ public static ConsoleCommandInterpreter getInstance()
Current.player().addManaPercent(1.0f); Current.player().addManaPercent(1.0f);
return "Player healed to " + Current.player().getLife() + "/" + Current.player().getMaxLife(); return "Player healed to " + Current.player().getLife() + "/" + Current.player().getMaxLife();
}); });
registerCommand(new String[]{"debug","on"}, s -> { registerCommand(new String[]{"debug","map"}, s -> {
Current.setDebug(true); GameHUD.getInstance().setDebug(true);
return "Debug mode ON"; return "Debug map ON";
}); });
registerCommand(new String[]{"debug","off"}, s -> { registerCommand(new String[]{"debug","off"}, s -> {
Current.setDebug(false); GameHUD.getInstance().setDebug(true);
return "Debug mode OFF"; currentGameStage().debugCollision(false);
return "Debug OFF";
}); });
registerCommand(new String[]{"remove","enemy","all"}, s -> { registerCommand(new String[]{"remove","enemy","all"}, s -> {
//TODO: Remove all overworld enemies if not inside a map. //TODO: Remove all overworld enemies if not inside a map.

View File

@@ -2,9 +2,6 @@ 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;
@@ -13,6 +10,7 @@ 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.Button;
import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Touchpad; import com.badlogic.gdx.scenes.scene2d.ui.Touchpad;
import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener; import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener;
@@ -38,7 +36,7 @@ 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 implements ControllerListener { public class GameHUD extends Stage {
static public GameHUD instance; static public GameHUD instance;
private final GameStage gameStage; private final GameStage gameStage;
@@ -54,12 +52,13 @@ public class GameHUD extends Stage implements ControllerListener {
private final TextraButton menuActor; private final TextraButton menuActor;
private final TextraButton statsActor; private final TextraButton statsActor;
private final TextraButton inventoryActor; private final TextraButton inventoryActor;
private final UIActor ui; public final UIActor ui;
private final Touchpad touchpad; private final Touchpad touchpad;
private final Console console; private final Console console;
float TOUCHPAD_SCALE = 70f, referenceX; float TOUCHPAD_SCALE = 70f, referenceX;
boolean isHiding = false, isShowing = false; boolean isHiding = false, isShowing = false;
float opacity = 1f; float opacity = 1f;
private boolean debugMap;
private GameHUD(GameStage gameStage) { private GameHUD(GameStage gameStage) {
super(new ScalingViewport(Scaling.stretch, Scene.getIntendedWidth(), Scene.getIntendedHeight()), gameStage.getBatch()); super(new ScalingViewport(Scaling.stretch, Scene.getIntendedWidth(), Scene.getIntendedHeight()), gameStage.getBatch());
@@ -133,7 +132,6 @@ public class GameHUD extends Stage implements ControllerListener {
eventTouchUp = new InputEvent(); eventTouchUp = new InputEvent();
eventTouchUp.setPointer(-1); eventTouchUp.setPointer(-1);
eventTouchUp.setType(InputEvent.Type.touchUp); eventTouchUp.setType(InputEvent.Type.touchUp);
Controllers.addListener(this);
} }
private void openMap() { private void openMap() {
@@ -171,7 +169,7 @@ public class GameHUD extends Stage implements ControllerListener {
if (Controls.actorContainsVector(miniMap,c)) { if (Controls.actorContainsVector(miniMap,c)) {
touchpad.setVisible(false); touchpad.setVisible(false);
if(Current.isInDebug()) if(debugMap)
WorldStage.getInstance().getPlayerSprite().setPosition(x*WorldSave.getCurrentSave().getWorld().getWidthInPixels(),y*WorldSave.getCurrentSave().getWorld().getHeightInPixels()); WorldStage.getInstance().getPlayerSprite().setPosition(x*WorldSave.getCurrentSave().getWorld().getWidthInPixels(),y*WorldSave.getCurrentSave().getWorld().getHeightInPixels());
return true; return true;
@@ -194,7 +192,7 @@ public class GameHUD extends Stage implements ControllerListener {
return true; return true;
} }
if (Controls.actorContainsVector(miniMap,c)) { if (Controls.actorContainsVector(miniMap,c)) {
if(Current.isInDebug()) if(debugMap)
WorldStage.getInstance().getPlayerSprite().setPosition(x*WorldSave.getCurrentSave().getWorld().getWidthInPixels(),y*WorldSave.getCurrentSave().getWorld().getHeightInPixels()); WorldStage.getInstance().getPlayerSprite().setPosition(x*WorldSave.getCurrentSave().getWorld().getWidthInPixels(),y*WorldSave.getCurrentSave().getWorld().getHeightInPixels());
else else
openMap(); openMap();
@@ -308,8 +306,14 @@ public class GameHUD extends Stage implements ControllerListener {
} }
} }
@Override
public boolean keyUp(int keycode) {
ui.pressUp(keycode);
return super.keyUp(keycode);
}
@Override @Override
public boolean keyDown(int keycode) { public boolean keyDown(int keycode) {
ui.pressDown(keycode);
if (keycode == Input.Keys.F9 || keycode == Input.Keys.F10) { if (keycode == Input.Keys.F9 || keycode == Input.Keys.F10) {
console.toggle(); console.toggle();
return true; return true;
@@ -324,17 +328,12 @@ public class GameHUD extends Stage implements ControllerListener {
showButtons(); showButtons();
} }
} }
if (keycode == Input.Keys.BUTTON_B) { if (console.isVisible())
performTouch(statsActor); return true;
} Button pressedButton=ui.buttonPressed(keycode);
if (keycode == Input.Keys.BUTTON_Y) { if(pressedButton!=null)
performTouch(inventoryActor); {
} performTouch(pressedButton);
if (keycode == Input.Keys.BUTTON_X) {
performTouch(deckActor);
}
if (keycode == Input.Keys.BUTTON_A) {
performTouch(menuActor);
} }
return super.keyDown(keycode); return super.keyDown(keycode);
} }
@@ -376,120 +375,8 @@ public class GameHUD extends Stage implements ControllerListener {
FThreads.delayInEDT(300, () -> isShowing = false); FThreads.delayInEDT(300, () -> isShowing = false);
} }
@Override public void setDebug(boolean b) {
public void connected(Controller controller) { debugMap=b;
}
@Override
public void disconnected(Controller controller) {
}
@Override
public boolean buttonDown(Controller controller, int buttonIndex) {
if (Forge.getCurrentScene() instanceof HudScene) {
if (controller.getMapping().buttonA == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.BUTTON_A);
if (controller.getMapping().buttonB == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.BUTTON_B);
if (controller.getMapping().buttonX == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.BUTTON_X);
if (controller.getMapping().buttonY == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.BUTTON_Y);
if (controller.getMapping().buttonDpadUp == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.DPAD_UP);
if (controller.getMapping().buttonDpadRight == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.DPAD_RIGHT);
if (controller.getMapping().buttonDpadDown == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.DPAD_DOWN);
if (controller.getMapping().buttonDpadLeft == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.DPAD_LEFT);
} else if (Forge.getCurrentScene() instanceof UIScene) {
if (controller.getMapping().buttonDpadUp == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.DPAD_UP);
if (controller.getMapping().buttonDpadRight == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.DPAD_RIGHT);
if (controller.getMapping().buttonDpadDown == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.DPAD_DOWN);
if (controller.getMapping().buttonDpadLeft == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.DPAD_LEFT);
if (controller.getMapping().buttonA == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_A);
if (controller.getMapping().buttonB == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_B);
if (controller.getMapping().buttonX == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_X);
if (controller.getMapping().buttonY == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_Y);
if (controller.getMapping().buttonR1 == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_R1);
if (controller.getMapping().buttonL1 == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_L1);
if (controller.getMapping().buttonR2 == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_R2);
if (controller.getMapping().buttonL2 == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_L2);
if (controller.getMapping().buttonBack == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_SELECT);
if (controller.getMapping().buttonStart == buttonIndex)
return ((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_START);
}
return false;
}
@Override
public boolean buttonUp(Controller controller, int buttonIndex) {
if (Forge.getCurrentScene() instanceof HudScene) {
if (controller.getMapping().buttonA == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.BUTTON_A);
if (controller.getMapping().buttonB == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.BUTTON_B);
if (controller.getMapping().buttonX == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.BUTTON_X);
if (controller.getMapping().buttonY == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.BUTTON_Y);
if (controller.getMapping().buttonDpadUp == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.DPAD_UP);
if (controller.getMapping().buttonDpadRight == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.DPAD_RIGHT);
if (controller.getMapping().buttonDpadDown == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.DPAD_DOWN);
if (controller.getMapping().buttonDpadLeft == buttonIndex)
return ((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.DPAD_LEFT);
}
return false;
}
@Override
public boolean axisMoved(Controller controller, int axisIndex, float value) {
if (Forge.hasGamepad()) {
if (Forge.getCurrentScene() instanceof HudScene) {
if (controller.getAxis(controller.getMapping().axisLeftX) > 0.5f) {
((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.DPAD_RIGHT);
} else if (controller.getAxis(controller.getMapping().axisLeftX) < -0.5f) {
((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.DPAD_LEFT);
} else {
((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.DPAD_LEFT);
((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.DPAD_RIGHT);
}
if (controller.getAxis(controller.getMapping().axisLeftY) > 0.5f) {
((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.DPAD_DOWN);
} else if (controller.getAxis(controller.getMapping().axisLeftY) < -0.5f) {
((HudScene) Forge.getCurrentScene()).keyDown(Input.Keys.DPAD_UP);
} else {
((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.DPAD_UP);
((HudScene) Forge.getCurrentScene()).keyUp(Input.Keys.DPAD_DOWN);
}
} else if (Forge.getCurrentScene() instanceof UIScene) {
if (controller.getAxis(4) == 1f) //L2
((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_L2);
if (controller.getAxis(5) == 1f) //R2
((UIScene) Forge.getCurrentScene()).keyPressed(Input.Keys.BUTTON_R2);
}
}
return true;
} }
class ConsoleToggleListener extends ActorGestureListener { class ConsoleToggleListener extends ActorGestureListener {

View File

@@ -1,6 +1,7 @@
package forge.adventure.stage; package forge.adventure.stage;
import com.badlogic.gdx.Input; import com.badlogic.gdx.Input;
import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
@@ -18,6 +19,7 @@ import forge.adventure.pointofintrest.PointOfInterest;
import forge.adventure.scene.Scene; import forge.adventure.scene.Scene;
import forge.adventure.scene.StartScene; import forge.adventure.scene.StartScene;
import forge.adventure.scene.TileMapScene; import forge.adventure.scene.TileMapScene;
import forge.adventure.util.KeyBinding;
import forge.adventure.util.Paths; import forge.adventure.util.Paths;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.gui.GuiBase; import forge.gui.GuiBase;
@@ -44,6 +46,20 @@ public abstract class GameStage extends Stage {
public static float maximumScrollDistance=1.5f; public static float maximumScrollDistance=1.5f;
public static float minimumScrollDistance=0.3f; public static float minimumScrollDistance=0.3f;
public boolean axisMoved(Controller controller, int axisIndex, float value) {
if (MapStage.getInstance().isDialogOnlyInput()||isPaused()) {
return true;
}
player.getMovementDirection().x = controller.getAxis(0);
player.getMovementDirection().y = -controller.getAxis(1);
if(player.getMovementDirection().len()<0.2)
{
player.stop();
}
return true;
}
enum PlayerModification enum PlayerModification
{ {
Sprint, Sprint,
@@ -211,19 +227,21 @@ public abstract class GameStage extends Stage {
@Override @Override
public boolean keyDown(int keycode) { public boolean keyDown(int keycode) {
super.keyDown(keycode); super.keyDown(keycode);
if (keycode == Input.Keys.LEFT || keycode == Input.Keys.A || keycode == Input.Keys.DPAD_LEFT)//todo config if (isPaused())
return true;
if (KeyBinding.Left.isPressed(keycode))
{ {
player.getMovementDirection().x = -1; player.getMovementDirection().x = -1;
} }
if (keycode == Input.Keys.RIGHT || keycode == Input.Keys.D || keycode == Input.Keys.DPAD_RIGHT)//todo config if (KeyBinding.Right.isPressed(keycode) )
{ {
player.getMovementDirection().x = +1; player.getMovementDirection().x = +1;
} }
if (keycode == Input.Keys.UP || keycode == Input.Keys.W || keycode == Input.Keys.DPAD_UP)//todo config if (KeyBinding.Up.isPressed(keycode))
{ {
player.getMovementDirection().y = +1; player.getMovementDirection().y = +1;
} }
if (keycode == Input.Keys.DOWN || keycode == Input.Keys.S || keycode == Input.Keys.DPAD_DOWN)//todo config if (KeyBinding.Down.isPressed(keycode))
{ {
player.getMovementDirection().y = -1; player.getMovementDirection().y = -1;
} }
@@ -243,15 +261,13 @@ public abstract class GameStage extends Stage {
enter(); enter();
} }
} }
if (keycode == Input.Keys.F11) {
debugCollision(false);
}
if (keycode == Input.Keys.F12) { if (keycode == Input.Keys.F12) {
debugCollision(true); debugCollision(true);
for (Actor actor : foregroundSprites.getChildren()) {
if (actor instanceof MapActor) {
((MapActor) actor).setBoundDebug(true);
}
}
setDebugAll(true);
player.setBoundDebug(true);
} }
if (keycode == Input.Keys.F2) { if (keycode == Input.Keys.F2) {
TileMapScene S = TileMapScene.instance(); TileMapScene S = TileMapScene.instance();
@@ -276,7 +292,14 @@ public abstract class GameStage extends Stage {
return true; return true;
} }
protected void debugCollision(boolean b) { public void debugCollision(boolean b) {
for (Actor actor : foregroundSprites.getChildren()) {
if (actor instanceof MapActor) {
((MapActor) actor).setBoundDebug(b);
}
}
setDebugAll(b);
player.setBoundDebug(b);
} }
@Override @Override
@@ -334,19 +357,19 @@ public abstract class GameStage extends Stage {
public boolean keyUp(int keycode) { public boolean keyUp(int keycode) {
if (isPaused()) if (isPaused())
return true; return true;
if (keycode == Input.Keys.LEFT || keycode == Input.Keys.A || keycode == Input.Keys.RIGHT || keycode == Input.Keys.D)//todo config if (KeyBinding.Left.isPressed(keycode)||KeyBinding.Right.isPressed(keycode))
{ {
player.getMovementDirection().x = 0; player.getMovementDirection().x = 0;
if (!player.isMoving()) if (!player.isMoving())
stop(); stop();
} }
if (keycode == Input.Keys.UP || keycode == Input.Keys.W || keycode == Input.Keys.DOWN || keycode == Input.Keys.S)//todo config if (KeyBinding.Down.isPressed(keycode)||KeyBinding.Up.isPressed(keycode))
{ {
player.getMovementDirection().y = 0; player.getMovementDirection().y = 0;
if (!player.isMoving()) if (!player.isMoving())
stop(); stop();
} }
if (keycode == Input.Keys.ESCAPE) { if (KeyBinding.Menu.isPressed(keycode)) {
openMenu(); openMenu();
} }
return false; return false;

View File

@@ -2,7 +2,6 @@ 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.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;
@@ -21,9 +20,13 @@ 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.Button;
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.utils.*; import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Scaling;
import com.badlogic.gdx.utils.Timer;
import com.github.tommyettinger.textra.TextraButton; import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel; import com.github.tommyettinger.textra.TextraLabel;
import com.github.tommyettinger.textra.TypingAdapter; import com.github.tommyettinger.textra.TypingAdapter;
@@ -73,9 +76,9 @@ 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, TextraButton> dialogButtonMap; private final Array< TextraButton> dialogButtonMap=new Array<>();
private int selected = 0; private int selected = 0;
public InputEvent eventEnter, eventExit, eventTouchDown, eventTouchUp; public InputEvent eventTouchDown, eventTouchUp;
TextraButton selectedKey; TextraButton selectedKey;
private boolean foundPlayerSpawn=false; private boolean foundPlayerSpawn=false;
@@ -124,12 +127,6 @@ public class MapStage extends GameStage {
eventTouchUp = new InputEvent(); eventTouchUp = new InputEvent();
eventTouchUp.setPointer(-1); eventTouchUp.setPointer(-1);
eventTouchUp.setType(InputEvent.Type.touchUp); eventTouchUp.setType(InputEvent.Type.touchUp);
eventEnter = new InputEvent();
eventEnter.setPointer(-1);
eventEnter.setType(InputEvent.Type.enter);
eventExit = new InputEvent();
eventExit.setPointer(-1);
eventExit.setType(InputEvent.Type.exit);
} }
public static MapStage getInstance() { public static MapStage getInstance() {
return instance == null ? instance = new MapStage() : instance; return instance == null ? instance = new MapStage() : instance;
@@ -169,7 +166,7 @@ public class MapStage extends GameStage {
Group collisionGroup; Group collisionGroup;
@Override @Override
protected void debugCollision(boolean b) { public void debugCollision(boolean b) {
if (collisionGroup == null) { if (collisionGroup == null) {
collisionGroup = new Group(); collisionGroup = new Group();
@@ -190,7 +187,7 @@ public class MapStage extends GameStage {
} else { } else {
collisionGroup.remove(); collisionGroup.remove();
} }
super.debugCollision(b);
} }
private void effectDialog(EffectData effectData) { private void effectDialog(EffectData effectData) {
@@ -262,6 +259,11 @@ public class MapStage extends GameStage {
actors.clear(); actors.clear();
collisionRect.clear(); collisionRect.clear();
if(collisionGroup!=null)
collisionGroup.remove();
collisionGroup=null;
float width = Float.parseFloat(map.getProperties().get("width").toString()); float width = Float.parseFloat(map.getProperties().get("width").toString());
float height = Float.parseFloat(map.getProperties().get("height").toString()); float height = Float.parseFloat(map.getProperties().get("height").toString());
float tileHeight = Float.parseFloat(map.getProperties().get("tileheight").toString()); float tileHeight = Float.parseFloat(map.getProperties().get("tileheight").toString());
@@ -688,18 +690,16 @@ public class MapStage extends GameStage {
} }
public void showDialog() { public void showDialog() {
if (dialogButtonMap == null)
dialogButtonMap = new ObjectMap<>(); dialogButtonMap.clear();
else
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, (TextraButton) dialog.getButtonTable().getCells().get(i).getActor()); dialogButtonMap.add( (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);
dialogOnlyInput = true; dialogOnlyInput = true;
if (Forge.hasGamepad()) if (Forge.hasGamepad()&&!dialogButtonMap.isEmpty())
selectDialogButton(dialogButtonMap.get(0), false); dialogStage.setKeyboardFocus(dialogButtonMap.first());
} }
public void hideDialog() { public void hideDialog() {
@@ -743,34 +743,21 @@ public class MapStage extends GameStage {
changes.getMapFlags().clear(); changes.getMapFlags().clear();
} }
public boolean buttonPress(int keycode) { public boolean dialogInput(int keycode) {
if (dialogOnlyInput) { if (dialogOnlyInput) {
if (keycode == Input.Keys.DPAD_UP) { if (KeyBinding.Up.isPressed(keycode)) {
selectPreviousDialogButton(); selectPreviousDialogButton();
} }
if (keycode == Input.Keys.DPAD_DOWN) { if (KeyBinding.Down.isPressed(keycode)) {
selectNextDialogButton(); selectNextDialogButton();
} }
if (keycode == Input.Keys.BUTTON_A) { if (KeyBinding.Use.isPressed(keycode)) {
selectDialogButton(selectedKey, true); performTouch(dialogStage.getKeyboardFocus());
} }
} }
return true; return true;
} }
private void selectDialogButton(TextraButton dialogButton, boolean press) {
if (dialogOnlyInput) {
if (selectedKey != null)
selectedKey.fire(eventExit);
if (dialogButton != null && dialogButton.isVisible()) {
dialogButton.fire(eventEnter);
selectedKey = dialogButton;
selected = getButtonIndexKey(dialogButton);
if (press)
performTouch(dialogButton);
}
}
}
public void performTouch(Actor actor) { public void performTouch(Actor actor) {
if (actor == null) if (actor == null)
return; return;
@@ -782,22 +769,43 @@ public class MapStage extends GameStage {
} }
}, 0.10f); }, 0.10f);
} }
private int getButtonIndexKey(TextraButton dialogbutton) {
if (dialogButtonMap.isEmpty())
return 0;
Integer key = dialogButtonMap.findKey(dialogbutton, true);
if (key == null)
return 0;
return key;
}
private void selectNextDialogButton() { private void selectNextDialogButton() {
if (dialogButtonMap.size < 2) if (dialogButtonMap.size < 2)
return; return;
selectDialogButton(dialogButtonMap.get(selected+1), false); if(!(dialogStage.getKeyboardFocus() instanceof Button))
{
dialogStage.setKeyboardFocus(dialogButtonMap.first());
return;
}
for(int i=0;i<dialogButtonMap.size;i++)
{
if(dialogStage.getKeyboardFocus()==dialogButtonMap.get(i))
{
i+=1;
i%=dialogButtonMap.size;
dialogStage.setKeyboardFocus(dialogButtonMap.get(i));
return;
}
}
} }
private void selectPreviousDialogButton() { private void selectPreviousDialogButton() {
if (dialogButtonMap.size < 2) if (dialogButtonMap.size < 2)
return; return;
selectDialogButton(dialogButtonMap.get(selected-1), false); if(!(dialogStage.getKeyboardFocus() instanceof Button))
{
dialogStage.setKeyboardFocus(dialogButtonMap.first());
return;
}
for(int i=0;i<dialogButtonMap.size;i++)
{
if(dialogStage.getKeyboardFocus()==dialogButtonMap.get(i))
{
i-=1;
if(i<0)
i=dialogButtonMap.size-1;
dialogStage.setKeyboardFocus(dialogButtonMap.get(i));
return;
}
}
} }
} }

View File

@@ -11,6 +11,7 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent;
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.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;
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.Null; import com.badlogic.gdx.utils.Null;
@@ -46,7 +47,7 @@ public class Controls {
{ {
public TextButtonFix(@Null String text) public TextButtonFix(@Null String text)
{ {
super(text, Controls.getSkin(),Controls.getTextraFont()) ; super(text==null?"NULL":text, Controls.getSkin(),Controls.getTextraFont()) ;
} }
@Override @Override
@@ -84,8 +85,8 @@ public class Controls {
return getBoundingRect(actor).contains(point); return getBoundingRect(actor).contains(point);
} }
static public SelectBox newComboBox(String[] text, String item, Function<Object, Void> func) { static public SelectBox<String> newComboBox(String[] text, String item, Function<Object, Void> func) {
SelectBox ret = new SelectBox<String>(getSkin()); SelectBox<String> ret = newComboBox();
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() {
@@ -105,8 +106,8 @@ public class Controls {
return ret; return ret;
} }
static public SelectBox newComboBox(Array<String> text, String item, Function<Object, Void> func) { static public SelectBox<String> newComboBox(Array<String> text, String item, Function<Object, Void> func) {
SelectBox ret = new SelectBox<String>(getSkin()); SelectBox<String> ret = newComboBox();
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() {
@@ -125,8 +126,25 @@ public class Controls {
ret.setAlignment(Align.right); ret.setAlignment(Align.right);
return ret; return ret;
} }
static public SelectBox newComboBox(Float[] text, float item, Function<Object, Void> func) { static public<T> SelectBox newComboBox()
SelectBox ret = new SelectBox<Float>(getSkin()); {
return new SelectBox<T>(getSkin())
{
@Null
protected Drawable getBackgroundDrawable() {
if (this.isDisabled() && this.getStyle().backgroundDisabled != null) {
return this.getStyle().backgroundDisabled;
} else if (this.getScrollPane().hasParent() && this.getStyle().backgroundOpen != null) {
return this.getStyle().backgroundOpen;
} else {
return (this.isOver() || hasKeyboardFocus()) && this.getStyle().backgroundOver != null ? this.getStyle().backgroundOver : this.getStyle().background;
}
}
};
}
static public SelectBox<Float> newComboBox(Float[] text, float item, Function<Object, Void> func) {
SelectBox<Float> ret = newComboBox();
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() {
@@ -183,7 +201,20 @@ 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())
{
@Override
protected Drawable getBackgroundDrawable() {
SliderStyle style = (SliderStyle)super.getStyle();
if (this.isDisabled() && style.disabledBackground != null) {
return style.disabledBackground;
} else if (this.isDragging() && style.backgroundDown != null) {
return style.backgroundDown;
} else {
return (this.isOver() || hasKeyboardFocus()) && style.backgroundOver != null ? style.backgroundOver : style.background;
}
}
};
return ret; return ret;
} }
@@ -341,6 +372,16 @@ public class Controls {
} }
static Font textraFont=null; static Font textraFont=null;
static Font keysFont=null;
static public Font getKeysFont()
{
if(keysFont==null)
{
keysFont=new Font(getSkin().getFont("default"));
keysFont.addAtlas(Config.instance().getAtlas(Paths.KEYS_ATLAS));
}
return keysFont;
}
static public Font getTextraFont() static public Font getTextraFont()
{ {
if(textraFont==null) if(textraFont==null)

View File

@@ -25,13 +25,4 @@ public class Current {
deck=generateDeck; deck=generateDeck;
} }
static boolean debug=false;
public static boolean isInDebug()
{
return debug;
}
public static void setDebug(boolean b) {
debug=b;
}
} }

View File

@@ -0,0 +1,84 @@
package forge.adventure.util;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.controllers.Controller;
import com.badlogic.gdx.controllers.ControllerMapping;
import com.badlogic.gdx.controllers.Controllers;
import forge.gui.GuiBase;
public enum KeyBinding {
Left("Left", Input.Keys.LEFT,Input.Keys.DPAD_LEFT),
Up("Up", Input.Keys.UP,Input.Keys.DPAD_UP),
Right("Right", Input.Keys.RIGHT,Input.Keys.DPAD_RIGHT),
Down("Down", Input.Keys.DOWN,Input.Keys.DPAD_DOWN),
Menu("Menu", Input.Keys.ESCAPE,Input.Keys.BUTTON_START),
Inventory("Inventory", Input.Keys.I,Input.Keys.BUTTON_X),
Status("Status", Input.Keys.Q,Input.Keys.BUTTON_Y),
Deck("Deck", Input.Keys.E,Input.Keys.BUTTON_A),
Map("Map", Input.Keys.M,Input.Keys.BUTTON_B),
Equip("Equip", Input.Keys.E,Input.Keys.BUTTON_X),
Use("Use", Input.Keys.ENTER,Input.Keys.BUTTON_A),
Back("Back", Input.Keys.ESCAPE,Input.Keys.BUTTON_B),
ScrollUp("ScrollUp", Input.Keys.PAGE_UP,Input.Keys.BUTTON_L1),
ScrollDown("ScrollDown", Input.Keys.PAGE_DOWN,Input.Keys.BUTTON_R1),
;
String name;
int binding;
int defaultBinding;
int bindingController;
int defaultBindingController;
KeyBinding(String name, int defaultBinding, int defaultBindingController)
{
this.name=name;
this.defaultBinding=binding=defaultBinding;
this.defaultBindingController=bindingController=defaultBindingController;
}
public boolean isPressed(int key)
{
return key==binding||key==bindingController;
}
static String controllerPrefix="XBox_";
public String getLabelText(boolean pressed) {
if(Controllers.getCurrent()!=null)
{
return "{Scale=125%}[+"+controllerPrefix+Input.Keys.toString(bindingController).replace(" Button","")+(pressed?"_pressed]":"]");
}
else
{
if(GuiBase.isAndroid())
return "";
return "{Scale=125%}[+"+Input.Keys.toString(binding)+(pressed?"_pressed]":"]");
}
}
public static int controllerButtonToKey(Controller controller,int key)
{
ControllerMapping map=controller.getMapping();
if(key==map.buttonA) return Input.Keys.BUTTON_A;
if(key==map.buttonB) return Input.Keys.BUTTON_B;
if(key==map.buttonX) return Input.Keys.BUTTON_X;
if(key==map.buttonY) return Input.Keys.BUTTON_Y;
if(key==map.buttonBack) return Input.Keys.BUTTON_SELECT;
if(key==map.buttonStart) return Input.Keys.BUTTON_START;
if(key==map.buttonL1) return Input.Keys.BUTTON_L1;
if(key==map.buttonL2) return Input.Keys.BUTTON_L2;
if(key==map.buttonR1) return Input.Keys.BUTTON_R1;
if(key==map.buttonR2) return Input.Keys.BUTTON_R2;
if(key==map.buttonDpadUp) return Input.Keys.DPAD_UP;
if(key==map.buttonDpadDown) return Input.Keys.DPAD_DOWN;
if(key==map.buttonDpadLeft) return Input.Keys.DPAD_LEFT;
if(key==map.buttonDpadRight) return Input.Keys.DPAD_RIGHT;
if(key==map.buttonLeftStick) return Input.Keys.BUTTON_THUMBL;
if(key==map.buttonRightStick) return Input.Keys.BUTTON_THUMBR;
if(key==map.buttonDpadUp) return Input.Keys.DPAD_UP;
if(key==map.buttonDpadDown) return Input.Keys.DPAD_DOWN;
if(key==map.buttonDpadLeft) return Input.Keys.DPAD_LEFT;
if(key==map.buttonDpadRight) return Input.Keys.DPAD_RIGHT;
return 0;
}
}

View File

@@ -0,0 +1,193 @@
package forge.adventure.util;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.utils.Align;
import com.github.tommyettinger.textra.TextraButton;
public class KeyBoardDialog extends Dialog {
public interface ScreenKeyboardFinished {
void handle(String var1);
}
private final Label kbLabel;
public Actor lastInputField;
public boolean showGamepadSelector = false, lowercaseKey = true;
private final 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,
key9, key0, keyDot, keyComma, keyShift, keyBackspace, keySpace, keyOK, keyAbort;
private void shiftKey() {
lowercaseKey = !lowercaseKey;
keyShift.setColor(lowercaseKey ? Color.WHITE : Color.CYAN);
keyA.setText(lowercaseKey ? "a" : "A");
keyB.setText(lowercaseKey ? "b" : "B");
keyC.setText(lowercaseKey ? "c" : "C");
keyD.setText(lowercaseKey ? "d" : "D");
keyE.setText(lowercaseKey ? "e" : "E");
keyF.setText(lowercaseKey ? "f" : "F");
keyG.setText(lowercaseKey ? "g" : "G");
keyH.setText(lowercaseKey ? "h" : "H");
keyI.setText(lowercaseKey ? "i" : "I");
keyJ.setText(lowercaseKey ? "j" : "J");
keyK.setText(lowercaseKey ? "k" : "K");
keyL.setText(lowercaseKey ? "l" : "L");
keyM.setText(lowercaseKey ? "m" : "M");
keyN.setText(lowercaseKey ? "n" : "N");
keyO.setText(lowercaseKey ? "o" : "O");
keyP.setText(lowercaseKey ? "p" : "P");
keyQ.setText(lowercaseKey ? "q" : "Q");
keyR.setText(lowercaseKey ? "r" : "R");
keyS.setText(lowercaseKey ? "s" : "S");
keyT.setText(lowercaseKey ? "t" : "T");
keyU.setText(lowercaseKey ? "u" : "U");
keyV.setText(lowercaseKey ? "v" : "V");
keyW.setText(lowercaseKey ? "w" : "W");
keyX.setText(lowercaseKey ? "x" : "X");
keyY.setText(lowercaseKey ? "y" : "Y");
keyZ.setText(lowercaseKey ? "z" : "Z");
}
ScreenKeyboardFinished onFinish;
public void setOnFinish(ScreenKeyboardFinished finish)
{
onFinish=finish;
}
private String removeLastChar(String s) {
return (s == null || s.length() == 0)
? ""
: (s.substring(0, s.length() - 1));
}
private String transformKey(String c) {
return lowercaseKey ? c.toLowerCase() : c.toUpperCase();
}
public void toggleShiftOrBackspace(boolean shift) {
}
private void setKeyboardDialogText() {
if (onFinish != null)
onFinish.handle(kbLabel.getText().toString());
result(null);
hide();
}
public KeyBoardDialog() {
super("", Controls.getSkin());
kbLabel = Controls.newLabel("");
kbLabel.setAlignment(Align.center);
kbLabel.setFontScale(1.5f,1.5f);
keyA = Controls.newTextButton("A", () -> kbLabel.setText(kbLabel.getText()+transformKey("A")));
keyB = Controls.newTextButton("B", () -> kbLabel.setText(kbLabel.getText()+transformKey("B")));
keyC = Controls.newTextButton("C", () -> kbLabel.setText(kbLabel.getText()+transformKey("C")));
keyD = Controls.newTextButton("D", () -> kbLabel.setText(kbLabel.getText()+transformKey("D")));
keyE = Controls.newTextButton("E", () -> kbLabel.setText(kbLabel.getText()+transformKey("E")));
keyF = Controls.newTextButton("F", () -> kbLabel.setText(kbLabel.getText()+transformKey("F")));
keyG = Controls.newTextButton("G", () -> kbLabel.setText(kbLabel.getText()+transformKey("G")));
keyH = Controls.newTextButton("H", () -> kbLabel.setText(kbLabel.getText()+transformKey("H")));
keyI = Controls.newTextButton("I", () -> kbLabel.setText(kbLabel.getText()+transformKey("I")));
keyJ = Controls.newTextButton("J", () -> kbLabel.setText(kbLabel.getText()+transformKey("J")));
keyK = Controls.newTextButton("K", () -> kbLabel.setText(kbLabel.getText()+transformKey("K")));
keyL = Controls.newTextButton("L", () -> kbLabel.setText(kbLabel.getText()+transformKey("L")));
keyM = Controls.newTextButton("M", () -> kbLabel.setText(kbLabel.getText()+transformKey("M")));
keyN = Controls.newTextButton("N", () -> kbLabel.setText(kbLabel.getText()+transformKey("N")));
keyO = Controls.newTextButton("O", () -> kbLabel.setText(kbLabel.getText()+transformKey("O")));
keyP = Controls.newTextButton("P", () -> kbLabel.setText(kbLabel.getText()+transformKey("P")));
keyQ = Controls.newTextButton("Q", () -> kbLabel.setText(kbLabel.getText()+transformKey("Q")));
keyR = Controls.newTextButton("R", () -> kbLabel.setText(kbLabel.getText()+transformKey("R")));
keyS = Controls.newTextButton("S", () -> kbLabel.setText(kbLabel.getText()+transformKey("S")));
keyT = Controls.newTextButton("T", () -> kbLabel.setText(kbLabel.getText()+transformKey("T")));
keyU = Controls.newTextButton("U", () -> kbLabel.setText(kbLabel.getText()+transformKey("U")));
keyV = Controls.newTextButton("V", () -> kbLabel.setText(kbLabel.getText()+transformKey("V")));
keyW = Controls.newTextButton("W", () -> kbLabel.setText(kbLabel.getText()+transformKey("W")));
keyX = Controls.newTextButton("X", () -> kbLabel.setText(kbLabel.getText()+transformKey("X")));
keyY = Controls.newTextButton("Y", () -> kbLabel.setText(kbLabel.getText()+transformKey("Y")));
keyZ = Controls.newTextButton("Z", () -> kbLabel.setText(kbLabel.getText()+transformKey("Z")));
key1 = Controls.newTextButton("1", () -> kbLabel.setText(kbLabel.getText()+"1"));
key2 = Controls.newTextButton("2", () -> kbLabel.setText(kbLabel.getText()+"2"));
key3 = Controls.newTextButton("3", () -> kbLabel.setText(kbLabel.getText()+"3"));
key4 = Controls.newTextButton("4", () -> kbLabel.setText(kbLabel.getText()+"4"));
key5 = Controls.newTextButton("5", () -> kbLabel.setText(kbLabel.getText()+"5"));
key6 = Controls.newTextButton("6", () -> kbLabel.setText(kbLabel.getText()+"6"));
key7 = Controls.newTextButton("7", () -> kbLabel.setText(kbLabel.getText()+"7"));
key8 = Controls.newTextButton("8", () -> kbLabel.setText(kbLabel.getText()+"8"));
key9 = Controls.newTextButton("9", () -> kbLabel.setText(kbLabel.getText()+"9"));
key0 = Controls.newTextButton("0", () -> kbLabel.setText(kbLabel.getText()+"0"));
keyDot = Controls.newTextButton(".", () -> kbLabel.setText(kbLabel.getText()+"."));
keyComma = Controls.newTextButton(",", () -> kbLabel.setText(kbLabel.getText()+","));
keyShift = Controls.newTextButton("Aa", () -> shiftKey());
keyBackspace = Controls.newTextButton("<<", () -> kbLabel.setText(removeLastChar(String.valueOf(kbLabel.getText()))));
keySpace = Controls.newTextButton("SPACE", () -> kbLabel.setText(kbLabel.getText()+" "));
keyOK = Controls.newTextButton("OK", () -> setKeyboardDialogText());
keyAbort = Controls.newTextButton("Abort", () -> abortKeyInput());
this.getContentTable().add(kbLabel).width(220).height(20).colspan(10).expandX().align(Align.center);
this.getButtonTable().row();
this.getButtonTable().add(key1).width(20).height(20);
this.getButtonTable().add(key2).width(20).height(20);
this.getButtonTable().add(key3).width(20).height(20);
this.getButtonTable().add(key4).width(20).height(20);
this.getButtonTable().add(key5).width(20).height(20);
this.getButtonTable().add(key6).width(20).height(20);
this.getButtonTable().add(key7).width(20).height(20);
this.getButtonTable().add(key8).width(20).height(20);
this.getButtonTable().add(key9).width(20).height(20);
this.getButtonTable().add(key0).width(20).height(20);
this.getButtonTable().row();
this.getButtonTable().add(keyQ).width(20).height(20);
this.getButtonTable().add(keyW).width(20).height(20);
this.getButtonTable().add(keyE).width(20).height(20);
this.getButtonTable().add(keyR).width(20).height(20);
this.getButtonTable().add(keyT).width(20).height(20);
this.getButtonTable().add(keyY).width(20).height(20);
this.getButtonTable().add(keyU).width(20).height(20);
this.getButtonTable().add(keyI).width(20).height(20);
this.getButtonTable().add(keyO).width(20).height(20);
this.getButtonTable().add(keyP).width(20).height(20);
this.getButtonTable().row();
this.getButtonTable().add(keyA).width(20).height(20);
this.getButtonTable().add(keyS).width(20).height(20);
this.getButtonTable().add(keyD).width(20).height(20);
this.getButtonTable().add(keyF).width(20).height(20);
this.getButtonTable().add(keyG).width(20).height(20);
this.getButtonTable().add(keyH).width(20).height(20);
this.getButtonTable().add(keyJ).width(20).height(20);
this.getButtonTable().add(keyK).width(20).height(20);
this.getButtonTable().add(keyL).width(20).height(20);
this.getButtonTable().add(keyBackspace).width(20).height(20);
this.getButtonTable().row();
this.getButtonTable().add(keyShift).width(20).height(20);
this.getButtonTable().add(keyZ).width(20).height(20);
this.getButtonTable().add(keyX).width(20).height(20);
this.getButtonTable().add(keyC).width(20).height(20);
this.getButtonTable().add(keyV).width(20).height(20);
this.getButtonTable().add(keyB).width(20).height(20);
this.getButtonTable().add(keyN).width(20).height(20);
this.getButtonTable().add(keyM).width(20).height(20);
this.getButtonTable().add(keyDot).width(20).height(20);
this.getButtonTable().add(keyComma).width(20).height(20);
this.getButtonTable().row();
this.getButtonTable().add(keySpace).width(150).height(20).colspan(6);
this.getButtonTable().add(keyOK).width(50).height(20).colspan(2);
this.getButtonTable().add(keyAbort).width(50).height(20).colspan(2);
this.setMovable(false);
this.setKeepWithinStage(true);
this.setResizable(false);
}
private void abortKeyInput() {
hide();
result(null);
}
public void setText(String text) {
kbLabel.setText(text);
}
}

View File

@@ -10,6 +10,9 @@ import forge.adventure.data.DialogData;
import forge.adventure.player.AdventurePlayer; import forge.adventure.player.AdventurePlayer;
import forge.adventure.stage.MapStage; import forge.adventure.stage.MapStage;
import forge.card.ColorSet; import forge.card.ColorSet;
import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel;
import forge.sound.AudioClip;
import forge.util.Localizer; import forge.util.Localizer;
/** /**
@@ -45,6 +48,7 @@ public class MapDialog {
} }
this.data = JSONStringLoader.parse(Array.class, DialogData.class, S, defaultJSON); this.data = JSONStringLoader.parse(Array.class, DialogData.class, S, defaultJSON);
} }
static AudioClip audio=null;
private void loadDialog(DialogData dialog) { //Displays a dialog with dialogue and possible choices. private void loadDialog(DialogData dialog) { //Displays a dialog with dialogue and possible choices.
setEffects(dialog.action); setEffects(dialog.action);
@@ -54,6 +58,14 @@ 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;
if(audio!=null)
audio.stop();
if(dialog.voiceFile!=null)
{
audio = AudioClip.createClip(Config.instance().getFilePath(dialog.voiceFile));
if(audio!=null)
audio.play(FModel.getPreferences().getPrefInt(ForgePreferences.FPref.UI_VOL_SOUNDS)/100f);
}
TypingLabel A = Controls.newTypingLabel(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.

View File

@@ -11,9 +11,9 @@ public class Paths {
public static final String POINTS_OF_INTEREST = "world/points_of_interest.json"; public static final String POINTS_OF_INTEREST = "world/points_of_interest.json";
public static final String ITEMS = "world/items.json"; public static final String ITEMS = "world/items.json";
public static final String SKIN = "skin/ui_skin.json"; public static final String SKIN = "skin/ui_skin.json";
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 KEYS_ATLAS = "skin/keys.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";

View File

@@ -86,7 +86,12 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
if (T != null) if (T != null)
T.dispose(); T.dispose();
} }
public boolean toolTipIsVisible()
{
if(holdTooltip!=null)
return holdTooltip.tooltip_actor.getStage()!=null;
return false;
}
public Reward getReward() { public Reward getReward() {
return reward; return reward;
} }
@@ -220,6 +225,12 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
Pixmap drawingMap = new Pixmap((int) backSprite.getWidth(), (int) backSprite.getHeight(), Pixmap.Format.RGBA8888); Pixmap drawingMap = new Pixmap((int) backSprite.getWidth(), (int) backSprite.getHeight(), Pixmap.Format.RGBA8888);
DrawOnPixmap.draw(drawingMap, backSprite); DrawOnPixmap.draw(drawingMap, backSprite);
if(reward.getItem()==null)
{
needsToBeDisposed = true;
image=new Texture(drawingMap);
break;
}
Sprite item = reward.getItem().sprite(); Sprite item = reward.getItem().sprite();
DrawOnPixmap.draw(drawingMap, (int) ((backSprite.getWidth() / 2f) - item.getWidth() / 2f), (int) ((backSprite.getHeight() / 4f) * 1.7f), item); DrawOnPixmap.draw(drawingMap, (int) ((backSprite.getWidth() / 2f) - item.getWidth() / 2f), (int) ((backSprite.getHeight() / 4f) * 1.7f), item);
@@ -558,9 +569,10 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
applyProjectionMatrix(batch); applyProjectionMatrix(batch);
if (hover) if (hover|hasKeyboardFocus())
batch.setColor(0.5f, 0.5f, 0.5f, 1); batch.setColor(0.5f, 0.5f, 0.5f, 1);
if (!frontSideUp()) { if (!frontSideUp()) {
if (flipOnClick) { if (flipOnClick) {
batch.draw(backTexture, -getWidth() / 2, -getHeight() / 2, getWidth(), getHeight()); batch.draw(backTexture, -getWidth() / 2, -getHeight() / 2, getWidth(), getHeight());

View File

@@ -1,8 +1,9 @@
package forge.adventure.util; package forge.adventure.util;
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.InputListener;
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton; import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
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;
@@ -12,7 +13,7 @@ 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
*/ */
public class Selector extends Group { public class Selector extends Table {
private final ImageButton leftArrow; private final ImageButton leftArrow;
private final ImageButton rightArrow; private final ImageButton rightArrow;
private final TextraButton label; private final TextraButton label;
@@ -21,37 +22,62 @@ public class Selector extends Group {
public Selector() { public Selector() {
Selector self=this;
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)
{
@Override
public boolean hasKeyboardFocus()
{
return self.hasKeyboardFocus();
}
};
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)
{
@Override
public boolean hasKeyboardFocus()
{
return self.hasKeyboardFocus();
}
};
label = Controls.newTextButton(""); label = new Controls.TextButtonFix("")
addActor(leftArrow); {
addActor(rightArrow); @Override
addActor(label); public boolean hasKeyboardFocus()
{
return self.hasKeyboardFocus();
}
};
add(leftArrow).pad(2);
add(label).expand().fill();
add(rightArrow).pad(2);
leftArrow.addListener(new ClickListener() { leftArrow.addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
try { setCurrentIndex(currentIndex - 1);
setCurrentIndex(currentIndex - 1);
} catch (Exception e) {
e.printStackTrace();
}
} }
}); });
rightArrow.addListener(new ClickListener() { rightArrow.addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
try { setCurrentIndex(currentIndex + 1);
setCurrentIndex(currentIndex + 1);
} catch (Exception e) {
e.printStackTrace();
}
} }
}); });
addListener(new InputListener()
{
@Override
public boolean keyDown(InputEvent event, int keycode) {
if(KeyBinding.Left.isPressed(keycode))
setCurrentIndex(currentIndex - 1);
if(KeyBinding.Right.isPressed(keycode))
setCurrentIndex(currentIndex + 1);
return true;
}
});
} }
@Override @Override

View File

@@ -30,7 +30,7 @@ public class TemplateTmxMapLoader extends TmxMapLoader {
FileHandle tmxFile = new FileHandle(f); FileHandle tmxFile = new FileHandle(f);
this.root = xml.parse(tmxFile); this.root = xml.parse(tmxFile);
parameter.generateMipMaps=true;
final Array<FileHandle> textureFiles = getDependencyFileHandles(tmxFile); final Array<FileHandle> textureFiles = getDependencyFileHandles(tmxFile);
for (FileHandle textureFile : textureFiles) { for (FileHandle textureFile : textureFiles) {
Texture texture = new Texture(textureFile, parameter.generateMipMaps); Texture texture = new Texture(textureFile, parameter.generateMipMaps);

View File

@@ -7,10 +7,10 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Actor; 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.ui.*; 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.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Array;
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;
@@ -18,7 +18,10 @@ import com.github.tommyettinger.textra.TextraButton;
import com.github.tommyettinger.textra.TextraLabel; import com.github.tommyettinger.textra.TextraLabel;
import forge.Forge; import forge.Forge;
import forge.adventure.data.UIData; import forge.adventure.data.UIData;
import forge.adventure.scene.UIScene;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -28,6 +31,9 @@ import java.util.regex.Pattern;
public class UIActor extends Group { public class UIActor extends Group {
UIData data; UIData data;
Actor lastActor=null; Actor lastActor=null;
public Array<UIScene.Selectable> selectActors=new Array<>();
private HashMap<KeyBinding,Button> keyMap=new HashMap<>();
public Array<KeyHintLabel> keyLabels=new Array<>();
public UIActor(FileHandle handle) { public UIActor(FileHandle handle) {
data = (new Json()).fromJson(UIData.class, handle); data = (new Json()).fromJson(UIData.class, handle);
@@ -83,7 +89,7 @@ public class UIActor extends Group {
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 =Controls.newComboBox();
break; break;
default: default:
throw new IllegalStateException("Unexpected value: " + type); throw new IllegalStateException("Unexpected value: " + type);
@@ -93,6 +99,9 @@ public class UIActor extends Group {
float yValue = 0; float yValue = 0;
for (ObjectMap.Entry property : new OrderedMap.OrderedMapEntries<>(element)) { for (ObjectMap.Entry property : new OrderedMap.OrderedMapEntries<>(element)) {
switch (property.key.toString()) { switch (property.key.toString()) {
case "selectable":
selectActors.add(new UIScene.Selectable(newActor));
break;
case "scale": case "scale":
newActor.setScale((Float) property.value); newActor.setScale((Float) property.value);
break; break;
@@ -135,6 +144,19 @@ public class UIActor extends Group {
lastActor=newActor; lastActor=newActor;
addActor(newActor); addActor(newActor);
} }
}
public Button buttonPressed(int key)
{
for(Map.Entry<KeyBinding, Button> entry:keyMap.entrySet())
{
if(entry.getKey().isPressed(key))
{
return entry.getValue();
}
}
return null;
} }
private void readScrollPaneProperties(ScrollPane newActor, ObjectMap.Entries<String, String> entries) { private void readScrollPaneProperties(ScrollPane newActor, ObjectMap.Entries<String, String> entries) {
@@ -189,7 +211,10 @@ public class UIActor extends Group {
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;
case "binding":
keyMap.put(KeyBinding.valueOf(property.value.toString()),newActor);
break;
} }
} }
} }
@@ -254,6 +279,12 @@ public class UIActor extends Group {
case "style": case "style":
newActor.setStyle(Controls.getSkin().get(property.value.toString(), TextButton.TextButtonStyle.class)); newActor.setStyle(Controls.getSkin().get(property.value.toString(), TextButton.TextButtonStyle.class));
break; break;
case "binding":
keyMap.put(KeyBinding.valueOf(property.value.toString()),newActor);
KeyHintLabel label=new KeyHintLabel(KeyBinding.valueOf(property.value.toString()));
keyLabels.add(label);
newActor.add(label);
break;
} }
} }
newActor.layout(); newActor.layout();
@@ -287,31 +318,64 @@ public class UIActor extends Group {
} }
}); });
} }
static final public int ButtonYes=0x1;
static final public int ButtonNo=0x2; public void controllerDisconnected( ) {
static final public int ButtonOk=0x4; for(KeyHintLabel label:keyLabels)
static final public int ButtonAbort=0x8;
public Dialog showDialog(Stage stage, String header, int buttons, Runnable onOkOrYes) {
Dialog dialog =new Dialog(header, Controls.getSkin())
{ {
protected void result(Object object) label.disconnected();
{ }
if(onOkOrYes!=null&&object!=null&&object.equals(true)) }
onOkOrYes.run(); public void controllerConnected( ) {
this.hide(); for(KeyHintLabel label:keyLabels)
removeActor(this); {
} label.connected();
}; }
if((buttons&ButtonYes)!=0) }
dialog.button(Forge.getLocalizer().getMessage("lblYes"), true); public void pressUp(int code) {
if((buttons&ButtonNo)!=0) for(KeyHintLabel label:keyLabels)
dialog.button(Forge.getLocalizer().getMessage("lblNo"), false); {
if((buttons&ButtonOk)!=0) label.buttonUp(code);
dialog.button(Forge.getLocalizer().getMessage("lblOk"), true); }
if((buttons&ButtonAbort)!=0) }
dialog.button(Forge.getLocalizer().getMessage("lblAbort"), false);
addActor(dialog); public void pressDown(int code) {
dialog.show(stage); for(KeyHintLabel label:keyLabels)
return dialog; {
label.buttonDown(code);
}
}
private class KeyHintLabel extends TextraLabel {
public KeyHintLabel(KeyBinding keyBinding) {
super(keyBinding.getLabelText(false),Controls.getKeysFont());
this.keyBinding=keyBinding;
}
KeyBinding keyBinding;
public void connected( ) {
updateText();
}
private void updateText() {
setText(keyBinding.getLabelText(false));
layout();
}
public void disconnected() {
updateText();
}
public boolean buttonDown(int i) {
if(keyBinding.isPressed(i))
setText(keyBinding.getLabelText(true));
layout();
return false;
}
public boolean buttonUp( int i) {
if(keyBinding.isPressed(i))
updateText();
return false;
}
} }
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -34,7 +34,8 @@
"Sanctum of Eternity", "Sanctum of Eternity",
"Stinging Study", "Stinging Study",
"Study Hall", "Study Hall",
"Witch's Clinic" "Witch's Clinic",
"Time Vault"
], ],
"restrictedEditions": [ "restrictedEditions": [
"HTR", "HTR",

View File

@@ -2,39 +2,39 @@
"name":"Black", "name":"Black",
"mainDeck": [ "mainDeck": [
{ {
"count":12, "count":18,
"cardName": "Swamp" "cardName": "Swamp"
}, },
{ {
"count":6, "count":9,
"cardName": "Mountain" "cardName": "Mountain"
}, },
{ {
"count":6, "count":9,
"colors": ["black"], "colors": ["black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["red"], "colors": ["red"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["black"], "colors": ["black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["red"], "colors": ["red"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["black"], "colors": ["black"],
"rarity": ["rare"], "rarity": ["rare"],
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -2,43 +2,43 @@
"name":"Black", "name":"Black",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Swamp" "cardName": "Swamp"
}, },
{ {
"count":4, "count":6,
"cardName": "Mountain" "cardName": "Mountain"
}, },
{ {
"count":4, "count":6,
"cardName": "Island" "cardName": "Island"
}, },
{ {
"count":6, "count":9,
"colors": ["black"], "colors": ["black"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["red","blue"], "colors": ["red","blue"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["black"], "colors": ["black"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["red","blue"], "colors": ["red","blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["black"], "colors": ["black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [5,6] "manaCosts": [5,6]

View File

@@ -2,43 +2,43 @@
"name":"Black", "name":"Black",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Swamp" "cardName": "Swamp"
}, },
{ {
"count":4, "count":6,
"cardName": "Mountain" "cardName": "Mountain"
}, },
{ {
"count":4, "count":6,
"cardName": "Island" "cardName": "Island"
}, },
{ {
"count":6, "count":9,
"colors": ["black"], "colors": ["black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["red","blue"], "colors": ["red","blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["black"], "colors": ["black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["red","blue"], "colors": ["red","blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["black"], "colors": ["black"],
"rarity": ["rare"], "rarity": ["rare"],
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -2,39 +2,39 @@
"name":"Blue", "name":"Blue",
"mainDeck": [ "mainDeck": [
{ {
"count":12, "count":18,
"cardName": "Island" "cardName": "Island"
}, },
{ {
"count":6, "count":9,
"cardName": "Swamp" "cardName": "Swamp"
}, },
{ {
"count":6, "count":9,
"colors": ["blue"], "colors": ["blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["black"], "colors": ["black"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["blue"], "colors": ["blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["black"], "colors": ["black"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["blue"], "colors": ["blue"],
"rarity": ["rare"], "rarity": ["rare"],
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -2,43 +2,43 @@
"name":"Blue", "name":"Blue",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Island" "cardName": "Island"
}, },
{ {
"count":4, "count":6,
"cardName": "Plains" "cardName": "Plains"
}, },
{ {
"count":4, "count":6,
"cardName": "Swamp" "cardName": "Swamp"
}, },
{ {
"count":6, "count":9,
"colors": ["blue"], "colors": ["blue"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["white","black"], "colors": ["white","black"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["blue"], "colors": ["blue"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["white","black"], "colors": ["white","black"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["blue"], "colors": ["blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [5,6] "manaCosts": [5,6]

View File

@@ -2,43 +2,43 @@
"name":"Blue", "name":"Blue",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Island" "cardName": "Island"
}, },
{ {
"count":4, "count":6,
"cardName": "Plains" "cardName": "Plains"
}, },
{ {
"count":4, "count":6,
"cardName": "Swamp" "cardName": "Swamp"
}, },
{ {
"count":6, "count":9,
"colors": ["blue"], "colors": ["blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["white","black"], "colors": ["white","black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["blue"], "colors": ["blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["white","black"], "colors": ["white","black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["blue"], "colors": ["blue"],
"rarity": ["rare"], "rarity": ["rare"],
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -2,39 +2,39 @@
"name":"Green", "name":"Green",
"mainDeck": [ "mainDeck": [
{ {
"count":12, "count":18,
"cardName": "Forest" "cardName": "Forest"
}, },
{ {
"count":6, "count":9,
"cardName": "Plains" "cardName": "Plains"
}, },
{ {
"count":6, "count":9,
"colors": ["green"], "colors": ["green"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["white"], "colors": ["white"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["green"], "colors": ["green"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["white"], "colors": ["white"],
"rarity": ["Uncommon"], "rarity": ["Uncommon"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["green"], "colors": ["green"],
"rarity": ["rare"], "rarity": ["rare"],
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -2,43 +2,43 @@
"name":"Green", "name":"Green",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Forest" "cardName": "Forest"
}, },
{ {
"count":4, "count":6,
"cardName": "Plains" "cardName": "Plains"
}, },
{ {
"count":4, "count":6,
"cardName": "Mountain" "cardName": "Mountain"
}, },
{ {
"count":6, "count":9,
"colors": ["green"], "colors": ["green"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["white","red"], "colors": ["white","red"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["green"], "colors": ["green"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["red","white"], "colors": ["red","white"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["green"], "colors": ["green"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [5,6] "manaCosts": [5,6]

View File

@@ -2,43 +2,43 @@
"name":"Green", "name":"Green",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Forest" "cardName": "Forest"
}, },
{ {
"count":4, "count":6,
"cardName": "Plains" "cardName": "Plains"
}, },
{ {
"count":4, "count":6,
"cardName": "Mountain" "cardName": "Mountain"
}, },
{ {
"count":6, "count":9,
"colors": ["green"], "colors": ["green"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["white","red"], "colors": ["white","red"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["green"], "colors": ["green"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["red","white"], "colors": ["red","white"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["green"], "colors": ["green"],
"rarity": ["rare"], "rarity": ["rare"],
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -2,39 +2,39 @@
"name":"Red", "name":"Red",
"mainDeck": [ "mainDeck": [
{ {
"count":12, "count":18,
"cardName": "Mountain" "cardName": "Mountain"
}, },
{ {
"count":6, "count":9,
"cardName": "Forest" "cardName": "Forest"
}, },
{ {
"count":6, "count":9,
"colors": ["red"], "colors": ["red"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["green"], "colors": ["green"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["red"], "colors": ["red"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["green"], "colors": ["green"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["red"], "colors": ["red"],
"rarity": ["rare"] , "rarity": ["rare"] ,
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -2,43 +2,43 @@
"name":"Red", "name":"Red",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Mountain" "cardName": "Mountain"
}, },
{ {
"count":4, "count":6,
"cardName": "Forest" "cardName": "Forest"
}, },
{ {
"count":4, "count":6,
"cardName": "Swamp" "cardName": "Swamp"
}, },
{ {
"count":6, "count":9,
"colors": ["red"], "colors": ["red"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["green","black"], "colors": ["green","black"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["red"], "colors": ["red"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["green","black"], "colors": ["green","black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["red"], "colors": ["red"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [5,6] "manaCosts": [5,6]

View File

@@ -2,43 +2,43 @@
"name":"Red", "name":"Red",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Mountain" "cardName": "Mountain"
}, },
{ {
"count":4, "count":6,
"cardName": "Forest" "cardName": "Forest"
}, },
{ {
"count":4, "count":6,
"cardName": "Swamp" "cardName": "Swamp"
}, },
{ {
"count":6, "count":9,
"colors": ["red"], "colors": ["red"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["green","black"], "colors": ["green","black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["red"], "colors": ["red"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["green","black"], "colors": ["green","black"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["red"], "colors": ["red"],
"rarity": ["rare"], "rarity": ["rare"],
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -2,39 +2,39 @@
"name":"White", "name":"White",
"mainDeck": [ "mainDeck": [
{ {
"count":12, "count":18,
"cardName": "Plains" "cardName": "Plains"
}, },
{ {
"count":6, "count":9,
"cardName": "Forest" "cardName": "Forest"
}, },
{ {
"count":6, "count":9,
"colors": ["white"], "colors": ["white"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["green"], "colors": ["green"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["white"], "colors": ["white"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["green"], "colors": ["green"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["white"], "colors": ["white"],
"rarity": ["rare"], "rarity": ["rare"],
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -2,43 +2,43 @@
"name":"White", "name":"White",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Plains" "cardName": "Plains"
}, },
{ {
"count":4, "count":6,
"cardName": "Forest" "cardName": "Forest"
}, },
{ {
"count":4, "count":6,
"cardName": "Island" "cardName": "Island"
}, },
{ {
"count":6, "count":9,
"colors": ["white"], "colors": ["white"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["green","blue"], "colors": ["green","blue"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["white"], "colors": ["white"],
"rarity": ["Common"], "rarity": ["Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["green","blue"], "colors": ["green","blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["white"], "colors": ["white"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [5,6] "manaCosts": [5,6]

View File

@@ -2,43 +2,43 @@
"name":"White", "name":"White",
"mainDeck": [ "mainDeck": [
{ {
"count":10, "count":15,
"cardName": "Plains" "cardName": "Plains"
}, },
{ {
"count":4, "count":6,
"cardName": "Forest" "cardName": "Forest"
}, },
{ {
"count":4, "count":6,
"cardName": "Island" "cardName": "Island"
}, },
{ {
"count":6, "count":9,
"colors": ["white"], "colors": ["white"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["green","blue"], "colors": ["green","blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [1,2] "manaCosts": [1,2]
}, },
{ {
"count":4, "count":6,
"colors": ["white"], "colors": ["white"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":2, "count":3,
"colors": ["green","blue"], "colors": ["green","blue"],
"rarity": ["Uncommon","Common"], "rarity": ["Uncommon","Common"],
"manaCosts": [3,4] "manaCosts": [3,4]
}, },
{ {
"count":6, "count":9,
"colors": ["white"], "colors": ["white"],
"rarity": ["rare"], "rarity": ["rare"],
"manaCosts": [5,6,7,8,9] "manaCosts": [5,6,7,8,9]

View File

@@ -3,27 +3,27 @@
"height": 4300, "height": 4300,
"width": 2 "width": 2
}, },
"activeFile": "map/main_story/spawn.tmx", "activeFile": "tileset/buildings.tsx",
"automapping.whileDrawing": false, "automapping.whileDrawing": false,
"expandedProjectPaths": [ "expandedProjectPaths": [
"tileset", "tileset",
"map",
"obj", "obj",
"map/main_story" "map/main_story",
"map"
], ],
"file.lastUsedOpenFilter": "All Files (*)", "file.lastUsedOpenFilter": "All Files (*)",
"fileStates": { "fileStates": {
"map/aerie_1.tmx": { "map/aerie_1.tmx": {
"scale": 2, "scale": 3,
"selectedLayer": 5, "selectedLayer": -1,
"viewCenter": { "viewCenter": {
"x": 239.75, "x": 232.16666666666666,
"y": 136 "y": 167
} }
}, },
"map/aerie_1B.tmx": { "map/aerie_1B.tmx": {
"scale": 2, "scale": 2,
"selectedLayer": 5, "selectedLayer": -1,
"viewCenter": { "viewCenter": {
"x": 239.75, "x": 239.75,
"y": 136 "y": 136
@@ -34,9 +34,9 @@
4 4
], ],
"scale": 2, "scale": 2,
"selectedLayer": 5, "selectedLayer": -1,
"viewCenter": { "viewCenter": {
"x": 399.75, "x": 399.25,
"y": 320 "y": 320
} }
}, },
@@ -52,8 +52,8 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 217.66666666666666, "x": 217.99999999999997,
"y": 180.33333333333331 "y": 180.66666666666669
} }
}, },
"map/barbariancamp_3.tmx": { "map/barbariancamp_3.tmx": {
@@ -65,11 +65,11 @@
} }
}, },
"map/barbariancamp_4.tmx": { "map/barbariancamp_4.tmx": {
"scale": 1.5, "scale": 2,
"selectedLayer": 5, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 337, "x": 236.25,
"y": 352.3333333333333 "y": 363.5
} }
}, },
"map/castle_plains.tmx": { "map/castle_plains.tmx": {
@@ -81,19 +81,19 @@
} }
}, },
"map/castle_plains_1.tmx": { "map/castle_plains_1.tmx": {
"scale": 1.5, "scale": 3,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 254.99999999999997, "x": 209.83333333333331,
"y": 167 "y": 207
} }
}, },
"map/castle_plains_2.tmx": { "map/castle_plains_2.tmx": {
"scale": 1.5, "scale": 1.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 240.33333333333331, "x": 241,
"y": 137 "y": 137.33333333333334
} }
}, },
"map/castle_plains_3.tmx": { "map/castle_plains_3.tmx": {
@@ -101,31 +101,31 @@
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.75, "x": 239.75,
"y": 136.75 "y": 137
} }
}, },
"map/catlair_1.tmx": { "map/catlair_1.tmx": {
"scale": 2, "scale": 4,
"selectedLayer": 1, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 173.25, "x": 198.375,
"y": 132.25 "y": 183.25
} }
}, },
"map/catlair_2.tmx": { "map/catlair_2.tmx": {
"scale": 1.5,
"selectedLayer": 3,
"viewCenter": {
"x": 287.66666666666663,
"y": 117.66666666666666
}
},
"map/catlair_3.tmx": {
"scale": 2, "scale": 2,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 209.25, "x": 157.25,
"y": 134.75 "y": 117
}
},
"map/catlair_3.tmx": {
"scale": 1.5,
"selectedLayer": 3,
"viewCenter": {
"x": 225,
"y": 201.33333333333334
} }
}, },
"map/cave6.tmx": { "map/cave6.tmx": {
@@ -144,20 +144,31 @@
"y": 241.625 "y": 241.625
} }
}, },
"map/cave_1.tmx": { "map/cave_1..tmx": {
"scale": 1.5, "scale": 1.5694791666666665,
"selectedLayer": 4, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 259.66666666666663, "x": 240.52565208734322,
"y": 330.6666666666667 "y": 240.20707506471095
}
},
"map/cave_1.tmx": {
"expandedObjectLayers": [
4
],
"scale": 4,
"selectedLayer": 2,
"viewCenter": {
"x": 222.125,
"y": 370.75
} }
}, },
"map/cave_10.tmx": { "map/cave_10.tmx": {
"scale": 1, "scale": 2,
"selectedLayer": 1, "selectedLayer": 1,
"viewCenter": { "viewCenter": {
"x": 232.5, "x": 276.25,
"y": 137 "y": 184.5
} }
}, },
"map/cave_11.tmx": { "map/cave_11.tmx": {
@@ -172,7 +183,7 @@
"scale": 1, "scale": 1,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 232.5, "x": 233,
"y": 136 "y": 136
} }
}, },
@@ -180,7 +191,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 223.66666666666666, "x": 223.99999999999997,
"y": 135.33333333333334 "y": 135.33333333333334
} }
}, },
@@ -196,7 +207,7 @@
"scale": 3, "scale": 3,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 227.5, "x": 227.33333333333331,
"y": 135.66666666666663 "y": 135.66666666666663
} }
}, },
@@ -332,7 +343,7 @@
"scale": 1.0548958333333331, "scale": 1.0548958333333331,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 240.78206773970578, "x": 239.83410684309274,
"y": 136.50636911227411 "y": 136.50636911227411
} }
}, },
@@ -380,7 +391,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 480, "x": 479.99999999999994,
"y": 320 "y": 320
} }
}, },
@@ -391,8 +402,8 @@
"scale": 2, "scale": 2,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 231.75, "x": 240.25,
"y": 136.5 "y": 136
} }
}, },
"map/cave_20.tmx": { "map/cave_20.tmx": {
@@ -1319,15 +1330,15 @@
"scale": 2, "scale": 2,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 225.25, "x": 240.25,
"y": 135.75 "y": 136
} }
}, },
"map/cave_4.tmx": { "map/cave_4.tmx": {
"scale": 1, "scale": 1,
"selectedLayer": 2, "selectedLayer": 2,
"viewCenter": { "viewCenter": {
"x": 219.5, "x": 220,
"y": 135 "y": 135
} }
}, },
@@ -1367,7 +1378,7 @@
"scale": 1, "scale": 1,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 219.5, "x": 220,
"y": 135 "y": 135
} }
}, },
@@ -1375,7 +1386,7 @@
"scale": 3, "scale": 3,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 227.5, "x": 227.33333333333331,
"y": 135.66666666666663 "y": 135.66666666666663
} }
}, },
@@ -1383,7 +1394,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 223.66666666666666, "x": 223.99999999999997,
"y": 135.33333333333334 "y": 135.33333333333334
} }
}, },
@@ -1391,15 +1402,15 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 242.99999999999997, "x": 243.33333333333337,
"y": 150.66666666666669 "y": 151.33333333333334
} }
}, },
"map/crypt_2.tmx": { "map/crypt_2.tmx": {
"scale": 2, "scale": 2,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 233.25, "x": 233.5,
"y": 135.5 "y": 135.5
} }
}, },
@@ -1407,7 +1418,7 @@
"scale": 2, "scale": 2,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 233.25, "x": 233.5,
"y": 135.5 "y": 135.5
} }
}, },
@@ -1415,7 +1426,7 @@
"scale": 2, "scale": 2,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 233.25, "x": 233.5,
"y": 135.5 "y": 135.5
} }
}, },
@@ -1423,7 +1434,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 311, "x": 311.33333333333337,
"y": 318.6666666666667 "y": 318.6666666666667
} }
}, },
@@ -1431,15 +1442,15 @@
"scale": 3, "scale": 3,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 221.66666666666663, "x": 221.33333333333331,
"y": 302.83333333333337 "y": 302.66666666666663
} }
}, },
"map/djinnpalace_1.tmx": { "map/djinnpalace_1.tmx": {
"scale": 1.5, "scale": 1.5,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 186.33333333333331, "x": 186.66666666666663,
"y": 90.66666666666669 "y": 90.66666666666669
} }
}, },
@@ -1479,7 +1490,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 231.66666666666666, "x": 231.99999999999997,
"y": 135.33333333333334 "y": 135.33333333333334
} }
}, },
@@ -1487,7 +1498,7 @@
"scale": 2, "scale": 2,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 233.25, "x": 233.5,
"y": 135.5 "y": 135.5
} }
}, },
@@ -1495,7 +1506,7 @@
"scale": 2, "scale": 2,
"selectedLayer": 2, "selectedLayer": 2,
"viewCenter": { "viewCenter": {
"x": 233.25, "x": 233.5,
"y": 135.5 "y": 135.5
} }
}, },
@@ -1511,15 +1522,15 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 391, "x": 390.66666666666663,
"y": 399.33333333333326 "y": 398.66666666666663
} }
}, },
"map/factory_1.tmx": { "map/factory_1.tmx": {
"scale": 1.5, "scale": 1.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 244.99999999999997, "x": 245.33333333333337,
"y": 139.33333333333334 "y": 139.33333333333334
} }
}, },
@@ -1527,7 +1538,7 @@
"scale": 2, "scale": 2,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 233.25, "x": 233.5,
"y": 135.5 "y": 135.5
} }
}, },
@@ -1535,7 +1546,7 @@
"scale": 4, "scale": 4,
"selectedLayer": 6, "selectedLayer": 6,
"viewCenter": { "viewCenter": {
"x": 236.625, "x": 236.5,
"y": 135.75 "y": 135.75
} }
}, },
@@ -1543,7 +1554,7 @@
"scale": 0.5, "scale": 0.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 455, "x": 456,
"y": 318 "y": 318
} }
}, },
@@ -1554,16 +1565,16 @@
"scale": 3, "scale": 3,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 230.5, "x": 230.33333333333331,
"y": 155.83333333333331 "y": 155.66666666666663
} }
}, },
"map/fort_1.tmx": { "map/fort_1.tmx": {
"scale": 1.5, "scale": 1.5,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 289.66666666666663, "x": 289.99999999999994,
"y": 92.33333333333331 "y": 92.66666666666669
} }
}, },
"map/fort_10.tmx": { "map/fort_10.tmx": {
@@ -1744,8 +1755,8 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 255.66666666666666, "x": 255.99999999999997,
"y": 103.66666666666666 "y": 104
} }
}, },
"map/grove_10.tmx": { "map/grove_10.tmx": {
@@ -1920,8 +1931,8 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 240, "x": 239.99999999999997,
"y": 135.99999999999994 "y": 136
} }
}, },
"map/grove_9.tmx": { "map/grove_9.tmx": {
@@ -1942,16 +1953,24 @@
"scale": 2, "scale": 2,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 255.25, "x": 255,
"y": 122.25 "y": 122.5
}
},
"map/kavulair.tmx": {
"scale": 1.9712500000000002,
"selectedLayer": 0,
"viewCenter": {
"x": 240.45656309448316,
"y": 136.46163601775524
} }
}, },
"map/magetower_1.tmx": { "map/magetower_1.tmx": {
"scale": 1.5, "scale": 4,
"selectedLayer": 2, "selectedLayer": 2,
"viewCenter": { "viewCenter": {
"x": 240.33333333333331, "x": 218.75,
"y": 136 "y": 153.5
} }
}, },
"map/magetower_10.tmx": { "map/magetower_10.tmx": {
@@ -1991,7 +2010,7 @@
"scale": 2, "scale": 2,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 240.25, "x": 240.5,
"y": 369.5 "y": 369.5
} }
}, },
@@ -1999,7 +2018,7 @@
"scale": 2, "scale": 2,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.75, "x": 240,
"y": 136 "y": 136
} }
}, },
@@ -2092,11 +2111,11 @@
} }
}, },
"map/main_story/black_castle.tmx": { "map/main_story/black_castle.tmx": {
"scale": 2, "scale": 4,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 235.5, "x": 220.375,
"y": 208.75 "y": 487
} }
}, },
"map/main_story/blue_castle.tmx": { "map/main_story/blue_castle.tmx": {
@@ -2109,10 +2128,10 @@
}, },
"map/main_story/colorless_castle.tmx": { "map/main_story/colorless_castle.tmx": {
"scale": 2, "scale": 2,
"selectedLayer": 1, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 243, "x": 242.75,
"y": 339.25 "y": 339
} }
}, },
"map/main_story/crypt.tmx": { "map/main_story/crypt.tmx": {
@@ -2124,11 +2143,11 @@
} }
}, },
"map/main_story/final_castle.tmx": { "map/main_story/final_castle.tmx": {
"scale": 1.5, "scale": 4,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 240, "x": 212.125,
"y": 912 "y": 1718.25
} }
}, },
"map/main_story/forest_capital.tmx": { "map/main_story/forest_capital.tmx": {
@@ -2195,7 +2214,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 240, "x": 240.33333333333334,
"y": 240 "y": 240
} }
}, },
@@ -2203,11 +2222,11 @@
"expandedObjectLayers": [ "expandedObjectLayers": [
4 4
], ],
"scale": 4, "scale": 3,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 240, "x": 231.83333333333331,
"y": 240 "y": 243.66666666666666
} }
}, },
"map/main_story/swamp_capital.tmx": { "map/main_story/swamp_capital.tmx": {
@@ -2281,7 +2300,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 240, "x": 239.99999999999997,
"y": 136 "y": 136
} }
}, },
@@ -2388,16 +2407,16 @@
"scale": 3, "scale": 3,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 235.5, "x": 235.33333333333331,
"y": 135.83333333333331 "y": 136
} }
}, },
"map/nest_blue_1.tmx": { "map/nest_blue_1.tmx": {
"scale": 0.75, "scale": 0.75,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 391.3333333333333, "x": 391.99999999999994,
"y": 350 "y": 350.6666666666667
} }
}, },
"map/nest_white_1.tmx": { "map/nest_white_1.tmx": {
@@ -2415,7 +2434,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 1, "selectedLayer": 1,
"viewCenter": { "viewCenter": {
"x": 240.33333333333331, "x": 240.66666666666663,
"y": 239.3333333333333 "y": 239.3333333333333
} }
}, },
@@ -2671,16 +2690,16 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 240, "x": 239.99999999999997,
"y": 136.66666666666663 "y": 136.66666666666669
} }
}, },
"map/snowabbey_1.tmx": { "map/snowabbey_1.tmx": {
"scale": 1.6011458333333333, "scale": 1.6011458333333333,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 240.14052436406223, "x": 240.4528007286449,
"y": 136.15249495803786 "y": 136.15249495803783
} }
}, },
"map/snowabbey_2.tmx": { "map/snowabbey_2.tmx": {
@@ -2706,8 +2725,8 @@
"scale": 2, "scale": 2,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.75, "x": 240,
"y": 136.25 "y": 136.5
} }
}, },
"map/swamp_town_2.tmx": { "map/swamp_town_2.tmx": {
@@ -2744,7 +2763,7 @@
"scale": 1.5002083333333331, "scale": 1.5002083333333331,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 239.96667129565338, "x": 239.9666712956534,
"y": 136.64768782113595 "y": 136.64768782113595
} }
}, },
@@ -2784,7 +2803,7 @@
"scale": 3, "scale": 3,
"selectedLayer": 2, "selectedLayer": 2,
"viewCenter": { "viewCenter": {
"x": 239.99999999999997, "x": 239.66666666666669,
"y": 240 "y": 240
} }
}, },
@@ -2808,7 +2827,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 240, "x": 239.99999999999997,
"y": 136 "y": 136
} }
}, },
@@ -2816,7 +2835,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 240, "x": 239.99999999999997,
"y": 136 "y": 136
} }
}, },
@@ -2830,7 +2849,7 @@
}, },
"tileset/buildings.tsx": { "tileset/buildings.tsx": {
"scaleInDock": 3, "scaleInDock": 3,
"scaleInEditor": 2 "scaleInEditor": 1.5
}, },
"tileset/main.tsx": { "tileset/main.tsx": {
"dynamicWrapping": false, "dynamicWrapping": false,
@@ -2838,46 +2857,37 @@
"scaleInEditor": 2 "scaleInEditor": 2
} }
}, },
"last.exportedFilePath": "G:/Develop/Forge/forge/forge-gui/res/adventure/Shandalar/maps/map",
"map.height": 60, "map.height": 60,
"map.lastUsedExportFilter": "Alle Dateien (*)",
"map.lastUsedFormat": "tmx", "map.lastUsedFormat": "tmx",
"map.layerDataFormat": null, "map.layerDataFormat": null,
"map.tileHeight": 16, "map.tileHeight": 16,
"map.tileWidth": 16, "map.tileWidth": 16,
"map.width": 90, "map.width": 90,
"openFiles": [ "openFiles": [
"map/main_story/green_castle.tmx", "map/cave_1.tmx",
"map/main_story/red_castle.tmx",
"map/main_story/plains_capital.tmx",
"map/main_story/forest_capital.tmx",
"map/main_story/mountain_capital.tmx",
"map/main_story/island_capital.tmx",
"map/main_story/spawn.tmx",
"map/main_story/final_castle.tmx",
"map/main_story/white_castle.tmx",
"tileset/main.tsx", "tileset/main.tsx",
"tileset/buildings.tsx", "map/cave_17.tmx",
"map/zombietown.tmx", "map/cave_2.tmx",
"map/yule_town.tmx", "map/cave_3.tmx",
"map/wurmpond_1.tmx", "tileset/buildings.tsx"
"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": "int", "property.type": "int",
"recentFiles": [ "recentFiles": [
"map/main_story/green_castle.tmx", "map/cave_1.tmx",
"map/main_story/red_castle.tmx", "map/cave_1..tmx",
"map/main_story/plains_capital.tmx", "map/catlair_1.tmx",
"map/main_story/forest_capital.tmx", "map/catlair_2.tmx",
"map/main_story/mountain_capital.tmx", "map/catlair_3.tmx",
"map/main_story/island_capital.tmx", "map/main_story/black_castle.tmx",
"map/aerie_1.tmx",
"map/aerie_1B.tmx",
"map/aerie_1C.tmx",
"map/main_story/skep.tmx", "map/main_story/skep.tmx",
"map/main_story/swamp_capital.tmx", "map/main_story/spawn.tmx",
"map/waste_town.tmx", "map/barbariancamp_4.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,15 +1,10 @@
<?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="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="89"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="89">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
<tileset firstgid="1" source="../tileset/main.tsx"/> <tileset firstgid="1" source="../tileset/main.tsx"/>
<tileset firstgid="3477" source="../tileset/buildings.tsx"/> <tileset firstgid="10113" source="../tileset/buildings.tsx"/>
<layer id="6" name="Collision" width="30" height="17">
<data encoding="base64" compression="zlib">
eJxjYCAMZHgIY2oDYs2kpt3IZtXzYleDLE4Nu8k1gxK7KXU3Ofpx6SEmnCmxG6R+Fx6MDJDF9/JgmkOqvSCAyx/YAEitNJXsJRUMZXvR4xJbPEfx4k8HtPAvLD6R0wB6eqBmXqKH/oEor4gxAz0dUctOQmZRmn6JtRtbPUtJ/QsA90Mgnw==
</data>
</layer>
<layer id="1" name="Background" width="30" height="17"> <layer id="1" name="Background" width="30" height="17">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJxr4mZgaBrFo3gUj+JRPIpH8YjAAJnxGPY= eJxr4mZgaBrFo3gUj+JRPIpH8YjAAJnxGPY=

View File

@@ -1,15 +1,10 @@
<?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="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="90"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="90">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
<tileset firstgid="1" source="../tileset/main.tsx"/> <tileset firstgid="1" source="../tileset/main.tsx"/>
<tileset firstgid="3477" source="../tileset/buildings.tsx"/> <tileset firstgid="10113" source="../tileset/buildings.tsx"/>
<layer id="6" name="Collision" width="30" height="17">
<data encoding="base64" compression="zlib">
eJy9lYENgCAMBBkAN7CL6TDsBcsJicTmI1Jo8ZNGUPgTKOBcX7vvh7Wknpbs6kX5Gbb3Nvy9BZt70ICfhs37ljJBvbe2M2xkzmq0b22vXSstt+QNn+cz16N/gqt+O7Y5boQgYY5hHoxyi8L97zje1dyWcJ55pIVc6V7W7iVkJYGf1f7767xCj6+8sj6fW16tsa+6C63v3wuqfx2I
</data>
</layer>
<layer id="1" name="Background" width="30" height="17"> <layer id="1" name="Background" width="30" height="17">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJxr4mZgaBrFo3gUj+JRPIpH8YjAAJnxGPY= eJxr4mZgaBrFo3gUj+JRPIpH8YjAAJnxGPY=
@@ -22,7 +17,7 @@
</layer> </layer>
<layer id="7" name="Ornamental Walls" width="30" height="17"> <layer id="7" name="Ornamental Walls" width="30" height="17">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJxjYBi8wIKJgeEyHmzJRBs7rxAw9xKV7SbGTmrbDbPzDwl6KLUbZmcYO+l6KbU7hnytZAMzpPBFD2czPH6BpW8TMv2Lnk+IBTA3kWsvTL+9IHn6KLWXVDkYINfea0B9MxjJs3caUN91CtIzPrtpZSc5dlPLTlx2YwtnatuJbPd0Rgg2Q2LDMC3spBUAAGSiK40= eJxjYBi8wIKJgeEyHmzJRBs7rxAw9xKV7SbGTmrbDbPzDwl6KLUbZmcYO+l6KbU7hnytZAMzpPBFD2czPH6BpW8TMv2Lnk+IBTA3kWsvTL+2Nnn6KLWXVDkYINfea0B9MxjJs3caUN91CtIzPrtpZSc5dlPLTlx2YwtnatuJbPd0Rgg2Q2LDMC3spBUAAHpgK5M=
</data> </data>
</layer> </layer>
<layer id="3" name="Clutter" width="30" height="17"> <layer id="3" name="Clutter" width="30" height="17">
@@ -30,7 +25,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">
eJxjYBgF6MCMiYGhDYccLnFq2TsQANneN4KYeKQDEyrFC674vcxEnDpy7UHnqzDi1quKR44Y0IZED1R6phe4RqH/rtM4XdEaDEZ7aVk+g8B0RlQaXXyoAAAl7g7H eJxjYBgF6MCMiYGhDYccLnFq2TsQANneG9qYeKQDEyrFC674vcxEnDpy7UHnqzDi1quKR44Y0IZED1R6phe4RqH/rtM4XdEaDEZ7aVk+g8B0RlQaXXyoAADVrA7l
</data> </data>
</layer> </layer>
<objectgroup id="4" name="Objects"> <objectgroup id="4" name="Objects">

View File

@@ -1,15 +1,10 @@
<?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="50" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="9" nextobjectid="96"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="50" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="9" nextobjectid="96">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
<tileset firstgid="1" source="../tileset/main.tsx"/> <tileset firstgid="1" source="../tileset/main.tsx"/>
<tileset firstgid="3477" source="../tileset/buildings.tsx"/> <tileset firstgid="10113" source="../tileset/buildings.tsx"/>
<layer id="6" name="Collision" width="50" height="40">
<data encoding="base64" compression="zlib">
eJzt08ENgCAQBEC+RujAeiwL+qI6HrSgOcSZZP+7yV1KAACs7srRDZ7RN9hRz5mvu48ZiOKX+BP3zltaiW4AAAD7GX1uBos=
</data>
</layer>
<layer id="1" name="Background" width="50" height="40"> <layer id="1" name="Background" width="50" height="40">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJztz7ENgDAQBEGniK4JXDclIOOX7hETTL47jzEmAACtXeezdGPFQ/eXlYeuL28eur3sPHR68eHDh4+vfOy+pNsrXtLNFS/p1oqXdCMAAP9wA7bZW78= eJztz7ENgDAQBEGniK4JXDclIOOX7hETTL47jzEmAACtXeezdGPFQ/eXlYeuL28eur3sPHR68eHDh4+vfOy+pNsrXtLNFS/p1oqXdCMAAP9wA7bZW78=
@@ -30,7 +25,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">
eJzt08ENgCAQBMCjA5qgNOxDK5cCICHxYU5nnve6TXYjAACAXb1GHPXtL547R4brAznIK9uWWpnfbYkd2fq+ou8AAMAf3IFIBlE= eJzt07ENgDAMBEAzDE22CXuQ/UsYIEiRUkQmd6Urv/QfAQAAjKol4iqrv5h3vxnaD3KQV7YtnUf/bkuMyNb3L/oOAADs4AEe6waZ
</data> </data>
</layer> </layer>
<objectgroup id="4" name="Objects"> <objectgroup id="4" name="Objects">

View File

@@ -1,15 +1,10 @@
<?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="40" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="68"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="40" height="40" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="68">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
<tileset firstgid="1" source="../tileset/main.tsx"/> <tileset firstgid="1" source="../tileset/main.tsx"/>
<tileset firstgid="3477" source="../tileset/buildings.tsx"/> <tileset firstgid="10113" source="../tileset/buildings.tsx"/>
<layer id="6" name="Collision" width="40" height="40">
<data encoding="base64" compression="zlib">
eJzdmGEKwzAIhft30J6g3XV6iF1m99rpxmClEjT6jDWhD4TRuflpNMm2P6Zpv5GVsvp95tNey3U8klB/LyOi94L5c/KwcXFbWLTc1zm+dh4+KU5vPo2xlS+KvRZPm5dDET1Pecrv9NbQK08+mXwecXGz+Wp1RXuwh5AaHoqcDSsflcaXzZbNZ60/F7fn2SFxjMwnPafvoXzb/365kbsmfU2f/Qzh0/KxfOY5n5yUmctD4itjanE9fBatiq+lz9Ae1Pjo/Gp8FlZP/5XrJu0pCJ+Fs/TjFLm+LXySrHzafKB8Vl1Zv4i9eXQ+bi8+xO3RkriZ6n22aXeHUc7fmqx8mfdUGq+lfhnMo6yvlGvPHmydD4TvirX28rXU1fo/nYUtao3R30heQ2Jk8CCsXp872hdPxLb8
</data>
</layer>
<layer id="1" name="Background" width="40" height="40"> <layer id="1" name="Background" width="40" height="40">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJzt1KENACAMAMEmKEbs2CQMhOoEFRWcOP/qc0ckAADQdtZ8A0C5ngQAfO4B4qxlhg== eJzt1KENACAMAMEmKEbs2CQMhOoEFRWcOP/qc0ckAADQdtZ8A0C5ngQAfO4B4qxlhg==
@@ -30,7 +25,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">
eJzlWDtOAzEQTZAoECgRRSggVTpKjsUJuA4S3AAkPiehYQ8QLoBSgQlPO5mM52N7A4InRc56x/PxzD5/RqO/ibejYWRLsQsbJXhmz+/7/f8rY6wU08tEf+8BtQsdmi+QQUtjkORqoOlonWM6l1Hk5kB6t2R+z79bK56nsFdrnLLnXG65fS0mDZG8wJezMlOiLq12a3Kc4ronzzyPku1d1q8GbqvUrxKel+pIqy1aC5CTclpanxqknNaMtzhbQ66O+RrC7VwcbPahPfGZ/cJdQNaqiUieIJt0PlbY1GS865W1HkuQchNBaVzom2+/qoLGy93En9vO2KfQvihHUx/o97f61HMz9v1Wgs2h+fl1b91eTvu+xfG23O1hL7tLRGwmWeRhyXjf4lTPeoMW3Obxj87lT83f+Xiz73qal03g8dL/pdwCHoMe5COaXw9arslem2mOqSx8mFX6hPmaZd7DpmdfnmQt3qvhGynGLsCjkKWxtOK/3Pcv8TPg4WdAOr9a4N9EZKwGnA+G3K9Kfua4wYqpRcyIle89SnTTMbl1vWRfxuHRoe3lW+yz4AONs+TsZdWVZKcFNH05Xz33S1FwW/zcQG1xnz01+hCQteC5V7PGRu4Ma+CJd0j7OUTPSL/1Lvg/4gPXOKgV eJzlWDtOAzEQTZAoEIguFJADZEXFYTgLl+AWcAOQ+NRUuQNtinABSjDhaSeT8Xxs74LgSZGz3vF8PLPPn8nkb+LtaBjZUoxhowTP7Pl9v/9/ZYyVYnpZ6O89oHahQ/MFMmhpDJJcDTQdrXNM5zKK3BxI79bM7/l3a8XzFPZqg1P2nMstt6/FpCGSF/hyVmZK1KXVbk2OU1z35JnnUbI9Zv1q4LZK/SrheamOtNqitQA5Kael9alBymnNeIuzNeTqmK8h3M7FwXYf2hOf2S/cBWStmojkCbJJ52OFTU3Gu15Z67EEKTcRlMaFvvnuqypovLxc+HO7NPYptC/K0dQH+v2tPvXcTH2/lWBzaH5+3du0l13fd3y+K3d72MuOiYjNJIs8rBnvW5zqWW/Qgts8/tG5/Kn566bbfdddXjaBx0v/l3ILeAx6kI9ofj1ouSZ7baY5prLwYVbpE+ZrlnkPm559eZK1eK+Gb6QYlwEehSyNpRX/5b5/iZ8BDz8D0vnVAv8mImM14Hww5H5V8jPHDVZMLWJGrHzvUaKbjsmt6yX7Mg6PDm0v32KfBR9onCVnL6uuJDstoOnL+eq5X4qC2+LnBmqL++yp0YeArAXPvZo1NnJnWANPvEPazyF6Rvqtd8H/ER8+QKh7
</data> </data>
</layer> </layer>
<objectgroup id="4" name="Objects"> <objectgroup id="4" name="Objects">

View File

@@ -1,15 +1,10 @@
<?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="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="63"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="63">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
<tileset firstgid="1" source="../tileset/main.tsx"/> <tileset firstgid="1" source="../tileset/main.tsx"/>
<tileset firstgid="3477" source="../tileset/buildings.tsx"/> <tileset firstgid="10113" source="../tileset/buildings.tsx"/>
<layer id="6" name="Collision" width="30" height="17">
<data encoding="base64" compression="zlib">
eJztlVEOgzAIhnkXT2C82DxL3blcu7tNYon/GG1s4t76J6RogQ8bU4gOLSPRi4ke42GLWW1MSbJvTWt4uTN/58rzlNeNz3eiiako27/4kc8cm1vjqmL2N9O3spSh9THO40perHyDJz0DZKGQI2yPOzcyrwg5+K/8m1vro3M7t3Pv4753/zm01wp7TrrYs+XqXeexpe6azdtL+Q5fK3ElrmVjjcTlvvTOxxicWQH6wHOx88ibm9aQHYZfZot9ALewVBU=
</data>
</layer>
<layer id="1" name="Background" width="30" height="17"> <layer id="1" name="Background" width="30" height="17">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJyrZWFgqB3Fo3gUj+JRPIpH8YjAADIiAQ4= eJyrZWFgqB3Fo3gUj+JRPIpH8YjAADIiAQ4=

View File

@@ -1,15 +1,10 @@
<?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="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="56"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="56">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
<tileset firstgid="1" source="../tileset/main.tsx"/> <tileset firstgid="1" source="../tileset/main.tsx"/>
<tileset firstgid="3477" source="../tileset/buildings.tsx"/> <tileset firstgid="10113" source="../tileset/buildings.tsx"/>
<layer id="6" name="Collision" width="30" height="17">
<data encoding="base64" compression="zlib">
eJyL5mVg2MVDXxwFtFMWSNMbSPMQb680knthYBcJ+smxt5abgWEPDnV7geL13NS3F2Ynul8psZsYe6WJDEdSwnvUXvz24opfWti7E5rP8YFooPxuKtsLsxuXOpAZpNhJir0ggK/cIxWQYi81wai99LOX1LoT5k5y9CJjAITiRXU=
</data>
</layer>
<layer id="1" name="Background" width="30" height="17"> <layer id="1" name="Background" width="30" height="17">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJzr42Rg6MOC25AwNnl86onB1DJnqNtLrt3E6hu1d9TeUXtH7R3q9pJjJ6nuG6z20qL+BQDfkyFi eJzr42Rg6MOC25AwNnl86onB1DJnqNtLrt3E6hu1d9TeUXtH7R3q9pJjJ6nuG6z20qL+BQDfkyFi

View File

@@ -1,15 +1,10 @@
<?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="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="56"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="17" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="56">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
<tileset firstgid="1" source="../tileset/main.tsx"/> <tileset firstgid="1" source="../tileset/main.tsx"/>
<tileset firstgid="3477" source="../tileset/buildings.tsx"/> <tileset firstgid="10113" source="../tileset/buildings.tsx"/>
<layer id="6" name="Collision" width="30" height="17">
<data encoding="base64" compression="zlib">
eJyL5mVg2MVDXxwFtFMWSNMbSPOM2ksMgMUTPezFZw+pbiDHv9JI6ZLcOBpK9lIDDAV7BzpdUQOM2osfoMcjuWXWQPqX1LoT5k5y9CJjAGyrOkI=
</data>
</layer>
<layer id="1" name="Background" width="30" height="17"> <layer id="1" name="Background" width="30" height="17">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJzr42Rg6MOC25AwNnl86onB1DJnqNtLrt3E6hu1d9TeUXtH7R3q9pJjJ6nuG6z20qL+BQDfkyFi eJzr42Rg6MOC25AwNnl86onB1DJnqNtLrt3E6hu1d9TeUXtH7R3q9pJjJ6nuG6z20qL+BQDfkyFi
@@ -25,11 +20,11 @@
<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">
eJy9VTkSwjAMTEsR4FfxTPgPOR5pfkCdtNDREA3ZyUYj2U7DNtg6bHm1KFW14XH6/c5ki4ZtqPf+YNgFo9rzHZ5fA/d2FNvm04rQGLaSmgSoq1/jb+seXER6Z1B7neMhFNp7VbPugwb83IvneVtLrcwD+3JgnUy05rsYn8TZ7MO5OAccaC2wTri/s4rj/WvJedcbL90BPrVe7kYszmOf1H9Z3nc9wK3A0qzWQ07DrDvOnZWfObLeBQzqXYyUdixfdHSSgpUD7VhzS3y6xymI5lpaT0aM1lcOzBn6ZfW2BE2V7vlYODstTvAunBGcWO4768vjxZoHVm1evthLvjcc72kY/fRm1D+R+i95s8biDbbofG+/XkBHzQ== eJy9VTkSwjAMdEvBO8JP4pnwH3I8kcL8ADom+QIUoCGaLJqVbRq2wZZkWV4tSggbLrvP7wK2RGzj/tsfiV0wmT3e4fkt9N4eYrvysSq0xFZTk0DrGtb447pXLhK8M5q9PeMhVtoHU7Ptg4X6sRfnw7aWWpEH9JWAOplhjXch7pnc6NO8mkc5sFpAnWB/FxOH+2sTwq3ZeOl/4NPq5URiNR/6pP7H+85n4+dmYJq1eihpGHWHZxfjR47YuxSjeRcipx3mS45OcmBnVDtsbonP9jgH0VwH65nEWH2VgJxpv1hva9CGfM+nytnJONF3aY7oxGLfUV8eL2wesNq882Kv+d5gvKdh7ac3o/6J3H/JmzWMN7Ul53v7ApCcShM=
</data> </data>
</layer> </layer>
<objectgroup id="4" name="Objects"> <objectgroup id="4" name="Objects">
<object id="38" template="../obj/entry_up.tx" x="208" y="281"> <object id="38" template="../obj/entry_up.tx" x="1" y="281" width="478" height="16">
<properties> <properties>
<property name="teleport" value=""/> <property name="teleport" value=""/>
</properties> </properties>

View File

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="60">
<tileset firstgid="1" source="../tileset/main.tsx"/>
<tileset firstgid="10113" source="../tileset/buildings.tsx"/>
<layer id="1" name="Background" width="30" height="30">
<data encoding="base64" compression="zlib">
eJzz42Rg8BvFo3gUj+JRPIqHINbghuCRYi/M7uEa1gMZnwMRxgPh17wBtpfecZyHZvdgsDePTm4YqeXUSLOXGvEMABb/Ltw=
</data>
</layer>
<layer id="6" name="BackgroundBlend" width="30" height="30">
<data encoding="base64" compression="zlib">
eJxjYBgFo2AUjIJRMApGwVAA6tz0secE0J4uLvrbO5CgB+pfevmVD2jfRQ4GBi2ofUeB9DE62Z3PiYjjbi7C6qkFYH4GAU06pymQn0EAFt7nge64wIFwD60AzM+g8AaFdS4nqntoBfI4Uf3MDbSbB4h56RjfWgNUbgyUvejl5lACAE8hEqc=
</data>
</layer>
<layer id="2" name="Ground" width="30" height="30">
<data encoding="base64" compression="zlib">
eJztlE0KgCAQRl2OB8uii1rWrfqhY2SoIGK1aT4IZuAtZvX8RkejlTKCIAiC8AMcKTXTfc9F6+kfek7v4pkosAG91vuGjAPkReR7mvOqMW/KxfvMqwFlLQuRveYtz8DhfvNyzX3XYW9Gqjst806Vfgvc4+S/CuVLuJgXscM5XcyL/r++8p7+7h8J
</data>
</layer>
<layer id="7" name="Foreground" width="30" height="30">
<properties>
<property name="spriteLayer" type="bool" value="true"/>
</properties>
<data encoding="base64" compression="zlib">
eJztwQEBAAAAgiD/r25IQAEAAPBoDhAAAQ==
</data>
</layer>
<objectgroup id="4" name="Objects">
<object id="38" template="../obj/entry_up.tx" x="196" y="480" width="40" height="8">
<properties>
<property name="teleport" value=""/>
</properties>
</object>
<object id="48" template="../obj/treasure.tx" x="240" y="400">
<properties>
<property name="reward">[{
&quot;type&quot;: &quot;randomCard&quot;,
&quot;count&quot;: 2,
&quot;colors&quot;: [ &quot;colorID&quot; ]
},{
&quot;type&quot;: &quot;randomCard&quot;,
&quot;count&quot;: 1,
&quot;probability&quot;: 0.5,
&quot;rarity&quot;: [ &quot;rare&quot; ],
&quot;colors&quot;: [ &quot;colorID&quot; ]
},{
&quot;type&quot;: &quot;randomCard&quot;,
&quot;colors&quot;: [ &quot;green&quot; ],
&quot;count&quot;: 3,
&quot;addMaxCount&quot;: 2
}]</property>
</properties>
</object>
<object id="49" template="../obj/gold.tx" x="144" y="384"/>
<object id="50" template="../obj/enemy.tx" x="208" y="448">
<properties>
<property name="enemy" value="Wurm"/>
</properties>
</object>
<object id="55" template="../obj/enemy.tx" x="152" y="288.333">
<properties>
<property name="enemy" value="Wurm"/>
</properties>
</object>
<object id="56" template="../obj/enemy.tx" x="194.333" y="283">
<properties>
<property name="effect">{
&quot;lifeModifier&quot;: 4,
&quot;startBattleWithCard&quot;: [ &quot;Forest&quot;, &quot;Forest&quot; ]
}</property>
<property name="enemy" value="Wurm"/>
</properties>
</object>
<object id="57" template="../obj/enemy.tx" x="216.667" y="255">
<properties>
<property name="effect">{
&quot;lifeModifier&quot;: 10,
&quot;startBattleWithCard&quot;: [ &quot;Sandwurm Convergence&quot; ]
}</property>
<property name="enemy" value="Wurm"/>
<property name="spawn.Easy" type="bool" value="false"/>
<property name="spawn.Hard" type="bool" value="true"/>
<property name="spawn.Normal" type="bool" value="false"/>
</properties>
</object>
<object id="51" template="../obj/treasure.tx" x="152" y="256.333"/>
<object id="58" template="../obj/treasure.tx" x="216.333" y="272.333">
<properties>
<property name="reward">[{
&quot;type&quot;: &quot;randomCard&quot;,
&quot;count&quot;: 1,
&quot;rarity&quot;: [ &quot;rare&quot;, &quot;mythic rare&quot; ],
&quot;colors&quot;: [ &quot;colorID&quot; ]
},{
&quot;type&quot;: &quot;randomCard&quot;,
&quot;count&quot;: 4,
&quot;rarity&quot;: [ &quot;uncommon&quot; ],
&quot;addMaxCount&quot;: 2
}]</property>
<property name="spawn.Hard" type="bool" value="false"/>
</properties>
</object>
<object id="52" template="../obj/gold.tx" x="152.333" y="320"/>
<object id="59" template="../obj/gold.tx" x="320" y="384" visible="0">
<properties>
<property name="reward">[{
&quot;type&quot;: &quot;gold&quot;, &quot;count&quot;: 250
}]</property>
</properties>
</object>
</objectgroup>
</map>

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<map version="1.8" tiledversion="1.8.4" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="60"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="60">
<editorsettings> <editorsettings>
<export format="tmx"/> <export target="cave_1..tmx" format="tmx"/>
</editorsettings> </editorsettings>
<tileset firstgid="1" source="../tileset/main.tsx"/> <tileset firstgid="1" source="../tileset/main.tsx"/>
<tileset firstgid="6321" source="../tileset/buildings.tsx"/> <tileset firstgid="10113" 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">
eJzz42Rg8BvFo3gUj+JRPIqHINbghuCRYi/M7uEa1gMZnwMRxgPh17wBtpfecZyHZvdgsDePTm4YqeXUSLOXGvEMABb/Ltw= eJzz42Rg8BvFo3gUj+JRPIqHINbghuCRYi/M7uEa1gMZnwMRxgPh17wBtpfecZyHZvdgsDePTm4YqeXUSLOXGvEMABb/Ltw=
@@ -17,7 +17,7 @@
</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">
eJztlEsKgCAURR0qtK0sWkk7s6xd9aFlZKgkUjbRC8F7cAaOjle9SsGYJAiCIIgfoDljM39fl6IxdIl1Se9imLhlA3qV8Q0BB8iLyJc651Vg3pR29xlODcoaDyL7kzfeQwn3l9dPX93k8O7C9mbkzz5VuFOxXwF77P3XoHwe7fIiOhzSurzo/yuX9wRfCR8q eJztlE0KgCAQRl2OB8uii1rWrfqhY2SoIGK1aT4IZuAtZvX8RkejlTKCIAiC8AMcKTXTfc9F6+kfek7v4pkosAG91vuGjAPkReR7mvOqMW/KxfvMqwFlLQuRveYtz8DhfvNyzX3XYW9Gqjst806Vfgvc4+S/CuVLuJgXscM5XcyL/r++8p7+7h8J
</data> </data>
</layer> </layer>
<layer id="7" name="Foreground" width="30" height="30"> <layer id="7" name="Foreground" width="30" height="30">

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<map version="1.8" tiledversion="1.8.4" orientation="orthogonal" renderorder="right-down" width="30" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="69"> <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>
<tileset firstgid="1" source="../../tileset/main.tsx"/> <tileset firstgid="1" source="../../tileset/main.tsx"/>
<tileset firstgid="6321" source="../../tileset/buildings.tsx"/> <tileset firstgid="10113" 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">
eJztkzEKwDAMA7N27iP7o7y3Q7cQFUm2KRQPtwScs+VkHmPMpml+y3U+rGdMXZYbwfSa5VJ7qXY6Ga+1js91KhlmZcx40Ntx3ezO0N2RmaNvtcrL1jl/CPmZ+apzfvO58yr/ZlfnZszuGfWU4XWyj3iVXCu8ajZN8yU3OswQ5g== eJztkzEKwDAMA7N27iP7o7y3Q7cQFUm2KRQPtwScs+VkHmPMpml+y3U+rGdMXZYbwfSa5VJ7qXY6Ga+1js91KhlmZcx40Ntx3ezO0N2RmaNvtcrL1jl/CPmZ+apzfvO58yr/ZlfnZszuGfWU4XWyj3iVXCu8ajZN8yU3OswQ5g==
@@ -57,7 +57,7 @@
&quot;condition&quot;:[ { &quot;item&quot;:&quot;Strange Key&quot;} ], &quot;condition&quot;:[ { &quot;item&quot;:&quot;Strange Key&quot;} ],
&quot;text&quot;:&quot;The gate is unlocked&quot;, &quot;text&quot;:&quot;The gate is unlocked&quot;,
&quot;options&quot;:[ &quot;options&quot;:[
{&quot;name&quot;:&quot;continue&quot;,&quot;action&quot;: [ {&quot;deleteMapObject&quot;:-1 } ] } {&quot;name&quot;:&quot;continue&quot;,&quot;action&quot;: [ {&quot;deleteMapObject&quot;:-1 },{&quot;removeItem&quot;:&quot;Strange Key&quot;} ] }
] ]
} }
] ]

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.4" orientation="orthogonal" renderorder="right-down" width="30" height="114" tilewidth="16" tileheight="16" infinite="0" nextlayerid="6" nextobjectid="63"> <map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="114" tilewidth="16" tileheight="16" infinite="0" nextlayerid="6" nextobjectid="63">
<editorsettings> <editorsettings>
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
@@ -78,7 +78,7 @@
&quot;text&quot;:&quot;The gate is unlocked&quot;, &quot;text&quot;:&quot;The gate is unlocked&quot;,
&quot;options&quot;:[ &quot;options&quot;:[
{ {
&quot;name&quot;:&quot;continue&quot;,&quot;action&quot;:[{&quot;deleteMapObject&quot;:-1}] &quot;name&quot;:&quot;continue&quot;,&quot;action&quot;:[{&quot;deleteMapObject&quot;:-1},{&quot;removeItem&quot;:&quot;Red Key&quot;}]
} }
] ]
} }
@@ -96,7 +96,7 @@
&quot;name&quot;:&quot;unlock with blue key&quot;, &quot;name&quot;:&quot;unlock with blue key&quot;,
&quot;condition&quot;:[{&quot;item&quot;:&quot;Blue Key&quot;}], &quot;condition&quot;:[{&quot;item&quot;:&quot;Blue Key&quot;}],
&quot;text&quot;:&quot;The gate is unlocked&quot;, &quot;text&quot;:&quot;The gate is unlocked&quot;,
&quot;options&quot;:[ {&quot;name&quot;:&quot;continue&quot;,&quot;action&quot;:[{&quot;deleteMapObject&quot;:-1}]} ] &quot;options&quot;:[ {&quot;name&quot;:&quot;continue&quot;,&quot;action&quot;:[{&quot;deleteMapObject&quot;:-1},{&quot;removeItem&quot;:&quot;Blue Key&quot;}]} ]
} }
] ]
}]</property> }]</property>
@@ -112,7 +112,7 @@
&quot;name&quot;:&quot;unlock with green key&quot;, &quot;name&quot;:&quot;unlock with green key&quot;,
&quot;condition&quot;:[{&quot;item&quot;:&quot;Green Key&quot;}], &quot;condition&quot;:[{&quot;item&quot;:&quot;Green Key&quot;}],
&quot;text&quot;:&quot;The gate is unlocked&quot;, &quot;text&quot;:&quot;The gate is unlocked&quot;,
&quot;options&quot;:[{&quot;name&quot;:&quot;continue&quot;,&quot;action&quot;:[ {&quot;deleteMapObject&quot;:-1}]} ] &quot;options&quot;:[{&quot;name&quot;:&quot;continue&quot;,&quot;action&quot;:[ {&quot;deleteMapObject&quot;:-1},{&quot;removeItem&quot;:&quot;Green Key&quot;}]} ]
} }
] ]
}]</property> }]</property>
@@ -128,7 +128,7 @@
&quot;name&quot;:&quot;unlock with white key&quot;, &quot;name&quot;:&quot;unlock with white key&quot;,
&quot;condition&quot;:[{&quot;item&quot;:&quot;White Key&quot;}], &quot;condition&quot;:[{&quot;item&quot;:&quot;White Key&quot;}],
&quot;text&quot;:&quot;The gate is unlocked&quot;, &quot;text&quot;:&quot;The gate is unlocked&quot;,
&quot;options&quot;:[{&quot;name&quot;:&quot;continue&quot;, &quot;action&quot;:[ {&quot;deleteMapObject&quot;:-1}]} ] &quot;options&quot;:[{&quot;name&quot;:&quot;continue&quot;, &quot;action&quot;:[ {&quot;deleteMapObject&quot;:-1},{&quot;removeItem&quot;:&quot;White Key&quot;}]} ]
} }
] ]
}]</property> }]</property>
@@ -144,7 +144,7 @@
&quot;name&quot;:&quot;unlock with black key&quot;, &quot;name&quot;:&quot;unlock with black key&quot;,
&quot;condition&quot;:[{&quot;item&quot;:&quot;Black Key&quot;}], &quot;condition&quot;:[{&quot;item&quot;:&quot;Black Key&quot;}],
&quot;text&quot;:&quot;The gate is unlocked&quot;, &quot;text&quot;:&quot;The gate is unlocked&quot;,
&quot;options&quot;:[{&quot;name&quot;:&quot;continue&quot;, &quot;action&quot;:[ {&quot;deleteMapObject&quot;:-1}]} ] &quot;options&quot;:[{&quot;name&quot;:&quot;continue&quot;, &quot;action&quot;:[ {&quot;deleteMapObject&quot;:-1},{&quot;removeItem&quot;:&quot;Black Key&quot;}]} ]
} }
] ]
}]</property> }]</property>

View File

@@ -4,7 +4,7 @@
<export target="wastetown..tmx" format="tmx"/> <export target="wastetown..tmx" format="tmx"/>
</editorsettings> </editorsettings>
<tileset firstgid="1" source="../../tileset/main.tsx"/> <tileset firstgid="1" source="../../tileset/main.tsx"/>
<tileset firstgid="6321" source="../../tileset/buildings.tsx"/> <tileset firstgid="10113" 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">
eJzt1DEKwCAMBVAHt17YS3nHDl2kaBpj8j+UDB/EwWcSsV2ltExmM70+YZhjIs7V7Hm5Um3e7leNUiyzmXlo1xqWK9mRJtNd2eniXMabHvcRnrbnJ/ex/smrteRYTY85nJqaPrwtb3d2PqLeHTei1wwX/a6QffxTbui3Dvk= eJzt1DEKwCAMBVAHt17YS3nHDl2kaBpj8j+UDB/EwWcSsV2ltExmM70+YZhjIs7V7Hm5Um3e7leNUiyzmXlo1xqWK9mRJtNd2eniXMabHvcRnrbnJ/ex/smrteRYTY85nJqaPrwtb3d2PqLeHTei1wwX/a6QffxTbui3Dvk=
@@ -25,7 +25,7 @@
</layer> </layer>
<layer id="5" name="Overlay" width="30" height="30" visible="0"> <layer id="5" name="Overlay" width="30" height="30" visible="0">
<data encoding="base64" compression="zlib"> <data encoding="base64" compression="zlib">
eJxjYBgFo2AUDAbgLsvA4CGLyR4FgxcQG0+44nY0ngc34ATGDRc0fqKlGBhipLCrG43fUTAKRsEoGAVDGQAA8c0ISg== eJzt0bENwCAQBMHtAlpA//33AtU4cIgtET7STnTBZQuSKmgJPfetuk47/bW1c20zYMW7Y0CO7599JUk3ewCmfgdy
</data> </data>
</layer> </layer>
<objectgroup id="4" name="Objects"> <objectgroup id="4" name="Objects">
@@ -38,32 +38,46 @@
<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" class="dialog" gid="7627" x="238" y="208" width="16" height="16"> <object id="67" name="IntroChar" class="dialog" gid="11419" x="238" y="208" width="16" height="16">
<properties> <properties>
<property name="dialog">[{ <property name="dialog">[{
&quot;text&quot;:&quot;Hello Planeswalker {var=player_name}&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;,
&quot;condition&quot;:[ { &quot;checkMapFlag&quot;: &quot;intro&quot; ,&quot;not&quot;:true} ], &quot;condition&quot;:[ { &quot;checkMapFlag&quot;: &quot;intro&quot; ,&quot;not&quot;:true} ],
&quot;text&quot;:&quot;You traveld to the planes of Shandalar\nEvery Planeswalker is trapped here&quot;, &quot;text&quot;:&quot;THIS... IS SHANDALAR A PLANE WHERE MANA IS SO PREVALENT AND USED BY ALL THAT IS SENTIENT EVEN THE COMMON PEOPLE USE SPELLS DAILY&quot;,
&quot;options&quot;:[ &quot;voiceFile&quot;:&quot;audio/WizPAR1.mp3&quot;,
{ &quot;options&quot;:[
&quot;name&quot;:&quot;continue&quot;, {
&quot;text&quot;:&quot;You have to defeat every guardianTake this rune, it will let you travel back to me.&quot;, &quot;name&quot;:&quot;continue&quot;,
&quot;options&quot;:[ &quot;text&quot;:&quot;LIKE YOU,SOME PLANESWALKERS HAVE BEEN IMPRISONED HEREBY THE GUARDIANS IN THE CASTLES YOU MUST DEFEAT THEM IN BATTLE TO RELEASE US FROM THIS PLANE USE YOUR POWERS OF MAGIC TO CHALLENGE THEM&quot;,
{ &quot;voiceFile&quot;:&quot;audio/WizPAR2.mp3&quot;
&quot;name&quot;:&quot;thank you&quot;, &quot;options&quot;:[
&quot;action&quot;:[{&quot;advanceMapFlag&quot;:&quot;intro&quot;},{&quot;addItem&quot;:&quot;Colorless rune&quot;}] {
} &quot;name&quot;:&quot;continue&quot;,
] &quot;text&quot;:&quot;FIND THE PLANESWALKERS TRAPPED HERE GUIDE THEM TO ME, THEY WILL HELP YOU ON YOUR JOURNEY.&quot;,
} &quot;voiceFile&quot;:&quot;audio/WizPAR3.mp3&quot;,
] &quot;options&quot;:[
}, {
&quot;name&quot;:&quot;continue&quot;,
&quot;text&quot;:&quot;TAKE THIS RUNE YOU CAN USE IT ANYTIME TO RETURN HERE BE CAREFUL PLANESWALKER&quot;,
&quot;voiceFile&quot;:&quot;audio/WizPAR4.mp3&quot;
&quot;options&quot;:[
{
&quot;name&quot;:&quot;thank you&quot;,
&quot;action&quot;:[{&quot;advanceMapFlag&quot;:&quot;intro&quot;},{&quot;addItem&quot;:&quot;Colorless rune&quot;}]
}]
}]
}]
}
]
},
{ &quot;name&quot;:&quot;Bye&quot; } { &quot;name&quot;:&quot;Bye&quot; }
] ]
}]</property> }]</property>
<property name="sprite" value="sprites/knight.atlas"/> <property name="sprite" value="sprites/black_wiz2.atlas"/>
</properties> </properties>
</object> </object>
</objectgroup> </objectgroup>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

After

Width:  |  Height:  |  Size: 228 KiB

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<tileset version="1.9" tiledversion="1.9.1" name="buildings" tilewidth="16" tileheight="16" tilecount="1624" columns="28"> <tileset version="1.9" tiledversion="1.9.2" name="buildings" tilewidth="16" tileheight="16" tilecount="2048" columns="32">
<image source="buildings.png" width="448" height="928"/> <image source="buildings.png" width="512" height="1024"/>
<tile id="28"> <tile id="28">
<objectgroup draworder="index" id="2"> <objectgroup draworder="index" id="2">
<object id="1" x="1" y="0" width="15" height="16"/> <object id="1" x="1" y="0" width="15" height="16"/>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 593 KiB

After

Width:  |  Height:  |  Size: 494 KiB

View File

@@ -0,0 +1,576 @@
keys.png
size: 480, 112
format: RGBA8888
filter: Nearest, Nearest
repeat: none
1
xy: 0, 0
size: 16, 16
1_pressed
xy: 16, 0
size: 16, 16
2
xy: 32, 0
size: 16, 16
2_pressed
xy: 48, 0
size: 16, 16
3
xy: 64, 0
size: 16, 16
3_pressed
xy: 80, 0
size: 16, 16
4
xy: 96, 0
size: 16, 16
4_pressed
xy: 112, 0
size: 16, 16
5
xy: 128, 0
size: 16, 16
5_pressed
xy: 144, 0
size: 16, 16
6
xy: 160, 0
size: 16, 16
6_pressed
xy: 176, 0
size: 16, 16
7
xy: 192, 0
size: 16, 16
7_pressed
xy: 208, 0
size: 16, 16
8
xy: 224, 0
size: 16, 16
8_pressed
xy: 240, 0
size: 16, 16
9
xy: 256, 0
size: 16, 16
9_pressed
xy: 272, 0
size: 16, 16
0
xy: 288, 0
size: 16, 16
0_pressed
xy: 304, 0
size: 16, 16
clear
xy: 320, 0
size: 16, 16
clear_pressed
xy: 336, 0
size: 16, 16
Back
xy: 352, 0
size: 32, 16
Back_pressed
xy: 384, 0
size: 32, 16
Escape
xy: 416, 0
size: 16, 16
Escape_pressed
xy: 448, 0
size: 16, 16
Q
xy: 0, 16
size: 16, 16
Q_pressed
xy: 16, 16
size: 16, 16
W
xy: 32, 16
size: 16, 16
W_pressed
xy: 48, 16
size: 16, 16
E
xy: 64, 16
size: 16, 16
E_pressed
xy: 80, 16
size: 16, 16
R
xy: 96, 16
size: 16, 16
R_pressed
xy: 112, 16
size: 16, 16
T
xy: 128, 16
size: 16, 16
T_pressed
xy: 144, 16
size: 16, 16
Y
xy: 160, 16
size: 16, 16
Y_pressed
xy: 176, 16
size: 16, 16
U
xy: 192, 16
size: 16, 16
U_pressed
xy: 208, 16
size: 16, 16
I
xy: 224, 16
size: 16, 16
I_pressed
xy: 240, 16
size: 16, 16
O
xy: 256, 16
size: 16, 16
O_pressed
xy: 272, 16
size: 16, 16
P
xy: 288, 16
size: 16, 16
P_pressed
xy: 304, 16
size: 16, 16
clearSquare
xy: 320, 16
size: 16, 16
clearSquare_pressed
xy: 336, 16
size: 16, 16
Enter
xy: 352, 16
size: 32, 16
Enter_pressed
xy: 384, 16
size: 32, 16
Tab
xy: 416, 16
size: 32, 16
Tab_pressed
xy: 448, 16
size: 32, 16
A
xy: 0, 32
size: 16, 16
A_pressed
xy: 16, 32
size: 16, 16
S
xy: 32, 32
size: 16, 16
S_pressed
xy: 48, 32
size: 16, 16
D
xy: 64, 32
size: 16, 16
D_pressed
xy: 80, 32
size: 16, 16
F
xy: 96, 32
size: 16, 16
F_pressed
xy: 112, 32
size: 16, 16
G
xy: 128, 32
size: 16, 16
G_pressed
xy: 144, 32
size: 16, 16
H
xy: 160, 32
size: 16, 16
H_pressed
xy: 176, 32
size: 16, 16
J
xy: 192, 32
size: 16, 16
J_pressed
xy: 208, 32
size: 16, 16
K
xy: 224, 32
size: 16, 16
K_pressed
xy: 240, 32
size: 16, 16
L
xy: 256, 32
size: 16, 16
L_pressed
xy: 272, 32
size: 16, 16
Up
xy: 288, 32
size: 16, 16
Up_pressed
xy: 304, 32
size: 16, 16
clearSquareLong
xy: 320, 32
size: 32, 16
Space
xy: 352, 32
size: 32, 16
Space_pressed
xy: 384, 32
size: 32, 16
L-Shift
xy: 416, 32
size: 32, 16
L-Shift_pressed
xy: 448, 32
size: 32, 16
R-Shift
xy: 416, 32
size: 32, 16
R-Shift_pressed
xy: 448, 32
size: 32, 16
Z
xy: 0, 48
size: 16, 16
Z_pressed
xy: 16, 48
size: 16, 16
X
xy: 32, 48
size: 16, 16
X_pressed
xy: 48, 48
size: 16, 16
C
xy: 64, 48
size: 16, 16
C_pressed
xy: 80, 48
size: 16, 16
V
xy: 96, 48
size: 16, 16
V_pressed
xy: 112, 48
size: 16, 16
B
xy: 128, 48
size: 16, 16
B_pressed
xy: 144, 48
size: 16, 16
N
xy: 160, 48
size: 16, 16
N_pressed
xy: 176, 48
size: 16, 16
M
xy: 192, 48
size: 16, 16
M_pressed
xy: 208, 48
size: 16, 16
Left
xy: 224, 48
size: 16, 16
Left_pressed
xy: 240, 48
size: 16, 16
Right
xy: 256, 48
size: 16, 16
Right_pressed
xy: 272, 48
size: 16, 16
Down
xy: 288, 48
size: 16, 16
Down_pressed
xy: 304, 48
size: 16, 16
clearSquareLong_pressed
xy: 320, 48
size: 32, 16
R-Alt
xy: 352, 48
size: 32, 16
R-Alt_pressed
xy: 384, 48
size: 32, 16
L-Alt
xy: 352, 48
size: 32, 16
L-Alt_pressed
xy: 384, 48
size: 32, 16
Control
xy: 416, 48
size: 32, 16
Control_pressed
xy: 448, 48
size: 32, 16
XBox_B
xy: 0, 64
size: 16, 16
XBox_B_pressed
xy: 16, 64
size: 16, 16
XBox_A
xy: 32, 64
size: 16, 16
XBox_A_pressed
xy: 48, 64
size: 16, 16
XBox_Y
xy: 64, 64
size: 16, 16
XBox_Y_pressed
xy: 80, 64
size: 16, 16
XBox_X
xy: 96, 64
size: 16, 16
XBox_X_pressed
xy: 112, 64
size: 16, 16
XBox_L
xy: 128, 64
size: 16, 16
XBox_L_pressed
xy: 144, 64
size: 16, 16
XBox_R
xy: 160, 64
size: 16, 16
XBox_R_pressed
xy: 176, 64
size: 16, 16
XBox_L2
xy: 192, 64
size: 16, 16
XBox_L2_pressed
xy: 208, 64
size: 16, 16
XBox_R2
xy: 224, 64
size: 16, 16
XBox_R2_pressed
xy: 240, 64
size: 16, 16
XBox_Select
xy: 256, 64
size: 16, 16
XBox_Select_pressed
xy: 272, 64
size: 16, 16
XBox_Start
xy: 288, 64
size: 16, 16
XBox_Start_pressed
xy: 304, 64
size: 16, 16
XBox_Left
xy: 320, 64
size: 16, 16
XBox_Left_pressed
xy: 336, 64
size: 16, 16
XBox_Right
xy: 352, 64
size: 16, 16
XBox_Right_pressed
xy: 368, 64
size: 16, 16
XBox_Down
xy: 384, 64
size: 16, 16
XBox_Down_pressed
xy: 400, 64
size: 16, 16
XBox_Up
xy: 416, 64
size: 16, 16
XBox_Up_pressed
xy: 432, 64
size: 16, 16
Playstation_B
xy: 0, 80
size: 16, 16
Playstation_B_pressed
xy: 16, 80
size: 16, 16
Playstation_A
xy: 32, 80
size: 16, 16
Playstation_A_pressed
xy: 48, 80
size: 16, 16
Playstation_Y
xy: 64, 80
size: 16, 16
Playstation_Y_pressed
xy: 80, 80
size: 16, 16
Playstation_X
xy: 96, 80
size: 16, 16
Playstation_X_pressed
xy: 112, 80
size: 16, 16
Playstation_L
xy: 128, 80
size: 16, 16
Playstation_L_pressed
xy: 144, 80
size: 16, 16
Playstation_R
xy: 160, 80
size: 16, 16
Playstation_R_pressed
xy: 176, 80
size: 16, 16
Playstation_L2
xy: 192, 80
size: 16, 16
Playstation_L2_pressed
xy: 208, 80
size: 16, 16
Playstation_R2
xy: 224, 80
size: 16, 16
Playstation_R2_pressed
xy: 240, 80
size: 16, 16
Playstation_Select
xy: 256, 80
size: 16, 16
Playstation_Select_pressed
xy: 272, 80
size: 16, 16
Playstation_Start
xy: 288, 80
size: 16, 16
Playstation_Start_pressed
xy: 304, 80
size: 16, 16
Playstation_Left
xy: 320, 80
size: 16, 16
Playstation_Left_pressed
xy: 336, 80
size: 16, 16
Playstation_Right
xy: 352, 80
size: 16, 16
Playstation_Right_pressed
xy: 368, 80
size: 16, 16
Playstation_Down
xy: 384, 80
size: 16, 16
Playstation_Down_pressed
xy: 400, 80
size: 16, 16
Playstation_Up
xy: 416, 80
size: 16, 16
Playstation_Up_pressed
xy: 432, 80
size: 16, 16
Switch_B
xy: 0, 96
size: 16, 16
Switch_B_pressed
xy: 16, 96
size: 16, 16
Switch_A
xy: 32, 96
size: 16, 16
Switch_A_pressed
xy: 48, 96
size: 16, 16
Switch_Y
xy: 64, 96
size: 16, 16
Switch_Y_pressed
xy: 80, 96
size: 16, 16
Switch_X
xy: 96, 96
size: 16, 16
Switch_X_pressed
xy: 112, 96
size: 16, 16
Switch_L
xy: 128, 96
size: 16, 16
Switch_L_pressed
xy: 144, 96
size: 16, 16
Switch_R
xy: 160, 96
size: 16, 16
Switch_R_pressed
xy: 176, 96
size: 16, 16
Switch_L2
xy: 192, 96
size: 16, 16
Switch_L2_pressed
xy: 208, 96
size: 16, 16
Switch_R2
xy: 224, 96
size: 16, 16
Switch_R2_pressed
xy: 240, 96
size: 16, 16
Switch_Select
xy: 256, 96
size: 16, 16
Switch_Select_pressed
xy: 272, 96
size: 16, 16
Switch_Start
xy: 288, 96
size: 16, 16
Switch_Start_pressed
xy: 304, 96
size: 16, 16
Switch_Left
xy: 320, 96
size: 16, 16
Switch_Left_pressed
xy: 336, 96
size: 16, 16
Switch_Right
xy: 352, 96
size: 16, 16
Switch_Right_pressed
xy: 368, 96
size: 16, 16
Switch_Down
xy: 384, 96
size: 16, 16
Switch_Down_pressed
xy: 400, 96
size: 16, 16
Switch_Up
xy: 416, 96
size: 16, 16
Switch_Up_pressed
xy: 432, 96
size: 16, 16

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -6,14 +6,14 @@ filter: Nearest, Nearest
repeat: none repeat: none
white-pixel white-pixel
rotate: false rotate: false
xy: 221, 326 xy: 221, 327
size: 1, 1 size: 1, 1
orig: 1, 1 orig: 1, 1
offset: 0, 0 offset: 0, 0
index: -1 index: -1
BKey_3_14 BKey_3_14
rotate: false rotate: false
xy: 125, 214 xy: 125, 215
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
@@ -22,7 +22,7 @@ BKey_3_14
index: -1 index: -1
BKey_3_9 BKey_3_9
rotate: false rotate: false
xy: 75, 164 xy: 75, 165
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
@@ -31,28 +31,28 @@ BKey_3_9
index: -1 index: -1
9patch17 9patch17
rotate: false rotate: false
xy: 253, 384 xy: 253, 385
size: 48, 48 size: 48, 48
orig: 48, 48 orig: 48, 48
offset: 0, 0 offset: 0, 0
index: -1 index: -1
9patch17_down 9patch17_down
rotate: false rotate: false
xy: 203, 334 xy: 203, 335
size: 48, 48 size: 48, 48
orig: 48, 48 orig: 48, 48
offset: 0, 0 offset: 0, 0
index: -1 index: -1
9patch17_h 9patch17_h
rotate: false rotate: false
xy: 1, 58 xy: 1, 59
size: 48, 48 size: 48, 48
orig: 48, 48 orig: 48, 48
offset: 0, 0 offset: 0, 0
index: -1 index: -1
9patch4 9patch4
rotate: false rotate: false
xy: 75, 182 xy: 75, 183
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,77 @@ BKey_3_9
index: -1 index: -1
down down
rotate: false rotate: false
xy: 253, 344 xy: 253, 345
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: 275, 366 xy: 275, 367
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: 303, 394 xy: 303, 395
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: 325, 416 xy: 325, 417
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
left_f
rotate: false
xy: 51, 115
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: 1, 18 xy: 1, 19
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: 23, 40 xy: 23, 41
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
right_f
rotate: false
xy: 203, 294
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: 147, 196 xy: 147, 197
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: 177, 214 xy: 177, 215
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: 225, 329 xy: 225, 330
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 +140,42 @@ cursor
index: -1 index: -1
item_frame item_frame
rotate: false rotate: false
xy: 253, 362 xy: 253, 363
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: 303, 412 xy: 303, 413
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: 1, 36 xy: 1, 37
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: 125, 192 xy: 125, 193
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: 69, 146 xy: 69, 147
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: 51, 150 xy: 51, 151
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 +184,7 @@ bar
index: -1 index: -1
barcontent barcontent
rotate: false rotate: false
xy: 203, 329 xy: 203, 330
size: 20, 3 size: 20, 3
split: 0, 0, 0, 0 split: 0, 0, 0, 0
orig: 20, 3 orig: 20, 3
@@ -178,14 +192,14 @@ barcontent
index: -1 index: -1
check check
rotate: false rotate: false
xy: 253, 334 xy: 253, 335
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, 108 xy: 1, 109
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 +208,7 @@ map
index: -1 index: -1
pressed pressed
rotate: false rotate: false
xy: 125, 174 xy: 125, 175
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 +217,7 @@ pressed
index: -1 index: -1
pressedMap pressedMap
rotate: false rotate: false
xy: 51, 132 xy: 51, 133
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 +226,7 @@ pressedMap
index: -1 index: -1
pressedround pressedround
rotate: false rotate: false
xy: 343, 417 xy: 51, 98
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 +235,7 @@ pressedround
index: -1 index: -1
scroll scroll
rotate: false rotate: false
xy: 303, 377 xy: 303, 378
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 +244,7 @@ scroll
index: -1 index: -1
scroll2 scroll2
rotate: false rotate: false
xy: 75, 155 xy: 75, 156
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 +253,7 @@ scroll2
index: -1 index: -1
thinwindow thinwindow
rotate: false rotate: false
xy: 203, 311 xy: 203, 312
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 +262,14 @@ thinwindow
index: -1 index: -1
uncheck uncheck
rotate: false rotate: false
xy: 293, 374 xy: 293, 375
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: 109, 164 xy: 109, 165
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 +278,7 @@ unpressed
index: -1 index: -1
unpressed-disable unpressed-disable
rotate: false rotate: false
xy: 203, 293 xy: 1, 1
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,16 +287,23 @@ unpressed-disable
index: -1 index: -1
unpressed-hover unpressed-hover
rotate: false rotate: false
xy: 51, 114 xy: 343, 417
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
orig: 14, 16 orig: 14, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
unpressedFocus
rotate: false
xy: 165, 197
size: 14, 16
orig: 14, 16
offset: 0, 0
index: -1
unpressedMap unpressedMap
rotate: false rotate: false
xy: 159, 214 xy: 159, 215
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 +312,7 @@ unpressedMap
index: -1 index: -1
unpressedround unpressedround
rotate: false rotate: false
xy: 1, 1 xy: 203, 277
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 +321,7 @@ unpressedround
index: -1 index: -1
windowMain windowMain
rotate: false rotate: false
xy: 203, 384 xy: 203, 385
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,14 +330,14 @@ windowMain
index: -1 index: -1
touchBackground touchBackground
rotate: false rotate: false
xy: 1, 232 xy: 1, 233
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, 158 xy: 1, 159
size: 72, 72 size: 72, 72
orig: 72, 72 orig: 72, 72
offset: 0, 0 offset: 0, 0

View File

@@ -325,6 +325,26 @@
"regions": [], "regions": [],
"playMode": 2, "playMode": 2,
"crushMode": 0 "crushMode": 0
},
"unpressedFocus10Patch": {
"region": "unpressedFocus",
"horizontalStretchAreas": [ 3, 6, 8, 9 ],
"verticalStretchAreas": [ 6, 7, 9, 12 ],
"tiling": false,
"minWidth": 14,
"minHeight": 16,
"rightWidth": 5,
"leftWidth": 5,
"bottomHeight": 8,
"topHeight": 5,
"offsetX": 0,
"offsetY": 0,
"offsetXspeed": 0,
"offsetYspeed": 0,
"frameDuration": 0.03,
"regions": [],
"playMode": 2,
"crushMode": 0
} }
}, },
"ButtonStyle": { "ButtonStyle": {
@@ -332,6 +352,7 @@
"up": "unpressed10patch", "up": "unpressed10patch",
"down": "pressed10Patch", "down": "pressed10Patch",
"over": "unpressed-hover10patch", "over": "unpressed-hover10patch",
"focused": "unpressedFocus10Patch",
"disabled": "unpressed-disable10Patch" "disabled": "unpressed-disable10Patch"
}, },
"paper": { "paper": {
@@ -350,7 +371,9 @@
"default": { "default": {
"checkboxOn": "check", "checkboxOn": "check",
"checkboxOff": "uncheck", "checkboxOff": "uncheck",
"font": "default" "font": "default",
"focused": "unpressedFocus10Patch",
"checkedFocused": "unpressedFocus10Patch"
} }
}, },
"ImageButtonStyle": { "ImageButtonStyle": {
@@ -359,18 +382,22 @@
"imageDown": "pressed10Patch" "imageDown": "pressed10Patch"
}, },
"leftarrow": { "leftarrow": {
"imageUp": "left", "up": "left",
"imageDown": "left_down" "down": "left_down",
"focused": "left_f"
}, },
"rightarrow": { "rightarrow": {
"imageUp": "right", "up": "right",
"imageDown": "right_down" "down": "right_down",
"focused": "right_f"
}, },
"item_frame": { "item_frame": {
"imageUp": "item_frame", "imageCheckedOver": "item_frame_selected_hover",
"imageOver": "item_frame_hover", "up": "item_frame",
"imageChecked": "item_frame_selected", "over": "item_frame_hover",
"imageCheckedOver": "item_frame_selected_hover" "focused": "item_frame_selected",
"checked": "item_frame_selected",
"checkedOver": "item_frame_selected_hover"
} }
}, },
"ImageTextButtonStyle": { "ImageTextButtonStyle": {
@@ -426,12 +453,15 @@
"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",
"background": "unpressed10patch",
"scrollStyle": "default", "scrollStyle": "default",
"listStyle": "default" "listStyle": "default",
"backgroundOver": "unpressed-hover10patch"
} }
}, },
"SliderStyle": { "SliderStyle": {
"default-horizontal": { "default-horizontal": {
"backgroundOver": "unpressed-hover10patch",
"background": "thinwindow10Patch", "background": "thinwindow10Patch",
"knob": "scroll" "knob": "scroll"
}, },

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -21,6 +21,8 @@
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"selectable": true,
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 5, "x": 5,
@@ -39,6 +41,8 @@
"type": "TextButton", "type": "TextButton",
"name": "start", "name": "start",
"text": "tr(lblBattle)", "text": "tr(lblBattle)",
"selectable": true,
"binding": "Use",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 430, "x": 430,

View File

@@ -21,6 +21,7 @@
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "Back", "text": "Back",
"selectable": true,
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 5, "x": 5,
@@ -39,6 +40,7 @@
"type": "TextButton", "type": "TextButton",
"name": "start", "name": "start",
"text": "tr(lblBattle)", "text": "tr(lblBattle)",
"selectable": true,
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 125, "x": 125,

View File

@@ -21,6 +21,7 @@
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 365, "x": 365,
@@ -39,6 +40,7 @@
"type": "TextButton", "type": "TextButton",
"name": "edit", "name": "edit",
"text": "tr(lblEdit)", "text": "tr(lblEdit)",
"binding": "Use",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 365, "x": 365,

View File

@@ -21,6 +21,7 @@
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 86, "width": 86,
"height": 30, "height": 30,
"x": 4, "x": 4,
@@ -30,6 +31,7 @@
"type": "TextButton", "type": "TextButton",
"name": "rename", "name": "rename",
"text": "tr(lblRename)", "text": "tr(lblRename)",
"binding": "Equip",
"width": 86, "width": 86,
"height": 30, "height": 30,
"x": 92, "x": 92,
@@ -39,6 +41,7 @@
"type": "TextButton", "type": "TextButton",
"name": "edit", "name": "edit",
"text": "tr(lblEdit)", "text": "tr(lblEdit)",
"binding": "Use",
"width": 86, "width": 86,
"height": 30, "height": 30,
"x": 180, "x": 180,

View File

@@ -87,9 +87,10 @@
"name": "deck", "name": "deck",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Deck]", "text": "{Scale=200%}[+Deck]",
"width": 40, "binding": "Deck",
"width": 48,
"height": 36, "height": 36,
"x": 428, "x": 424,
"y": 106 "y": 106
}, },
{ {
@@ -97,9 +98,10 @@
"name": "inventory", "name": "inventory",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Item]", "text": "{Scale=200%}[+Item]",
"width": 40, "binding": "Inventory",
"width": 48,
"height": 36, "height": 36,
"x": 428, "x": 424,
"y": 146 "y": 146
}, },
@@ -108,9 +110,10 @@
"name": "statistic", "name": "statistic",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Status]", "text": "{Scale=200%}[+Status]",
"width": 40, "binding": "Status",
"width": 48,
"height": 36, "height": 36,
"x": 428, "x": 424,
"y": 186 "y": 186
}, },
{ {
@@ -118,9 +121,10 @@
"name": "menu", "name": "menu",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Menu]", "text": "{Scale=200%}[+Menu]",
"width": 40, "binding": "Menu",
"width": 48,
"height": 36, "height": 36,
"x": 428, "x": 424,
"y": 226 "y": 226
} }
] ]

View File

@@ -87,6 +87,7 @@
"name": "deck", "name": "deck",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Deck]", "text": "{Scale=200%}[+Deck]",
"binding": "Deck",
"width": 64, "width": 64,
"height": 36, "height": 36,
"x": 416, "x": 416,
@@ -97,6 +98,7 @@
"name": "inventory", "name": "inventory",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Item]", "text": "{Scale=200%}[+Item]",
"binding": "Inventory",
"width": 64, "width": 64,
"height": 36, "height": 36,
"x": 416, "x": 416,
@@ -108,6 +110,7 @@
"name": "statistic", "name": "statistic",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Status]", "text": "{Scale=200%}[+Status]",
"binding": "Status",
"width": 64, "width": 64,
"height": 36, "height": 36,
"x": 416, "x": 416,
@@ -118,6 +121,7 @@
"name": "menu", "name": "menu",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Menu]", "text": "{Scale=200%}[+Menu]",
"binding": "Menu",
"width": 64, "width": 64,
"height": 36, "height": 36,
"x": 416, "x": 416,

View File

@@ -86,6 +86,7 @@
"name": "deck", "name": "deck",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Deck]", "text": "{Scale=200%}[+Deck]",
"binding": "Deck",
"width": 64, "width": 64,
"height": 32, "height": 32,
"x": 206, "x": 206,
@@ -96,6 +97,7 @@
"name": "inventory", "name": "inventory",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Item]", "text": "{Scale=200%}[+Item]",
"binding": "Inventory",
"width": 64, "width": 64,
"height": 32, "height": 32,
"x": 206, "x": 206,
@@ -107,6 +109,7 @@
"name": "statistic", "name": "statistic",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Status]", "text": "{Scale=200%}[+Status]",
"binding": "Status",
"width": 64, "width": 64,
"height": 32, "height": 32,
"x": 206, "x": 206,
@@ -117,6 +120,7 @@
"name": "menu", "name": "menu",
"style":"menu", "style":"menu",
"text": "{Scale=200%}[+Menu]", "text": "{Scale=200%}[+Menu]",
"binding": "Menu",
"width": 64, "width": 64,
"height": 32, "height": 32,
"x": 206, "x": 206,

View File

@@ -22,6 +22,7 @@
"type": "TextButton", "type": "TextButton",
"name": "tempHitPointCost", "name": "tempHitPointCost",
"text": "Cost", "text": "Cost",
"binding": "Status",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 60, "x": 60,
@@ -49,7 +50,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "sell", "name": "sell",
"text": "tr(lblSell)", "text": "tr(lblSell)",
"binding": "Equip",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 190, "x": 190,
@@ -68,6 +70,7 @@
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 320, "x": 320,

View File

@@ -22,6 +22,7 @@
"type": "TextButton", "type": "TextButton",
"name": "tempHitPointCost", "name": "tempHitPointCost",
"text": "Cost", "text": "Cost",
"binding": "Status",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 165, "x": 165,
@@ -49,7 +50,8 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "sell", "name": "sell",
"text": "tr(lblSell)", "text": "tr(lblSell)",
"binding": "Equip",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 165, "x": 165,
@@ -68,6 +70,7 @@
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 165, "x": 165,

View File

@@ -89,6 +89,7 @@
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 60, "width": 60,
"height": 30, "height": 30,
"x": 400, "x": 400,
@@ -98,6 +99,7 @@
"type": "TextButton", "type": "TextButton",
"name": "equip", "name": "equip",
"text": "Equip", "text": "Equip",
"binding": "Equip",
"width": 60, "width": 60,
"height": 30, "height": 30,
"x": 320, "x": 320,
@@ -107,6 +109,7 @@
"type": "TextButton", "type": "TextButton",
"name": "use", "name": "use",
"text": "Use", "text": "Use",
"binding": "Use",
"width": 60, "width": 60,
"height": 30, "height": 30,
"x": 240, "x": 240,
@@ -116,6 +119,7 @@
"type": "TextButton", "type": "TextButton",
"name": "delete", "name": "delete",
"text": "Discard", "text": "Discard",
"binding": "Status",
"width": 60, "width": 60,
"height": 30, "height": 30,
"x": 160, "x": 160,

View File

@@ -89,7 +89,8 @@
"type": "TextButton", "type": "TextButton",
"name": "delete", "name": "delete",
"text": "Discard", "text": "Discard",
"width": 80, "binding": "Status",
"width": 60,
"height": 30, "height": 30,
"x": 8, "x": 8,
"y": 363 "y": 363
@@ -98,27 +99,30 @@
"type": "TextButton", "type": "TextButton",
"name": "equip", "name": "equip",
"text": "Equip", "text": "Equip",
"width": 80, "binding": "Equip",
"width": 60,
"height": 30, "height": 30,
"x": 96, "x": 75,
"y": 363 "y": 363
} , } ,
{ {
"type": "TextButton", "type": "TextButton",
"name": "use", "name": "use",
"text": "Use", "text": "Use",
"width": 80, "binding": "Use",
"width": 60,
"height": 30, "height": 30,
"x": 10, "x": 140,
"y": 363 "y": 363
}, },
{ {
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"width": 80, "binding": "Back",
"width": 60,
"height": 30, "height": 30,
"x": 184, "x": 205,
"y": 363 "y": 363
} }
] ]

View File

@@ -24,12 +24,23 @@
"width": 405, "width": 405,
"height": 265 "height": 265
}, },
{
"type": "TextButton",
"name": "detail",
"text": "Detail",
"binding": "Equip",
"width": 48,
"height": 30,
"x": 420,
"y": 80
} ,
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "tr(lblLeave)", "text": "tr(lblLeave)",
"width": 48, "width": 48,
"height": 30, "height": 30,
"binding": "Back",
"x": 420, "x": 420,
"y": 120 "y": 120
} , } ,

View File

@@ -24,10 +24,21 @@
"width": 260, "width": 260,
"height": 405 "height": 405
}, },
{
"type": "TextButton",
"name": "detail",
"text": "Detail",
"binding": "Equip",
"width": 128,
"height": 32,
"x": 140,
"y": 350
} ,
{ {
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "tr(lblLeave)", "text": "tr(lblLeave)",
"binding": "Back",
"width": 128, "width": 128,
"height": 32, "height": 32,
"x": 140, "x": 140,

View File

@@ -13,6 +13,7 @@
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 5, "x": 5,

View File

@@ -13,6 +13,7 @@
"type": "TextButton", "type": "TextButton",
"name": "done", "name": "done",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 48, "width": 48,
"height": 20, "height": 20,
"x": 5, "x": 5,

View File

@@ -86,6 +86,7 @@
"type": "ImageButton", "type": "ImageButton",
"name": "leftAvatar", "name": "leftAvatar",
"style": "leftarrow", "style": "leftarrow",
"selectable": true,
"width": 16, "width": 16,
"height": 16, "height": 16,
"x": 164, "x": 164,
@@ -103,6 +104,7 @@
"type": "ImageButton", "type": "ImageButton",
"name": "rightAvatar", "name": "rightAvatar",
"style": "rightarrow", "style": "rightarrow",
"selectable": true,
"width": 16, "width": 16,
"height": 16, "height": 16,
"x": 260, "x": 260,
@@ -111,6 +113,7 @@
{ {
"type": "TextField", "type": "TextField",
"name": "nameField", "name": "nameField",
"selectable": true,
"align": 1, "align": 1,
"width": 112, "width": 112,
"height": 16, "height": 16,
@@ -120,6 +123,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "race", "name": "race",
"selectable": true,
"width": 112, "width": 112,
"height": 16, "height": 16,
"x": 164, "x": 164,
@@ -128,6 +132,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "gender", "name": "gender",
"selectable": true,
"width": 112, "width": 112,
"height": 16, "height": 16,
"x": 164, "x": 164,
@@ -136,6 +141,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "difficulty", "name": "difficulty",
"selectable": true,
"width": 112, "width": 112,
"height": 16, "height": 16,
"x": 164, "x": 164,
@@ -144,6 +150,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "colorId", "name": "colorId",
"selectable": true,
"width": 112, "width": 112,
"height": 16, "height": 16,
"x": 164, "x": 164,
@@ -152,6 +159,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "mode", "name": "mode",
"selectable": true,
"width": 112, "width": 112,
"height": 16, "height": 16,
"x": 164, "x": 164,
@@ -161,6 +169,8 @@
"type": "TextButton", "type": "TextButton",
"name": "back", "name": "back",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"selectable": true,
"binding": "Back",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 348, "x": 348,
@@ -170,6 +180,8 @@
"type": "TextButton", "type": "TextButton",
"name": "start", "name": "start",
"text": "tr(lblStart)", "text": "tr(lblStart)",
"selectable": true,
"binding": "Status",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 348, "x": 348,

View File

@@ -86,8 +86,9 @@
"type": "ImageButton", "type": "ImageButton",
"name": "leftAvatar", "name": "leftAvatar",
"style": "leftarrow", "style": "leftarrow",
"width": 32, "selectable": true,
"height": 32, "width": 24,
"height": 24,
"x": 116, "x": 116,
"y": 114 "y": 114
}, },
@@ -103,14 +104,16 @@
"type": "ImageButton", "type": "ImageButton",
"name": "rightAvatar", "name": "rightAvatar",
"style": "rightarrow", "style": "rightarrow",
"width": 28, "selectable": true,
"height": 28, "width": 24,
"height": 24,
"x": 212, "x": 212,
"y": 114 "y": 114
}, },
{ {
"type": "TextField", "type": "TextField",
"name": "nameField", "name": "nameField",
"selectable": true,
"width": 160, "width": 160,
"height": 24, "height": 24,
"x": 96, "x": 96,
@@ -119,6 +122,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "race", "name": "race",
"selectable": true,
"width": 168, "width": 168,
"height": 24, "height": 24,
"x": 96, "x": 96,
@@ -127,6 +131,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "gender", "name": "gender",
"selectable": true,
"width": 168, "width": 168,
"height": 24, "height": 24,
"x": 96, "x": 96,
@@ -135,6 +140,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "difficulty", "name": "difficulty",
"selectable": true,
"width": 168, "width": 168,
"height": 24, "height": 24,
"x": 96, "x": 96,
@@ -143,6 +149,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "colorId", "name": "colorId",
"selectable": true,
"width": 168, "width": 168,
"height": 24, "height": 24,
"x": 96, "x": 96,
@@ -151,6 +158,7 @@
{ {
"type": "Selector", "type": "Selector",
"name": "mode", "name": "mode",
"selectable": true,
"width": 168, "width": 168,
"height": 24, "height": 24,
"x": 96, "x": 96,
@@ -160,6 +168,8 @@
"type": "TextButton", "type": "TextButton",
"name": "back", "name": "back",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"selectable": true,
"binding": "Back",
"width": 64, "width": 64,
"height": 28, "height": 28,
"x": 32, "x": 32,
@@ -169,6 +179,8 @@
"type": "TextButton", "type": "TextButton",
"name": "start", "name": "start",
"text": "tr(lblStart)", "text": "tr(lblStart)",
"selectable": true,
"binding": "Status",
"width": 64, "width": 64,
"height": 28, "height": 28,
"x": 165, "x": 165,

View File

@@ -45,6 +45,7 @@
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 368, "x": 368,
@@ -52,7 +53,8 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"name": "save", "name": "save",
"binding": "Use",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 368, "x": 368,

View File

@@ -45,6 +45,7 @@
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 120, "width": 120,
"height": 32, "height": 32,
"x": 10, "x": 10,
@@ -52,7 +53,8 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"name": "save", "name": "save",
"binding": "Use",
"width": 120, "width": 120,
"height": 32, "height": 32,
"x": 140, "x": 140,

View File

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

View File

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

View File

@@ -61,8 +61,10 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "done", "name": "done",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"x": 400, "x": 400,
"y": 240, "y": 240,
"width": 70, "width": 70,
@@ -70,6 +72,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BBlack", "name": "BBlack",
"text": "tr(lblBlack)", "text": "tr(lblBlack)",
"x": 15, "x": 15,
@@ -79,6 +82,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BBlue", "name": "BBlue",
"text": "tr(lblBlue)", "text": "tr(lblBlue)",
"x": 65, "x": 65,
@@ -88,6 +92,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BGreen", "name": "BGreen",
"text": "tr(lblGreen)", "text": "tr(lblGreen)",
"x": 115, "x": 115,
@@ -97,6 +102,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BRed", "name": "BRed",
"text": "tr(lblRed)", "text": "tr(lblRed)",
"x": 165, "x": 165,
@@ -106,6 +112,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BWhite", "name": "BWhite",
"text": "tr(lblWhite)", "text": "tr(lblWhite)",
"x": 215, "x": 215,
@@ -115,6 +122,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BColorless", "name": "BColorless",
"text": "tr(lblColorless)", "text": "tr(lblColorless)",
"x": 265, "x": 265,
@@ -132,7 +140,9 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"name": "pull", "selectable": true,
"name": "pull",
"binding": "Equip",
"text": "tr(lblDraw)", "text": "tr(lblDraw)",
"x": 360, "x": 360,
"y": 180, "y": 180,
@@ -159,6 +169,7 @@
}, },
{ {
"type": "SelectBox", "type": "SelectBox",
"selectable": true,
"name": "BSelectPlane", "name": "BSelectPlane",
"text": "Select Plane", "text": "Select Plane",
"x": 10, "x": 10,
@@ -177,6 +188,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "B02", "name": "B02",
"text": "0-2", "text": "0-2",
"x": 10, "x": 10,
@@ -186,6 +198,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "B35", "name": "B35",
"text": "3-5", "text": "3-5",
"x": 90, "x": 90,
@@ -195,6 +208,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "B68", "name": "B68",
"text": "6-8", "text": "6-8",
"x": 170, "x": 170,
@@ -204,6 +218,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "B9X", "name": "B9X",
"text": "9+", "text": "9+",
"x": 250, "x": 250,
@@ -222,6 +237,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BCommon", "name": "BCommon",
"text": "tr(lblCommon)", "text": "tr(lblCommon)",
"x": 10, "x": 10,
@@ -231,6 +247,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BUncommon", "name": "BUncommon",
"text": "tr(lblUncommon)", "text": "tr(lblUncommon)",
"x": 90, "x": 90,
@@ -240,6 +257,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BRare", "name": "BRare",
"text": "tr(lblRare)", "text": "tr(lblRare)",
"x": 170, "x": 170,
@@ -249,6 +267,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BMythic", "name": "BMythic",
"text": "Mythic", "text": "Mythic",
"x": 250, "x": 250,
@@ -258,6 +277,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BResetEdition", "name": "BResetEdition",
"text": "tr(lblReset)", "text": "tr(lblReset)",
"x": 250, "x": 250,

View File

@@ -61,8 +61,10 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "done", "name": "done",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"x": 175, "x": 175,
"y": 150, "y": 150,
"width": 70, "width": 70,
@@ -70,6 +72,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BBlack", "name": "BBlack",
"text": "tr(lblBlack)", "text": "tr(lblBlack)",
"x": 58, "x": 58,
@@ -79,6 +82,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BBlue", "name": "BBlue",
"text": "tr(lblBlue)", "text": "tr(lblBlue)",
"x": 113, "x": 113,
@@ -88,6 +92,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BGreen", "name": "BGreen",
"text": "tr(lblGreen)", "text": "tr(lblGreen)",
"x": 168, "x": 168,
@@ -97,6 +102,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BRed", "name": "BRed",
"text": "tr(lblRed)", "text": "tr(lblRed)",
"x": 58, "x": 58,
@@ -106,6 +112,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BWhite", "name": "BWhite",
"text": "tr(lblWhite)", "text": "tr(lblWhite)",
"x": 113, "x": 113,
@@ -115,6 +122,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BColorless", "name": "BColorless",
"text": "tr(lblColorless)", "text": "tr(lblColorless)",
"x": 168, "x": 168,
@@ -133,7 +141,9 @@
{ {
"type": "TextButton", "type": "TextButton",
"name": "pull", "name": "pull",
"text": "tr(lblDraw)", "text": "tr(lblDraw)",
"selectable": true,
"binding": "Equip",
"x": 16, "x": 16,
"y": 150, "y": 150,
"width": 97, "width": 97,
@@ -161,6 +171,7 @@
"type": "SelectBox", "type": "SelectBox",
"name": "BSelectPlane", "name": "BSelectPlane",
"text": "Select Plane", "text": "Select Plane",
"selectable": true,
"x": 0, "x": 0,
"y": 220, "y": 220,
"width": 190, "width": 190,
@@ -177,6 +188,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "B02", "name": "B02",
"text": "0-2", "text": "0-2",
"x": 20, "x": 20,
@@ -186,6 +198,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "B35", "name": "B35",
"text": "3-5", "text": "3-5",
"x": 80, "x": 80,
@@ -195,6 +208,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "B68", "name": "B68",
"text": "6-8", "text": "6-8",
"x": 140, "x": 140,
@@ -204,6 +218,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "B9X", "name": "B9X",
"text": "9+", "text": "9+",
"x": 200, "x": 200,
@@ -222,6 +237,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BCommon", "name": "BCommon",
"text": "tr(lblCommon)", "text": "tr(lblCommon)",
"x": 20, "x": 20,
@@ -231,6 +247,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BUncommon", "name": "BUncommon",
"text": "tr(lblUncommon)", "text": "tr(lblUncommon)",
"x": 80, "x": 80,
@@ -240,6 +257,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BRare", "name": "BRare",
"text": "tr(lblRare)", "text": "tr(lblRare)",
"x": 140, "x": 140,
@@ -249,6 +267,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BMythic", "name": "BMythic",
"text": "Mythic", "text": "Mythic",
"x": 200, "x": 200,
@@ -258,6 +277,7 @@
}, },
{ {
"type": "TextButton", "type": "TextButton",
"selectable": true,
"name": "BResetEdition", "name": "BResetEdition",
"text": "tr(lblReset)", "text": "tr(lblReset)",
"x": 195, "x": 195,

View File

@@ -13,6 +13,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Start", "name": "Start",
"text": "tr(lblNewGame)", "text": "tr(lblNewGame)",
"selectable": true,
"width": 80, "width": 80,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -22,6 +23,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Start+", "name": "Start+",
"text": "tr(lblNewGame) +", "text": "tr(lblNewGame) +",
"selectable": true,
"width": 80, "width": 80,
"height": 30, "height": 30,
"x": 240, "x": 240,
@@ -31,6 +33,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Load", "name": "Load",
"text": "tr(lblLoad)", "text": "tr(lblLoad)",
"selectable": true,
"width": 160, "width": 160,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -40,6 +43,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Save", "name": "Save",
"text": "tr(lblSave)", "text": "tr(lblSave)",
"selectable": true,
"width": 160, "width": 160,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -49,7 +53,9 @@
"type": "TextButton", "type": "TextButton",
"name": "Resume", "name": "Resume",
"text": "tr(lblResume)", "text": "tr(lblResume)",
"selectable": true,
"width": 160, "width": 160,
"binding": "Back",
"height": 30, "height": 30,
"x": 160, "x": 160,
"y": 140 "y": 140
@@ -58,6 +64,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Continue", "name": "Continue",
"text": "tr(lblContinue)", "text": "tr(lblContinue)",
"selectable": true,
"width": 160, "width": 160,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -67,6 +74,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Settings", "name": "Settings",
"text": "tr(lblSettings)", "text": "tr(lblSettings)",
"selectable": true,
"width": 160, "width": 160,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -76,6 +84,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Exit", "name": "Exit",
"text": "tr(lblExit)", "text": "tr(lblExit)",
"selectable": true,
"width": 75, "width": 75,
"height": 30, "height": 30,
"x": 160, "x": 160,
@@ -85,6 +94,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Switch", "name": "Switch",
"text": "tr(lblClassic)", "text": "tr(lblClassic)",
"selectable": true,
"width": 75, "width": 75,
"height": 30, "height": 30,
"x": 245, "x": 245,

View File

@@ -13,6 +13,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Start", "name": "Start",
"text": "tr(lblNewGame)", "text": "tr(lblNewGame)",
"selectable": true,
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -22,6 +23,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Start+", "name": "Start+",
"text": "tr(lblNewGame) +", "text": "tr(lblNewGame) +",
"selectable": true,
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -31,6 +33,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Load", "name": "Load",
"text": "tr(lblLoad)", "text": "tr(lblLoad)",
"selectable": true,
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -40,6 +43,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Save", "name": "Save",
"text": "tr(lblSave)", "text": "tr(lblSave)",
"selectable": true,
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -49,6 +53,8 @@
"type": "TextButton", "type": "TextButton",
"name": "Resume", "name": "Resume",
"text": "tr(lblResume)", "text": "tr(lblResume)",
"selectable": true,
"binding": "Back",
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -58,6 +64,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Settings", "name": "Settings",
"text": "tr(lblSettings)", "text": "tr(lblSettings)",
"selectable": true,
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -67,6 +74,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Switch", "name": "Switch",
"text": "tr(lblClassic)", "text": "tr(lblClassic)",
"selectable": true,
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -76,6 +84,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Exit", "name": "Exit",
"text": "tr(lblExit)", "text": "tr(lblExit)",
"selectable": true,
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,
@@ -85,6 +94,7 @@
"type": "TextButton", "type": "TextButton",
"name": "Continue", "name": "Continue",
"text": "tr(lblContinue)", "text": "tr(lblContinue)",
"selectable": true,
"width": 238, "width": 238,
"height": 48, "height": 48,
"x": 16, "x": 16,

View File

@@ -113,6 +113,7 @@
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 100, "width": 100,
"height": 30, "height": 30,
"x": 335, "x": 335,

View File

@@ -104,6 +104,7 @@
"type": "TextButton", "type": "TextButton",
"name": "return", "name": "return",
"text": "tr(lblBack)", "text": "tr(lblBack)",
"binding": "Back",
"width": 260, "width": 260,
"height": 30, "height": 30,
"x": 5, "x": 5,

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More