mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +00:00
Details Labels and Zooming on Adventure World Map (#7840)
* Details Button on Adventure Map. Zooming on Adventure Map * no Wildcard Import
This commit is contained in:
@@ -20,6 +20,7 @@ public class PointOfInterestChanges implements SaveFileContent {
|
|||||||
//private final java.util.Map<Integer, Float> shopModifiers = new HashMap<>();
|
//private final java.util.Map<Integer, Float> shopModifiers = new HashMap<>();
|
||||||
private final java.util.Map<Integer, Integer> reputation = new HashMap<>();
|
private final java.util.Map<Integer, Integer> reputation = new HashMap<>();
|
||||||
private Boolean isBookmarked;
|
private Boolean isBookmarked;
|
||||||
|
private Boolean isVisited;
|
||||||
|
|
||||||
public static class Map extends HashMap<String,PointOfInterestChanges> implements SaveFileContent {
|
public static class Map extends HashMap<String,PointOfInterestChanges> implements SaveFileContent {
|
||||||
@Override
|
@Override
|
||||||
@@ -67,6 +68,7 @@ public class PointOfInterestChanges implements SaveFileContent {
|
|||||||
reputation.putAll((java.util.Map<Integer, Integer>) data.readObject("reputation"));
|
reputation.putAll((java.util.Map<Integer, Integer>) data.readObject("reputation"));
|
||||||
}
|
}
|
||||||
isBookmarked = (Boolean) data.readObject("isBookmarked");
|
isBookmarked = (Boolean) data.readObject("isBookmarked");
|
||||||
|
isVisited = (Boolean) data.readObject("isVisited");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -78,6 +80,7 @@ public class PointOfInterestChanges implements SaveFileContent {
|
|||||||
data.storeObject("shopSeeds", shopSeeds);
|
data.storeObject("shopSeeds", shopSeeds);
|
||||||
data.storeObject("reputation", reputation);
|
data.storeObject("reputation", reputation);
|
||||||
data.storeObject("isBookmarked", isBookmarked);
|
data.storeObject("isBookmarked", isBookmarked);
|
||||||
|
data.storeObject("isVisited", isVisited);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,4 +180,12 @@ public class PointOfInterestChanges implements SaveFileContent {
|
|||||||
// reset map when assigning as a quest target that needs enemies
|
// reset map when assigning as a quest target that needs enemies
|
||||||
deletedObjects.clear();
|
deletedObjects.clear();
|
||||||
}
|
}
|
||||||
|
public boolean isVisited() {
|
||||||
|
if (isVisited ==null)
|
||||||
|
return false;
|
||||||
|
return isVisited;
|
||||||
|
}
|
||||||
|
public void visit() {
|
||||||
|
isVisited = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,15 +4,20 @@ import com.badlogic.gdx.graphics.Texture;
|
|||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
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.InputListener;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
|
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
|
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
|
||||||
|
import com.badlogic.gdx.utils.SnapshotArray;
|
||||||
import com.github.tommyettinger.textra.TextraButton;
|
import com.github.tommyettinger.textra.TextraButton;
|
||||||
import com.github.tommyettinger.textra.TypingLabel;
|
import com.github.tommyettinger.textra.TypingLabel;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
|
import forge.adventure.data.AdventureEventData;
|
||||||
import forge.adventure.data.AdventureQuestData;
|
import forge.adventure.data.AdventureQuestData;
|
||||||
|
import forge.adventure.player.AdventurePlayer;
|
||||||
import forge.adventure.pointofintrest.PointOfInterest;
|
import forge.adventure.pointofintrest.PointOfInterest;
|
||||||
import forge.adventure.stage.GameHUD;
|
import forge.adventure.stage.GameHUD;
|
||||||
import forge.adventure.stage.WorldStage;
|
import forge.adventure.stage.WorldStage;
|
||||||
@@ -37,6 +42,9 @@ public class MapViewScene extends UIScene {
|
|||||||
private int index = -1;
|
private int index = -1;
|
||||||
private float avatarX = 0, avatarY = 0;
|
private float avatarX = 0, avatarY = 0;
|
||||||
private Set<Vector2> positions;
|
private Set<Vector2> positions;
|
||||||
|
private final List<TypingLabel> details;
|
||||||
|
private final float maxZoom = 1.2f;
|
||||||
|
private final float minZoom = 0.25f;
|
||||||
private Set<PointOfInterest> bookmark;
|
private Set<PointOfInterest> bookmark;
|
||||||
|
|
||||||
public static MapViewScene instance() {
|
public static MapViewScene instance() {
|
||||||
@@ -49,7 +57,25 @@ public class MapViewScene extends UIScene {
|
|||||||
super(Forge.isLandscapeMode() ? "ui/map.json" : "ui/map_portrait.json");
|
super(Forge.isLandscapeMode() ? "ui/map.json" : "ui/map_portrait.json");
|
||||||
ui.onButtonPress("done", this::done);
|
ui.onButtonPress("done", this::done);
|
||||||
ui.onButtonPress("quest", this::scroll);
|
ui.onButtonPress("quest", this::scroll);
|
||||||
scroll = ui.findActor("map");
|
//TODO:Add Translations for buttons
|
||||||
|
ui.onButtonPress("details", this::details);
|
||||||
|
ui.onButtonPress("events", this::events);
|
||||||
|
ui.onButtonPress("reputation", this::reputation);
|
||||||
|
ui.onButtonPress("names", this::names);
|
||||||
|
ui.onButtonPress("zoomIn", this::zoomIn);
|
||||||
|
ui.onButtonPress("zoomOut", this::zoomOut);
|
||||||
|
scroll = new ScrollPane(null,Controls.getSkin()) {
|
||||||
|
@Override
|
||||||
|
public void addScrollListener() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
scroll.setName("map");
|
||||||
|
scroll.setActor(Controls.newTextraLabel(""));
|
||||||
|
scroll.setWidth(ui.findActor("map").getWidth());
|
||||||
|
scroll.setHeight(ui.findActor("map").getHeight());
|
||||||
|
ui.addActor(scroll);
|
||||||
|
scroll.setZIndex(1);
|
||||||
labels = Lists.newArrayList();
|
labels = Lists.newArrayList();
|
||||||
positions = Sets.newHashSet();
|
positions = Sets.newHashSet();
|
||||||
bookmark = Sets.newHashSet();
|
bookmark = Sets.newHashSet();
|
||||||
@@ -60,16 +86,53 @@ public class MapViewScene extends UIScene {
|
|||||||
img.setPosition(0, 0);
|
img.setPosition(0, 0);
|
||||||
table.addActor(img);
|
table.addActor(img);
|
||||||
table.addActor(miniMapPlayer);
|
table.addActor(miniMapPlayer);
|
||||||
|
miniMapPlayer.setZIndex(2);
|
||||||
|
details = Lists.newArrayList();
|
||||||
|
ui.addListener(new InputListener() {
|
||||||
|
public boolean scrolled(InputEvent event, float x, float y, float scrollAmountX, float scrollAmountY) {
|
||||||
|
event.cancel();
|
||||||
|
scroll.setScrollbarsVisible(true);
|
||||||
|
if (scrollAmountY > 0) {
|
||||||
|
zoomOut();
|
||||||
|
return true;
|
||||||
|
} else if (scrollAmountY < 0) {
|
||||||
|
zoomIn();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
stage.setScrollFocus(ui);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void test() {
|
||||||
|
img.setPosition((scroll.getScrollPercentX()*2334 +233)*0.1f + 0.9f*img.getX(),(2544-scroll.getScrollPercentY()*2544 +128)*0.1f + 0.9f*img.getY());
|
||||||
|
img.setScale(img.getScaleX()*0.9f);
|
||||||
|
miniMapPlayer.setPosition((scroll.getScrollPercentX()*2334 +233)*0.1f + 0.9f*miniMapPlayer.getX(),(2544-scroll.getScrollPercentY()*2544 +128)*0.1f + 0.9f*miniMapPlayer.getY());
|
||||||
|
miniMapPlayer.setScale(miniMapPlayer.getScaleX()*0.9f);
|
||||||
|
for(Actor actor : table.getChildren()) {
|
||||||
|
if (actor instanceof TypingLabel) {
|
||||||
|
actor.setPosition((scroll.getScrollPercentX() * 2334 + 233) * 0.1f + 0.9f * actor.getX(), (2544 - scroll.getScrollPercentY() * 2544 + 128) * 0.1f + 0.9f * actor.getY());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean done() {
|
public boolean done() {
|
||||||
GameHUD.getInstance().getTouchpad().setVisible(false);
|
GameHUD.getInstance().getTouchpad().setVisible(false);
|
||||||
for (Actor a : table.getChildren()) {
|
SnapshotArray<Actor> allActors = table.getChildren();
|
||||||
if (a instanceof TypingLabel)
|
for (int i = 0; i < allActors.size; i++) {
|
||||||
a.remove();
|
if (allActors.get(i) instanceof TypingLabel) {
|
||||||
|
allActors.get(i).remove();
|
||||||
|
i--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
labels.clear();
|
labels.clear();
|
||||||
positions.clear();
|
positions.clear();
|
||||||
|
details.clear();
|
||||||
|
miniMapPlayer.setScale(1);
|
||||||
|
img.setScale(1);
|
||||||
|
img.setPosition(0,0);
|
||||||
index = -1;
|
index = -1;
|
||||||
Forge.switchToLast();
|
Forge.switchToLast();
|
||||||
return true;
|
return true;
|
||||||
@@ -101,6 +164,134 @@ public class MapViewScene extends UIScene {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void details() {
|
||||||
|
TextraButton detailsButton = ui.findActor("details");
|
||||||
|
if (detailsButton != null) {
|
||||||
|
detailsButton.setVisible(false);
|
||||||
|
detailsButton.setDisabled(true);
|
||||||
|
}
|
||||||
|
TextraButton eventButton = ui.findActor("events");
|
||||||
|
if (eventButton != null) {
|
||||||
|
eventButton.setVisible(true);
|
||||||
|
eventButton.setDisabled(false);
|
||||||
|
}
|
||||||
|
List<PointOfInterest> allPois = Current.world().getAllPointOfInterest();
|
||||||
|
for (PointOfInterest poi : allPois) {
|
||||||
|
for (AdventureEventData data : AdventurePlayer.current().getEvents()) {
|
||||||
|
if (data.sourceID.equals(poi.getID())) {
|
||||||
|
TypingLabel label = Controls.newTypingLabel("[%?BLACKEN] " + data.getCardBlock());
|
||||||
|
table.addActor(label);
|
||||||
|
details.add(label);
|
||||||
|
label.setPosition(img.getScaleX()*(getMapX(poi.getPosition().x) - label.getWidth() / 2) + img.getX(), img.getScaleY()*(getMapY(poi.getPosition().y) - label.getHeight() / 2) + img.getY());
|
||||||
|
label.skipToTheEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void events() {
|
||||||
|
TextraButton eventsButton = ui.findActor("events");
|
||||||
|
if (eventsButton != null) {
|
||||||
|
eventsButton.setVisible(false);
|
||||||
|
eventsButton.setDisabled(true);
|
||||||
|
}
|
||||||
|
TextraButton repButton = ui.findActor("reputation");
|
||||||
|
if (repButton != null) {
|
||||||
|
repButton.setVisible(true);
|
||||||
|
repButton.setDisabled(false);
|
||||||
|
}
|
||||||
|
for (TypingLabel detail : details) {
|
||||||
|
table.removeActor(detail);
|
||||||
|
}
|
||||||
|
List<PointOfInterest> allPois = Current.world().getAllPointOfInterest();
|
||||||
|
details.clear();
|
||||||
|
for (PointOfInterest poi : allPois) {
|
||||||
|
int rep = WorldSave.getCurrentSave().getPointOfInterestChanges(poi.getID()).getMapReputation();
|
||||||
|
if (rep != 0) {
|
||||||
|
TypingLabel label = Controls.newTypingLabel("[%?BLACKEN] " + rep);
|
||||||
|
table.addActor(label);
|
||||||
|
details.add(label);
|
||||||
|
label.setPosition(img.getScaleX()*(getMapX(poi.getPosition().x) - label.getWidth() / 2) + img.getX(), img.getScaleY()*(getMapY(poi.getPosition().y) - label.getHeight() / 2) + img.getY());
|
||||||
|
label.skipToTheEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reputation() {
|
||||||
|
TextraButton repButton = ui.findActor("reputation");
|
||||||
|
if (repButton != null) {
|
||||||
|
repButton.setVisible(false);
|
||||||
|
repButton.setDisabled(true);
|
||||||
|
}
|
||||||
|
TextraButton namesButton = ui.findActor("names");
|
||||||
|
if (namesButton != null) {
|
||||||
|
namesButton.setVisible(true);
|
||||||
|
namesButton.setDisabled(false);
|
||||||
|
}
|
||||||
|
for (TypingLabel detail : details) {
|
||||||
|
table.removeActor(detail);
|
||||||
|
}
|
||||||
|
details.clear();
|
||||||
|
List<PointOfInterest> allPois = Current.world().getAllPointOfInterest();
|
||||||
|
for (PointOfInterest poi : allPois) {
|
||||||
|
if (WorldSave.getCurrentSave().getPointOfInterestChanges(poi.getID()).isVisited()) {
|
||||||
|
if ("cave".equalsIgnoreCase(poi.getData().type) || "dungeon".equalsIgnoreCase(poi.getData().type) || "castle".equalsIgnoreCase(poi.getData().type)) {
|
||||||
|
TypingLabel label = Controls.newTypingLabel("[%?BLACKEN] " + poi.getDisplayName());
|
||||||
|
table.addActor(label);
|
||||||
|
details.add(label);
|
||||||
|
label.setPosition(img.getScaleX()*(getMapX(poi.getPosition().x) - label.getWidth() / 2) + img.getX(), img.getScaleY()*(getMapY(poi.getPosition().y) - label.getHeight() / 2) + img.getY());
|
||||||
|
label.skipToTheEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void names() {
|
||||||
|
TextraButton namesButton = ui.findActor("names");
|
||||||
|
if (namesButton != null) {
|
||||||
|
namesButton.setVisible(false);
|
||||||
|
namesButton.setDisabled(true);
|
||||||
|
}
|
||||||
|
TextraButton detailsButton = ui.findActor("details");
|
||||||
|
if (detailsButton != null) {
|
||||||
|
detailsButton.setVisible(true);
|
||||||
|
detailsButton.setDisabled(false);
|
||||||
|
}
|
||||||
|
for (TypingLabel detail : details) {
|
||||||
|
table.removeActor(detail);
|
||||||
|
}
|
||||||
|
details.clear();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void zoomOut() {
|
||||||
|
if (img.getScaleX()*0.9f > minZoom) {
|
||||||
|
img.setPosition((scroll.getScrollX() + scroll.getWidth()/2) * 0.1f + 0.9f * img.getX(), (scroll.getMaxY() - scroll.getScrollY() + scroll.getHeight()/2) * 0.1f + 0.9f * img.getY());
|
||||||
|
img.setScale(img.getScaleX() * 0.9f);
|
||||||
|
miniMapPlayer.setPosition((scroll.getScrollX() + scroll.getWidth()/2) * 0.1f + 0.9f * miniMapPlayer.getX(), (scroll.getMaxY() - scroll.getScrollY() + scroll.getHeight()/2) * 0.1f + 0.9f * miniMapPlayer.getY());
|
||||||
|
miniMapPlayer.setScale(miniMapPlayer.getScaleX() * 0.9f);
|
||||||
|
for (Actor actor : table.getChildren()) {
|
||||||
|
if (actor instanceof TypingLabel) {
|
||||||
|
actor.setPosition((scroll.getScrollX() + scroll.getWidth()/2) * 0.1f + 0.9f * actor.getX(), (scroll.getMaxY() - scroll.getScrollY() + scroll.getHeight()/2) * 0.1f + 0.9f * actor.getY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void zoomIn() {
|
||||||
|
if (img.getScaleX()*1.1f < maxZoom) {
|
||||||
|
img.setPosition(-(scroll.getScrollX() + scroll.getWidth()/2) * 0.1f + 1.1f * img.getX(), -(scroll.getMaxY() - scroll.getScrollY() + scroll.getHeight()/2) * 0.1f + 1.1f * img.getY());
|
||||||
|
img.setScale(img.getScaleX() * 1.1f);
|
||||||
|
miniMapPlayer.setPosition(-(scroll.getScrollX() + scroll.getWidth()/2) * 0.1f + 1.1f * miniMapPlayer.getX(), -(scroll.getMaxY() - scroll.getScrollY() + scroll.getHeight()/2) * 0.1f + 1.1f * miniMapPlayer.getY());
|
||||||
|
miniMapPlayer.setScale(miniMapPlayer.getScaleX() * 1.1f);
|
||||||
|
for (Actor actor : table.getChildren()) {
|
||||||
|
if (actor instanceof TypingLabel) {
|
||||||
|
actor.setPosition(-(scroll.getScrollX() + scroll.getWidth()/2) * 0.1f + 1.1f * actor.getX(), -(scroll.getMaxY() - scroll.getScrollY() + scroll.getHeight()/2) * 0.1f + 1.1f * actor.getY());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enter() {
|
public void enter() {
|
||||||
if (miniMapTexture != null)
|
if (miniMapTexture != null)
|
||||||
@@ -135,6 +326,37 @@ public class MapViewScene extends UIScene {
|
|||||||
label.setPosition(getMapX(poi.getPosition().x) - label.getWidth() / 2, getMapY(poi.getPosition().y) - label.getHeight() / 2);
|
label.setPosition(getMapX(poi.getPosition().x) - label.getWidth() / 2, getMapY(poi.getPosition().y) - label.getHeight() / 2);
|
||||||
label.skipToTheEnd();
|
label.skipToTheEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TextraButton detailsButton = ui.findActor("details");
|
||||||
|
if (detailsButton != null) {
|
||||||
|
detailsButton.setVisible(true);
|
||||||
|
detailsButton.setDisabled(false);
|
||||||
|
}
|
||||||
|
TextraButton eventButton = ui.findActor("events");
|
||||||
|
if (eventButton != null) {
|
||||||
|
eventButton.setVisible(false);
|
||||||
|
eventButton.setDisabled(true);
|
||||||
|
}
|
||||||
|
TextraButton repButton = ui.findActor("reputation");
|
||||||
|
if (repButton != null) {
|
||||||
|
repButton.setVisible(false);
|
||||||
|
repButton.setDisabled(true);
|
||||||
|
}
|
||||||
|
TextraButton namesButton = ui.findActor("names");
|
||||||
|
if (namesButton != null) {
|
||||||
|
namesButton.setVisible(false);
|
||||||
|
namesButton.setDisabled(true);
|
||||||
|
}
|
||||||
|
TextraButton zoomInButton = ui.findActor("zoomIn");
|
||||||
|
if (zoomInButton != null) {
|
||||||
|
zoomInButton.setVisible(true);
|
||||||
|
zoomInButton.setDisabled(false);
|
||||||
|
}
|
||||||
|
TextraButton zoomOutButton = ui.findActor("zoomOut");
|
||||||
|
if (zoomOutButton != null) {
|
||||||
|
zoomOutButton.setVisible(true);
|
||||||
|
zoomOutButton.setDisabled(false);
|
||||||
|
}
|
||||||
TextraButton questButton = ui.findActor("quest");
|
TextraButton questButton = ui.findActor("quest");
|
||||||
if (questButton != null) {
|
if (questButton != null) {
|
||||||
questButton.setDisabled(labels.isEmpty());
|
questButton.setDisabled(labels.isEmpty());
|
||||||
|
|||||||
@@ -216,6 +216,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
|
|||||||
WorldSave.getCurrentSave().autoSave();
|
WorldSave.getCurrentSave().autoSave();
|
||||||
loadPOI(point.getPointOfInterest());
|
loadPOI(point.getPointOfInterest());
|
||||||
point.getMapSprite().checkOut();
|
point.getMapSprite().checkOut();
|
||||||
|
WorldSave.getCurrentSave().getPointOfInterestChanges(point.getPointOfInterest().getID()).visit();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
if (point == collidingPoint) {
|
if (point == collidingPoint) {
|
||||||
@@ -365,7 +366,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
|
|||||||
super.draw();
|
super.draw();
|
||||||
if (WorldSave.getCurrentSave().getPlayer().hasAnnounceFantasy()) {
|
if (WorldSave.getCurrentSave().getPlayer().hasAnnounceFantasy()) {
|
||||||
MapStage.getInstance().showDeckAwardDialog("{BLINK=WHITE;RED}Chaos Mode!{ENDBLINK}\n" +
|
MapStage.getInstance().showDeckAwardDialog("{BLINK=WHITE;RED}Chaos Mode!{ENDBLINK}\n" +
|
||||||
"Enemy will use Preconstructed or Random Generated Decks. Genetic AI Decks will be available to some enemies on Hard difficulty.",
|
"Enemy will use Preconstructed or Random Generated Decks. Genetic AI Decks will be available to some enemies on Hard difficulty.",
|
||||||
WorldSave.getCurrentSave().getPlayer().getSelectedDeck());
|
WorldSave.getCurrentSave().getPlayer().getSelectedDeck());
|
||||||
WorldSave.getCurrentSave().getPlayer().clearAnnounceFantasy();
|
WorldSave.getCurrentSave().getPlayer().clearAnnounceFantasy();
|
||||||
} else if (WorldSave.getCurrentSave().getPlayer().hasAnnounceCustom()) {
|
} else if (WorldSave.getCurrentSave().getPlayer().hasAnnounceCustom()) {
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
"width": 480,
|
"width": 480,
|
||||||
"height": 270,
|
"height": 270,
|
||||||
"yDown": true,
|
"yDown": true,
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"type": "Scroll",
|
"type": "Scroll",
|
||||||
"name": "map",
|
"name": "map",
|
||||||
"width": 480,
|
"width": 480,
|
||||||
"height": 270
|
"height": 270
|
||||||
},
|
},
|
||||||
@@ -28,6 +28,60 @@
|
|||||||
"height": 20,
|
"height": 20,
|
||||||
"x": 415,
|
"x": 415,
|
||||||
"y": 245
|
"y": 245
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "details",
|
||||||
|
"text": "[%80] Details",
|
||||||
|
"width": 60,
|
||||||
|
"height": 20,
|
||||||
|
"x": 210,
|
||||||
|
"y": 245
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "events",
|
||||||
|
"text": "[%80] Events",
|
||||||
|
"width": 60,
|
||||||
|
"height": 20,
|
||||||
|
"x": 210,
|
||||||
|
"y": 245
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "reputation",
|
||||||
|
"text": "[%80] Reputation",
|
||||||
|
"width": 60,
|
||||||
|
"height": 20,
|
||||||
|
"x": 210,
|
||||||
|
"y": 245
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "names",
|
||||||
|
"text": "[%80] Names",
|
||||||
|
"width": 60,
|
||||||
|
"height": 20,
|
||||||
|
"x": 210,
|
||||||
|
"y": 245
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "zoomIn",
|
||||||
|
"text": "[%80]+",
|
||||||
|
"width": 20,
|
||||||
|
"height": 20,
|
||||||
|
"x": 5,
|
||||||
|
"y": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "zoomOut",
|
||||||
|
"text": "[%80]-",
|
||||||
|
"width": 20,
|
||||||
|
"height": 20,
|
||||||
|
"x": 455,
|
||||||
|
"y": 5
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,60 @@
|
|||||||
"height": 20,
|
"height": 20,
|
||||||
"x": 205,
|
"x": 205,
|
||||||
"y": 455
|
"y": 455
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "details",
|
||||||
|
"text": "[%80] Details",
|
||||||
|
"width": 60,
|
||||||
|
"height": 20,
|
||||||
|
"x": 105,
|
||||||
|
"y": 245
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "events",
|
||||||
|
"text": "[%80] Events",
|
||||||
|
"width": 60,
|
||||||
|
"height": 20,
|
||||||
|
"x": 105,
|
||||||
|
"y": 245
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "reputation",
|
||||||
|
"text": "[%80] Reputation",
|
||||||
|
"width": 60,
|
||||||
|
"height": 20,
|
||||||
|
"x": 105,
|
||||||
|
"y": 245
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "names",
|
||||||
|
"text": "[%80] Names",
|
||||||
|
"width": 60,
|
||||||
|
"height": 20,
|
||||||
|
"x": 105,
|
||||||
|
"y": 245
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "zoomIn",
|
||||||
|
"text": "[%80]+",
|
||||||
|
"width": 20,
|
||||||
|
"height": 20,
|
||||||
|
"x": 5,
|
||||||
|
"y": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "TextButton",
|
||||||
|
"name": "zoomOut",
|
||||||
|
"text": "[%80]-",
|
||||||
|
"width": 20,
|
||||||
|
"height": 20,
|
||||||
|
"x": 245,
|
||||||
|
"y": 5
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user