This commit is contained in:
Anuken
2018-12-26 13:22:31 -05:00
parent 22b7086bea
commit 8879593381
164 changed files with 1151 additions and 1426 deletions
@@ -1,7 +1,6 @@
package io.anuke.mindustry.ui;
import io.anuke.arc.graphics.Texture;
import io.anuke.arc.graphics.g2d.Batch;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.arc.graphics.g2d.Draw;
@@ -31,8 +30,8 @@ public class BorderImage extends Image{
}
@Override
public void draw(Batch batch, float alpha){
super.draw(batch, alpha);
public void draw(){
super.draw();
float scaleX = getScaleX();
float scaleY = getScaleY();
@@ -1,7 +1,10 @@
package io.anuke.mindustry.ui;
import io.anuke.arc.Core;
import io.anuke.arc.collection.OrderedMap;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.util.OrderedMap;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Strings;
import io.anuke.mindustry.entities.units.UnitType;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.type.Item;
@@ -13,10 +16,6 @@ import io.anuke.mindustry.world.meta.BlockStat;
import io.anuke.mindustry.world.meta.BlockStats;
import io.anuke.mindustry.world.meta.StatCategory;
import io.anuke.mindustry.world.meta.StatValue;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.util.Strings;
public class ContentDisplay{
@@ -1,8 +1,6 @@
package io.anuke.mindustry.ui;
import io.anuke.arc.graphics.g2d.Batch;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.Fill;
import io.anuke.arc.scene.Element;
public class GridImage extends Element{
@@ -13,9 +11,8 @@ public class GridImage extends Element{
this.imageHeight = h;
}
public void draw(Batch batch, float alpha){
TextureRegion blank = Core.atlas.find("white");
@Override
public void draw(){
float xspace = (getWidth() / imageWidth);
float yspace = (getHeight() / imageHeight);
float s = 1f;
@@ -26,11 +23,11 @@ public class GridImage extends Element{
int jumpy = (int) (Math.max(minspace, yspace) / yspace);
for(int x = 0; x <= imageWidth; x += jumpx){
batch.draw(blank, (int) (getX() + xspace * x - s), getY() - s, 2, getHeight() + (x == imageWidth ? 1 : 0));
Fill.rect().set((int) (getX() + xspace * x - s), getY() - s, 2, getHeight() + (x == imageWidth ? 1 : 0));
}
for(int y = 0; y <= imageHeight; y += jumpy){
batch.draw(blank, getX() - s, (int) (getY() + y * yspace - s), getWidth(), 2);
Fill.rect().set(getX() - s, (int) (getY() + y * yspace - s), getWidth(), 2);
}
}
@@ -1,6 +1,7 @@
package io.anuke.mindustry.ui;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.Core;
/**
* A low-garbage way to format bundle strings.
+1 -1
View File
@@ -1,7 +1,7 @@
package io.anuke.mindustry.ui;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.util.Bundles;
public class Links{
private static LinkEntry[] links;
+11 -11
View File
@@ -1,15 +1,14 @@
package io.anuke.mindustry.ui;
import io.anuke.arc.graphics.Texture.TextureFilter;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.mindustry.graphics.Shaders;
import io.anuke.arc.Core;
import io.anuke.arc.Graphics;
import io.anuke.arc.graphics.Texture.TextureFilter;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.event.InputEvent;
import io.anuke.arc.scene.event.InputListener;
import io.anuke.arc.scene.ui.layout.Container;
import io.anuke.mindustry.graphics.Shaders;
import static io.anuke.mindustry.Vars.*;
@@ -23,7 +22,7 @@ public class Minimap extends Container<Element>{
public void draw(){
if(renderer.minimap.getRegion() == null) return;
Draw.crect(renderer.minimap.getRegion(), x, y, width, height);
Draw.rect().tex(renderer.minimap.getRegion()).set(x, y, width, height);
if(renderer.minimap.getTexture() != null){
renderer.minimap.drawEntities(x, y, width, height);
@@ -46,9 +45,9 @@ public class Minimap extends Container<Element>{
r.setU2(px2 / (world.width() + pad*2f));
r.setV2(1f - py2 / (world.height() + pad*2f));
Graphics.shader(Shaders.fog);
Draw.crect(r, x, y, width, height);
Graphics.shader();
Draw.shader(Shaders.fog);
Draw.rect().tex(r).set(x, y, width, height);
Draw.shader();
renderer.fog.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
}
@@ -61,15 +60,16 @@ public class Minimap extends Container<Element>{
margin(5f);
addListener(new InputListener(){
public boolean scrolled(InputEvent event, float x, float y, int amount){
renderer.minimap.zoomBy(amount);
@Override
public boolean scrolled(InputEvent event, float x, float y, float amountx, float amounty){
renderer.minimap.zoomBy(amounty);
return true;
}
});
update(() -> {
Element e = Core.scene.hit(Graphics.mouse().x, Graphics.mouse().y, true);
Element e = Core.scene.hit(Core.input.mouseX(), Core.input.mouseY(), true);
if(e != null && e.isDescendantOf(this)){
Core.scene.setScrollFocus(this);
}else if(Core.scene.getScrollFocus() == this){
@@ -2,15 +2,14 @@ package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.collection.Array;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.io.Changelogs;
import io.anuke.mindustry.io.Changelogs.VersionInfo;
import io.anuke.mindustry.game.Version;
import io.anuke.arc.Settings;
import io.anuke.arc.scene.ui.ScrollPane;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Log;
import io.anuke.arc.util.OS;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.game.Version;
import io.anuke.mindustry.io.Changelogs;
import io.anuke.mindustry.io.Changelogs.VersionInfo;
import static io.anuke.mindustry.Vars.ios;
@@ -79,7 +78,7 @@ public class ChangelogDialog extends FloatingDialog{
int lastid = Core.settings.getInt("lastBuild");
if(lastid != 0 && versions.peek().build > lastid){
Core.settings.putInt("lastBuild", versions.peek().build);
Core.settings.put("lastBuild", versions.peek().build);
Core.settings.save();
show();
}
@@ -1,8 +1,8 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Input.Keys;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.function.Consumer;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.scene.ui.Dialog;
import io.anuke.arc.scene.ui.ImageButton;
import io.anuke.arc.scene.ui.layout.Table;
@@ -38,7 +38,7 @@ public class ColorPickDialog extends Dialog{
}
keyDown(key -> {
if(key == Keys.ESCAPE || key == Keys.BACK)
if(key == KeyCode.ESCAPE || key == KeyCode.BACK)
hide();
});
@@ -1,15 +1,16 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Input.Keys;
import io.anuke.arc.util.Align;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.arc.Core;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.scene.ui.Image;
import io.anuke.arc.scene.ui.KeybindDialog;
import io.anuke.arc.util.Align;
import io.anuke.mindustry.graphics.Palette;
public class ControlsDialog extends KeybindDialog{
public ControlsDialog(){
setDialog();
setStyle(Core.scene.skin.get("dialog", WindowStyle.class));
setFillParent(true);
title().setAlignment(Align.center);
@@ -23,7 +24,7 @@ public class ControlsDialog extends KeybindDialog{
buttons().addImageTextButton("$text.back", "icon-arrow-left", 30f, this::hide).size(230f, 64f);
keyDown(key -> {
if(key == Keys.ESCAPE || key == Keys.BACK)
if(key == KeyCode.ESCAPE || key == KeyCode.BACK)
hide();
});
}
@@ -2,20 +2,19 @@ package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.util.Align;
import io.anuke.arc.util.Scaling;
import io.anuke.mindustry.game.Difficulty;
import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.maps.Map;
import io.anuke.mindustry.ui.BorderImage;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.scene.event.Touchable;
import io.anuke.arc.scene.ui.ButtonGroup;
import io.anuke.arc.scene.ui.ImageButton;
import io.anuke.arc.scene.ui.ScrollPane;
import io.anuke.arc.scene.ui.TextButton;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Align;
import io.anuke.arc.util.Scaling;
import io.anuke.mindustry.game.Difficulty;
import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.maps.Map;
import io.anuke.mindustry.ui.BorderImage;
import static io.anuke.mindustry.Vars.*;
@@ -76,7 +75,7 @@ public class CustomGameDialog extends FloatingDialog{
sdif.addButton("", () -> {})
.update(t -> {
t.setText(state.difficulty.toString());
t.setTouchable(Touchable.disabled);
t.touchable(Touchable.disabled);
}).width(180f);
sdif.addImageButton("icon-arrow-right", 10 * 3, () -> {
@@ -1,22 +1,22 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.files.FileHandle;
import io.anuke.arc.graphics.g2d.GlyphLayout;
import io.anuke.arc.util.Align;
import io.anuke.arc.collection.Array;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.Platform;
import io.anuke.arc.util.Time;
import io.anuke.arc.files.FileHandle;
import io.anuke.arc.function.Consumer;
import io.anuke.arc.function.Predicate;
import io.anuke.arc.graphics.g2d.GlyphLayout;
import io.anuke.arc.scene.event.Touchable;
import io.anuke.arc.scene.ui.*;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.scene.ui.layout.Unit;
import io.anuke.arc.scene.utils.UIUtils;
import io.anuke.arc.util.Align;
import io.anuke.arc.util.OS;
import io.anuke.arc.util.Pooling;
import io.anuke.arc.util.Time;
import io.anuke.arc.util.pooling.Pools;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.Platform;
import java.util.Arrays;
@@ -73,7 +73,7 @@ public class FileChooser extends FloatingDialog{
cancel.clicked(this::hide);
navigation = new TextField("");
navigation.setTouchable(Touchable.disabled);
navigation.touchable(Touchable.disabled);
files = new Table();
files.marginRight(10);
@@ -180,7 +180,7 @@ public class FileChooser extends FloatingDialog{
GlyphLayout layout = Pools.obtain(GlyphLayout.class, GlyphLayout::new);
layout.setText(Core.font, navigation.getText());
layout.setText(Core.scene.skin.getFont("default-font"), navigation.getText());
if(layout.width < navigation.getWidth()){
navigation.setCursorPosition(0);
@@ -1,7 +1,7 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.Input.Keys;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.util.Align;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.EventType.ResizeEvent;
@@ -66,7 +66,7 @@ public class FloatingDialog extends Dialog{
buttons().addImageTextButton("$text.back", "icon-arrow-left", 30f, this::hide).size(230f, 64f);
keyDown(key -> {
if(key == Keys.ESCAPE || key == Keys.BACK) {
if(key == KeyCode.ESCAPE || key == KeyCode.BACK) {
Core.app.post(this::hide);
}
});
@@ -1,23 +1,23 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.Graphics.Cursor.SystemCursor;
import io.anuke.arc.collection.Array;
import io.anuke.arc.collection.GridMap;
import io.anuke.arc.graphics.Pixmap;
import io.anuke.arc.graphics.Pixmap.Format;
import io.anuke.arc.graphics.Texture;
import io.anuke.arc.collection.Array;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.event.InputEvent;
import io.anuke.arc.scene.event.InputListener;
import io.anuke.arc.util.async.AsyncExecutor;
import io.anuke.mindustry.content.Items;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.ColorMapper;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.event.InputEvent;
import io.anuke.arc.scene.event.InputListener;
import io.anuke.arc.scene.utils.Cursors;
import io.anuke.arc.util.GridMap;
import io.anuke.arc.math.Mathf;
import static io.anuke.mindustry.Vars.sectorSize;
import static io.anuke.mindustry.Vars.world;
@@ -37,13 +37,13 @@ public class GenViewDialog extends FloatingDialog{
float panX, panY;
float lastX, lastY;
int viewsize = 3;
AsyncExecutor async = new AsyncExecutor(Mathf.sqr(viewsize*2));
AsyncExecutor async = new AsyncExecutor(viewsize*2 * viewsize*2);
{
addListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
Cursors.setHand();
public boolean touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){
Core.graphics.cursor(SystemCursor.hand);
lastX = x;
lastY = y;
return true;
@@ -59,8 +59,8 @@ public class GenViewDialog extends FloatingDialog{
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button){
Cursors.restoreCursor();
public void touchUp(InputEvent event, float x, float y, int pointer, KeyCode button){
Core.graphics.restoreCursor();
}
});
}
@@ -99,7 +99,7 @@ public class GenViewDialog extends FloatingDialog{
float drawX = x + width/2f+ wx * padSectorSize - tx * padSectorSize - panX % padSectorSize;
float drawY = y + height/2f + wy * padSectorSize - ty * padSectorSize - panY % padSectorSize;
Draw.rect(map.get(wx, wy), drawX, drawY, padSectorSize, padSectorSize);
Draw.rect().tex(map.get(wx, wy)).set(drawX, drawY, padSectorSize, padSectorSize);
}
}
}
@@ -1,14 +1,13 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.scene.ui.ImageButton;
import io.anuke.arc.util.Strings;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.net.Net;
import io.anuke.arc.Settings;
import io.anuke.arc.util.Time;
import io.anuke.arc.scene.ui.ImageButton;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.util.Strings;
import java.io.IOException;
@@ -37,7 +36,7 @@ public class HostDialog extends FloatingDialog{
ImageButton button = t.addImageButton("white", "clear-full", 40, () -> {
new ColorPickDialog().show(color -> {
player.color.set(color);
Core.settings.putInt("color-0", Color.rgba8888(color));
Core.settings.put("color-0", Color.rgba8888(color));
Core.settings.save();
});
}).size(54f).get();
@@ -1,24 +1,23 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.MathUtils;
import io.anuke.arc.collection.Array;
import io.anuke.annotations.Annotations.Serialize;
import io.anuke.arc.Core;
import io.anuke.arc.collection.Array;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.scene.style.Drawable;
import io.anuke.arc.scene.ui.*;
import io.anuke.arc.scene.ui.layout.Cell;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.scene.utils.UIUtils;
import io.anuke.arc.util.Strings;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.game.Version;
import io.anuke.mindustry.net.Host;
import io.anuke.mindustry.net.Net;
import io.anuke.arc.Settings;
import io.anuke.arc.util.Time;
import io.anuke.arc.scene.style.Drawable;
import io.anuke.arc.scene.ui.*;
import io.anuke.arc.scene.ui.layout.Cell;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.scene.utils.UIUtils;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.util.Strings;
import static io.anuke.mindustry.Vars.*;
@@ -48,7 +47,7 @@ public class JoinDialog extends FloatingDialog{
add.content().add("$text.joingame.ip").padRight(5f).left();
TextField field = add.content().addField(Core.settings.getString("ip"), text -> {
Core.settings.putString("ip", text);
Core.settings.put("ip", text);
Core.settings.save();
}).size(320f, 54f).get();
@@ -145,7 +144,7 @@ public class JoinDialog extends FloatingDialog{
void refreshServer(Server server){
server.content.clear();
server.content.label(() -> Core.bundle.get("text.server.refreshing") + Strings.animated(4, 11, "."));
server.content.label(() -> Core.bundle.get("text.server.refreshing") + Strings.animated(Time.time(), 4, 11, "."));
Net.pingHost(server.ip, server.port, host -> {
String versionString;
@@ -213,7 +212,7 @@ public class JoinDialog extends FloatingDialog{
ImageButton button = t.addImageButton("white", "clear-full", 40, () -> {
new ColorPickDialog().show(color -> {
player.color.set(color);
Core.settings.putInt("color-0", Color.rgba8888(color));
Core.settings.put("color-0", Color.rgba8888(color));
Core.settings.save();
});
}).size(54f).get();
@@ -235,7 +234,7 @@ public class JoinDialog extends FloatingDialog{
Cell<TextButton> cell = ((Table) pane.getParent()).getCell(button);
if(!MathUtils.isEqual(cell.getMinWidth(), pw)){
if(!Mathf.isEqual(cell.getMinWidth(), pw)){
cell.width(pw);
cell.padLeft(pad);
pane.getParent().invalidateHierarchy();
@@ -248,7 +247,7 @@ public class JoinDialog extends FloatingDialog{
local.clear();
local.background((Drawable)null);
local.table("button", t -> t.label(() -> "[accent]" + Core.bundle.get("text.hosts.discovering") + Strings.animated(4, 10f, ".")).pad(10f)).growX();
local.table("button", t -> t.label(() -> "[accent]" + Core.bundle.get("text.hosts.discovering") + Strings.animated(Time.time(), 4, 10f, ".")).pad(10f)).growX();
Net.discoverServers(this::addLocalHost, this::finishLocalHosts);
}
@@ -1,6 +1,6 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Settings;
import io.anuke.arc.Core;
import io.anuke.arc.scene.ui.ButtonGroup;
import io.anuke.arc.scene.ui.ScrollPane;
import io.anuke.arc.scene.ui.TextButton;
@@ -33,7 +33,7 @@ public class LanguageDialog extends FloatingDialog{
TextButton button = new TextButton(loc.getDisplayName(loc), "toggle");
button.clicked(() -> {
if(getLocale().equals(loc)) return;
Core.settings.putString("locale", loc.toString());
Core.settings.put("locale", loc.toString());
Core.settings.save();
Log.info("Setting locale: {0}", loc.toString());
ui.showInfo("$text.language.restart");
@@ -67,7 +67,7 @@ public class LanguageDialog extends FloatingDialog{
//check exact locale
for(Locale l : locales){
if(l.equals(Locale.getDefault())){
Core.settings.putString("locale", l.toString());
Core.settings.put("locale", l.toString());
return;
}
}
@@ -75,11 +75,11 @@ public class LanguageDialog extends FloatingDialog{
//find by language
for(Locale l : locales){
if(l.getLanguage().equals(Locale.getDefault().getLanguage())){
Core.settings.putString("locale", l.toString());
Core.settings.put("locale", l.toString());
return;
}
}
Core.settings.putString("locale", new Locale("en").toString());
Core.settings.put("locale", new Locale("en").toString());
}
}
@@ -8,12 +8,10 @@ import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.io.SaveIO;
import io.anuke.mindustry.game.Saves.SaveSlot;
import io.anuke.arc.Core;
import io.anuke.arc.util.Time;
import io.anuke.arc.scene.ui.ScrollPane;
import io.anuke.arc.scene.ui.TextButton;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.util.Log;
import io.anuke.arc.util.Strings;
@@ -183,7 +181,7 @@ public class LoadDialog extends FloatingDialog{
Log.err(e);
state.set(State.menu);
logic.reset();
threads.runGraphics(() -> ui.showError("$text.save.corrupted"));
ui.showError("$text.save.corrupted");
}
});
}
@@ -1,11 +1,11 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.util.Scaling;
import io.anuke.mindustry.entities.Player;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.Core;
import io.anuke.arc.scene.ui.Image;
import io.anuke.arc.scene.ui.layout.Stack;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Scaling;
import io.anuke.mindustry.entities.Player;
import static io.anuke.mindustry.Vars.control;
import static io.anuke.mindustry.Vars.players;
@@ -1,7 +1,16 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.scene.event.Touchable;
import io.anuke.arc.scene.ui.Image;
import io.anuke.arc.scene.ui.ScrollPane;
import io.anuke.arc.scene.ui.TextButton;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.scene.utils.UIUtils;
import io.anuke.arc.util.Log;
import io.anuke.arc.util.Scaling;
import io.anuke.arc.util.Strings;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.io.MapIO;
@@ -9,15 +18,6 @@ import io.anuke.mindustry.maps.Map;
import io.anuke.mindustry.maps.MapMeta;
import io.anuke.mindustry.maps.MapTileData;
import io.anuke.mindustry.ui.BorderImage;
import io.anuke.arc.scene.event.Touchable;
import io.anuke.arc.scene.ui.Image;
import io.anuke.arc.scene.ui.ScrollPane;
import io.anuke.arc.scene.ui.TextButton;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.scene.utils.UIUtils;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.util.Log;
import io.anuke.arc.util.Strings;
import java.io.DataInputStream;
@@ -1,8 +1,8 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.maps.Sector;
import io.anuke.arc.util.Bundles;
public class MissionDialog extends FloatingDialog{
@@ -1,11 +1,11 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Input.Keys;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.net.Net;
import io.anuke.arc.Core;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.scene.style.Drawable;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Bundles;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.net.Net;
import static io.anuke.mindustry.Vars.*;
@@ -22,7 +22,7 @@ public class PausedDialog extends FloatingDialog{
shown(this::rebuild);
keyDown(key -> {
if(key == Keys.ESCAPE || key == Keys.BACK) {
if(key == KeyCode.ESCAPE || key == KeyCode.BACK) {
hide();
}
});
@@ -111,7 +111,7 @@ public class PausedDialog extends FloatingDialog{
control.saves.getCurrent().save();
}catch(Throwable e){
e.printStackTrace();
threads.runGraphics(() -> ui.showError("[accent]" + Core.bundle.get("text.savefail")));
ui.showError("[accent]" + Core.bundle.get("text.savefail"));
}
state.set(State.menu);
});
@@ -1,9 +1,9 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.maps.Sector;
import io.anuke.arc.util.Bundles;
import static io.anuke.mindustry.Vars.*;
@@ -1,10 +1,10 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.scene.ui.TextButton;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.Saves.SaveSlot;
import io.anuke.arc.util.Time;
import io.anuke.arc.scene.ui.TextButton;
import io.anuke.arc.util.Bundles;
import static io.anuke.mindustry.Vars.*;
@@ -26,7 +26,7 @@ public class SaveDialog extends LoadDialog{
ui.showTextInput("$text.save", "$text.save.newslot", "", text -> {
ui.loadGraphics("$text.saving", () -> {
control.saves.addSave(text);
threads.runGraphics(() -> threads.run(() -> threads.runGraphics(this::setup)));
Core.app.post(() -> Core.app.post(this::setup));
});
})
).fillX().margin(10f).minWidth(300f).height(70f).pad(4f).padRight(-4);
@@ -2,14 +2,11 @@ package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.GridPoint2;
import io.anuke.arc.math.Vector2;
import io.anuke.arc.util.Align;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.maps.Sector;
import io.anuke.arc.Graphics;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.math.geom.Geometry;
import io.anuke.arc.math.geom.Point2;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.event.InputEvent;
@@ -18,10 +15,10 @@ import io.anuke.arc.scene.event.Touchable;
import io.anuke.arc.scene.ui.layout.Cell;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.scene.ui.layout.Unit;
import io.anuke.arc.scene.utils.Cursors;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.util.Geometry;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Align;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.maps.Sector;
import static io.anuke.mindustry.Vars.world;
@@ -54,7 +51,7 @@ public class SectorsDialog extends FloatingDialog{
});
Group container = new Group();
container.setTouchable(Touchable.childrenOnly);
container.touchable(Touchable.childrenOnly);
container.addChild(table);
margin(0);
@@ -133,7 +130,7 @@ public class SectorsDialog extends FloatingDialog{
SectorView(){
addListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
public boolean touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){
if(pointer != 0) return false;
//Cursors.setHand();
lastX = x;
@@ -152,9 +149,9 @@ public class SectorsDialog extends FloatingDialog{
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button){
public void touchUp(InputEvent event, float x, float y, int pointer, KeyCode button){
if(pointer != 0) return;
Cursors.restoreCursor();
//Cursors.restoreCursor();
}
});
@@ -183,7 +180,7 @@ public class SectorsDialog extends FloatingDialog{
@Override
public void draw(){
Draw.alpha(alpha);
Draw.alpha(parentAlpha);
int shownSectorsX = (int)(width/sectorSize);
int shownSectorsY = (int)(height/sectorSize);
@@ -191,7 +188,7 @@ public class SectorsDialog extends FloatingDialog{
int offsetX = (int)(panX / sectorSize);
int offsetY = (int)(panY / sectorSize);
Vector2 mouse = Graphics.mouse();
Vector2 mouse = Core.input.mouse();
for(int x = -shownSectorsX; x <= shownSectorsX; x++){
for(int y = -shownSectorsY; y <= shownSectorsY; y++){
@@ -208,10 +205,10 @@ public class SectorsDialog extends FloatingDialog{
Draw.rect("empty-sector", drawX, drawY, sectorSize, sectorSize);
int i = 0;
for(GridPoint2 point : Geometry.d4){
for(Point2 point : Geometry.d4){
Sector other = world.sectors.get(sectorX + point.x, sectorY + point.y);
if(other != null){
Draw.rect("sector-edge", drawX, drawY, sectorSize, sectorSize, i*90);
Draw.rect("sector-edge", drawX, drawY, sectorSize, sectorSize).rot(i*90);
}
i ++;
@@ -220,7 +217,7 @@ public class SectorsDialog extends FloatingDialog{
}
Draw.colorl(!sector.complete ? 0.3f : 1f);
Draw.rect(sector.texture, drawX, drawY, sectorSize, sectorSize);
Draw.rect().tex(sector.texture).center(drawX, drawY, sectorSize, sectorSize);
if(sector.missions.size == 0) continue;
@@ -236,8 +233,8 @@ public class SectorsDialog extends FloatingDialog{
if(sector == selected){
selectColor = Palette.accent;
}else if(Mathf.inRect(mouse.x, mouse.y, drawX - sectorSize / 2f, drawY - sectorSize / 2f,
drawX + sectorSize / 2f, drawY + sectorSize / 2f)){
}else if(mouse.x > drawX - sectorSize / 2f && mouse.y > drawY - sectorSize / 2f
&& mouse.x < drawX + sectorSize / 2f && mouse.y < drawY + sectorSize / 2f){
if(clicked){
selectSector(sector);
}
@@ -1,14 +1,10 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.Core;
import io.anuke.arc.Input.Keys;
import io.anuke.arc.collection.ObjectMap;
import io.anuke.arc.files.FileHandle;
import io.anuke.arc.util.Align;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.net.Net;
import io.anuke.arc.function.Consumer;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.event.InputEvent;
import io.anuke.arc.scene.event.InputListener;
@@ -18,11 +14,11 @@ import io.anuke.arc.scene.ui.SettingsDialog;
import io.anuke.arc.scene.ui.SettingsDialog.SettingsTable.Setting;
import io.anuke.arc.scene.ui.Slider;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.math.Mathf;
import java.util.HashMap;
import java.util.Map;
import io.anuke.arc.util.Align;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.net.Net;
import static io.anuke.mindustry.Vars.*;
@@ -36,7 +32,7 @@ public class SettingsMenuDialog extends SettingsDialog{
private boolean wasPaused;
public SettingsMenuDialog(){
setStyle(Core.skin.get("dialog", WindowStyle.class));
setStyle(Core.scene.skin.get("dialog", WindowStyle.class));
hidden(() -> {
if(!state.is(State.menu)){
@@ -96,7 +92,7 @@ public class SettingsMenuDialog extends SettingsDialog{
ScrollPane pane = new ScrollPane(prefs);
pane.addCaptureListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
public boolean touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){
Element actor = pane.hit(x, y, true);
if(actor instanceof Slider){
pane.setFlickScroll(false);
@@ -107,7 +103,7 @@ public class SettingsMenuDialog extends SettingsDialog{
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button){
public void touchUp(InputEvent event, float x, float y, int pointer, KeyCode button){
pane.setFlickScroll(true);
super.touchUp(event, x, y, pointer, button);
}
@@ -125,7 +121,8 @@ public class SettingsMenuDialog extends SettingsDialog{
}
void addSettings(){
sound.volumePrefs();
//TODO add when sound works again
//sound.volumePrefs();
game.screenshakePref();
game.checkPref("effects", true);
@@ -162,14 +159,14 @@ public class SettingsMenuDialog extends SettingsDialog{
dialog.content().row();
dialog.content().addButton("$text.settings.clearall", () -> {
ui.showConfirm("$text.confirm", "$text.settings.clearall.confirm", () -> {
Map<String, Object> map = new HashMap<>();
for(String value : Core.settings.prefs().get().keySet()){
ObjectMap<String, Object> map = new ObjectMap<>();
for(String value : Core.settings.keys()){
if(value.contains("usid") || value.contains("uuid")){
map.put(value, Core.settings.prefs().getString(value));
map.put(value, Core.settings.getString(value));
}
}
Core.settings.prefs().clear();
Core.settings.prefs().put(map);
Core.settings.clear();
Core.settings.putAll(map);
Core.settings.save();
for(FileHandle file : dataDirectory.list()){
@@ -218,7 +215,7 @@ public class SettingsMenuDialog extends SettingsDialog{
private void visible(int index){
prefs.clearChildren();
Table table = Mathf.select(index, game, graphics, sound);
Table table = new Table[]{game, graphics, sound}[index];
prefs.add(table);
}
@@ -227,7 +224,7 @@ public class SettingsMenuDialog extends SettingsDialog{
buttons().addImageTextButton("$text.menu", "icon-arrow-left", 30f, this::hide).size(230f, 64f);
keyDown(key -> {
if(key == Keys.ESCAPE || key == Keys.BACK)
if(key == KeyCode.ESCAPE || key == KeyCode.BACK)
hide();
});
}
@@ -1,16 +1,14 @@
package io.anuke.mindustry.ui.fragments;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.Fill;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.ui.layout.Unit;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.graphics.Shaders;
import io.anuke.arc.Core;
import io.anuke.arc.Graphics;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.Fill;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.ui.layout.Unit;
import static io.anuke.mindustry.Vars.state;
@@ -20,21 +18,21 @@ public class BackgroundFragment extends Fragment{
public void build(Group parent){
Core.scene.table().addRect((a, b, w, h) -> {
Draw.colorl(0.1f);
Fill.crect(0, 0, w, h);
Fill.rect().set(0, 0, w, h);
Draw.color(Palette.accent);
Graphics.shader(Shaders.menu);
Fill.crect(0, 0, w, h);
Graphics.shader();
Draw.shader(Shaders.menu);
Fill.rect().set(0, 0, w, h);
Draw.shader();
Draw.color();
boolean portrait = Core.graphics.getWidth() < Core.graphics.getHeight();
float logoscl = (int) Unit.dp.scl(7) * (portrait ? 5f / 7f : 1f);
TextureRegion logo = Core.skin.getRegion("logotext");
TextureRegion logo = Core.atlas.find("logotext");
float logow = logo.getWidth() * logoscl;
float logoh = logo.getHeight() * logoscl;
Draw.color();
Core.batch.draw(logo, (int) (w / 2 - logow / 2), (int) (h - logoh + 15 - Unit.dp.scl(portrait ? 30f : 0)), logow, logoh);
Draw.rect().tex(logo).set((int) (w / 2 - logow / 2), (int) (h - logoh + 15 - Unit.dp.scl(portrait ? 30f : 0)), logow, logoh);
}).visible(() -> state.is(State.menu)).grow();
}
}
@@ -2,18 +2,17 @@ package io.anuke.mindustry.ui.fragments;
import io.anuke.arc.Core;
import io.anuke.arc.math.Interpolation;
import io.anuke.arc.math.Vector2;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.actions.Actions;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Align;
import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.input.InputHandler;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.arc.Graphics;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.actions.Actions;
import io.anuke.arc.scene.ui.layout.Table;
import static io.anuke.mindustry.Vars.state;
import static io.anuke.mindustry.Vars.tilesize;
@@ -45,7 +44,7 @@ public class BlockConfigFragment extends Fragment{
configTile = tile;
configBlock = tile.block();
table.setVisible(true);
table.visible(true);
table.clear();
tile.block().buildTable(tile, table);
table.pack();
@@ -65,7 +64,7 @@ public class BlockConfigFragment extends Fragment{
}
table.setOrigin(Align.center);
Vector2 pos = Graphics.screen(tile.drawx(), tile.drawy() - tile.block().size * tilesize / 2f - 1);
Vector2 pos = Core.input.mouseScreen(tile.drawx(), tile.drawy() - tile.block().size * tilesize / 2f - 1);
table.setPosition(pos.x, pos.y, Align.top);
if(configTile == null || configTile.block() == Blocks.air || configTile.block() != configBlock){
hideConfig();
@@ -1,20 +1,19 @@
package io.anuke.mindustry.ui.fragments;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.Vector2;
import io.anuke.arc.util.Align;
import io.anuke.arc.collection.ObjectSet;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Align;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.consumers.Consume;
import io.anuke.arc.Graphics;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.ui.layout.Table;
import static io.anuke.mindustry.Vars.*;
@@ -86,7 +85,7 @@ public class BlockConsumeFragment extends Fragment{
rebuild(block, entity);
}
Vector2 v = Graphics.screen(tile.drawx() - tile.block().size * tilesize / 2f + 0.25f, tile.drawy() + tile.block().size * tilesize / 2f);
Vector2 v = Core.input.mouseScreen(tile.drawx() - tile.block().size * tilesize / 2f + 0.25f, tile.drawy() + tile.block().size * tilesize / 2f);
table.pack();
table.setPosition(v.x, v.y, Align.topRight);
});
@@ -1,21 +1,14 @@
package io.anuke.mindustry.ui.fragments;
import io.anuke.arc.math.Interpolation;
import io.anuke.arc.math.Vector2;
import io.anuke.arc.util.Align;
import io.anuke.arc.util.IntSet;
import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.Annotations.Remote;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.input.InputHandler;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.ui.ItemImage;
import io.anuke.mindustry.world.Tile;
import io.anuke.arc.Graphics;
import io.anuke.arc.util.Time;
import io.anuke.arc.Core;
import io.anuke.arc.collection.IntSet;
import io.anuke.arc.function.BooleanProvider;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.math.Interpolation;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.actions.Actions;
import io.anuke.arc.scene.event.HandCursorListener;
@@ -23,8 +16,16 @@ import io.anuke.arc.scene.event.InputEvent;
import io.anuke.arc.scene.event.InputListener;
import io.anuke.arc.scene.event.Touchable;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Align;
import io.anuke.arc.util.Strings;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.input.InputHandler;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.ui.ItemImage;
import io.anuke.mindustry.world.Tile;
import static io.anuke.mindustry.Vars.*;
@@ -75,7 +76,7 @@ public class BlockInventoryFragment extends Fragment{
table.clear();
table.update(null);
}));
table.setTouchable(Touchable.disabled);
table.touchable(Touchable.disabled);
tile = null;
}
@@ -87,7 +88,7 @@ public class BlockInventoryFragment extends Fragment{
table.clearChildren();
table.background("inventory");
table.setTouchable(Touchable.enabled);
table.touchable(Touchable.enabled);
table.update(() -> {
if(state.is(State.menu) || tile == null || tile.entity == null || !tile.block().isAccessible() || tile.entity.items.total() == 0){
hide();
@@ -144,7 +145,7 @@ public class BlockInventoryFragment extends Fragment{
image.addListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
public boolean touchDown(InputEvent event, float x, float y, int pointer, KeyCode button){
if(!canPick.get() || !tile.entity.items.has(item)) return false;
int amount = Math.min(1, player.inventory.itemCapacityUsed(item));
Call.requestItem(player, tile, item, amount);
@@ -155,7 +156,7 @@ public class BlockInventoryFragment extends Fragment{
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button){
public void touchUp(InputEvent event, float x, float y, int pointer, KeyCode button){
holding = false;
lastItem = null;
}
@@ -190,7 +191,7 @@ public class BlockInventoryFragment extends Fragment{
}
private void updateTablePosition(){
Vector2 v = Graphics.screen(tile.drawx() + tile.block().size * tilesize / 2f, tile.drawy() + tile.block().size * tilesize / 2f);
Vector2 v = Core.input.mouseScreen(tile.drawx() + tile.block().size * tilesize / 2f, tile.drawy() + tile.block().size * tilesize / 2f);
table.pack();
table.setPosition(v.x, v.y, Align.topLeft);
}
@@ -1,19 +1,14 @@
package io.anuke.mindustry.ui.fragments;
import io.anuke.arc.Core;
import io.anuke.arc.Input.Keys;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.Batch;
import io.anuke.arc.graphics.g2d.BitmapFont;
import io.anuke.arc.graphics.g2d.GlyphLayout;
import io.anuke.arc.util.Align;
import io.anuke.arc.collection.Array;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.net.Net;
import io.anuke.arc.Inputs;
import io.anuke.arc.util.Time;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.BitmapFont;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.Fill;
import io.anuke.arc.graphics.g2d.GlyphLayout;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.ui.Dialog;
import io.anuke.arc.scene.ui.Label;
@@ -21,11 +16,17 @@ import io.anuke.arc.scene.ui.Label.LabelStyle;
import io.anuke.arc.scene.ui.TextField;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.scene.ui.layout.Unit;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Align;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.input.Binding;
import io.anuke.mindustry.net.Net;
import static io.anuke.arc.Core.input;
import static io.anuke.arc.Core.scene;
import static io.anuke.mindustry.Vars.*;
import static io.anuke.arc.core.Core.scene;
import static io.anuke.arc.core.Core.skin;
public class ChatFragment extends Table{
private final static int messagesShown = 10;
@@ -54,7 +55,7 @@ public class ChatFragment extends Table{
super();
setFillParent(true);
font = Core.skin.getFont("default-font");
font = scene.skin.getFont("default-font");
visible(() -> {
if(!Net.active() && messages.size > 0){
@@ -70,21 +71,21 @@ public class ChatFragment extends Table{
update(() -> {
if(Net.active() && Core.input.keyTap("chat")){
if(Net.active() && input.keyTap(Binding.chat)){
toggle();
}
if(chatOpen){
if(Core.input.keyTap("chat_history_prev") && historyPos < history.size - 1){
if(input.keyTap(Binding.chat_history_prev) && historyPos < history.size - 1){
if(historyPos == 0) history.set(0, chatfield.getText());
historyPos++;
updateChat();
}
if(Core.input.keyTap("chat_history_next") && historyPos > 0){
if(input.keyTap(Binding.chat_history_next) && historyPos > 0){
historyPos--;
updateChat();
}
scrollPos = (int) Mathf.clamp(scrollPos + Core.input.getAxis("chat_scroll"), 0, Math.max(0, messages.size - messagesShown));
scrollPos = (int) Mathf.clamp(scrollPos + input.axis(Binding.chat_scroll), 0, Math.max(0, messages.size - messagesShown));
}
});
@@ -107,10 +108,10 @@ public class ChatFragment extends Table{
fieldlabel.getStyle().font = font;
fieldlabel.setStyle(fieldlabel.getStyle());
chatfield = new TextField("", new TextField.TextFieldStyle(skin.get(TextField.TextFieldStyle.class)));
chatfield = new TextField("", new TextField.TextFieldStyle(scene.skin.get(TextField.TextFieldStyle.class)));
chatfield.setTextFieldFilter((field, c) -> field.getText().length() < Vars.maxTextLength);
chatfield.getStyle().background = null;
chatfield.getStyle().font = skin.getFont("default-font-chat");
chatfield.getStyle().font = scene.skin.getFont("default-font-chat");
chatfield.getStyle().fontColor = Color.WHITE;
chatfield.setStyle(chatfield.getStyle());
@@ -122,7 +123,7 @@ public class ChatFragment extends Table{
dialog.content().defaults().height(65f);
TextField to = dialog.content().addField("", t-> {}).pad(15).width(250f).get();
to.setMaxLength(maxTextLength);
to.keyDown(Keys.ENTER, () -> dialog.content().find("okb").fireClick());
to.keyDown(KeyCode.ENTER, () -> dialog.content().find("okb").fireClick());
dialog.content().addButton("$text.ok", () -> {
chatfield.clearText();
chatfield.appendText(to.getText());
@@ -152,22 +153,22 @@ public class ChatFragment extends Table{
}
@Override
public void draw(Batch batch, float alpha){
public void draw(){
batch.setColor(shadowColor);
Draw.color(shadowColor);
if(chatOpen){
batch.draw(skin.getRegion("white"), offsetx, chatfield.getY(), chatfield.getWidth() + 15f, chatfield.getHeight() - 1);
Fill.rect().set(offsetx, chatfield.getY(), chatfield.getWidth() + 15f, chatfield.getHeight() - 1);
}
super.draw(batch, alpha);
super.draw();
float spacing = chatspace;
chatfield.setVisible(chatOpen);
fieldlabel.setVisible(chatOpen);
chatfield.visible(chatOpen);
fieldlabel.visible(chatOpen);
batch.setColor(shadowColor);
Draw.color(shadowColor);
float theight = offsety + spacing + getMarginBottom();
for(int i = scrollPos; i < messages.size && i < messagesShown + scrollPos && (i < fadetime || chatOpen); i++){
@@ -181,16 +182,16 @@ public class ChatFragment extends Table{
if(!chatOpen && fadetime - i < 1f && fadetime - i >= 0f){
font.getCache().setAlphas(fadetime - i);
batch.setColor(0, 0, 0, shadowColor.a * (fadetime - i));
Draw.color(0, 0, 0, shadowColor.a * (fadetime - i));
}
batch.draw(skin.getRegion("white"), offsetx, theight - layout.height - 2, textWidth + Unit.dp.scl(4f), layout.height + textspacing);
batch.setColor(shadowColor);
Fill.rect().set(offsetx, theight - layout.height - 2, textWidth + Unit.dp.scl(4f), layout.height + textspacing);
Draw.color(shadowColor);
font.getCache().draw(batch);
font.getCache().draw();
}
batch.setColor(Color.WHITE);
Draw.color();
if(fadetime > 0 && !chatOpen)
fadetime -= Time.delta() / 180f;
@@ -1,25 +1,12 @@
package io.anuke.mindustry.ui.fragments;
import io.anuke.arc.Core;
import io.anuke.arc.Events;
import io.anuke.arc.collection.Array;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.math.Interpolation;
import io.anuke.arc.util.Align;
import io.anuke.arc.collection.Array;
import io.anuke.arc.util.Scaling;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.EventType.StateChangeEvent;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.net.Packets.AdminAction;
import io.anuke.mindustry.type.Recipe;
import io.anuke.mindustry.ui.IntFormat;
import io.anuke.mindustry.ui.Minimap;
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
import io.anuke.arc.*;
import io.anuke.arc.graphics.Hue;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.scene.Element;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.actions.Actions;
@@ -31,8 +18,21 @@ import io.anuke.arc.scene.ui.TextButton;
import io.anuke.arc.scene.ui.layout.Stack;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.scene.ui.layout.Unit;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.Align;
import io.anuke.arc.util.Scaling;
import io.anuke.arc.util.Time;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.game.EventType.StateChangeEvent;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.input.Binding;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.net.Packets.AdminAction;
import io.anuke.mindustry.type.Recipe;
import io.anuke.mindustry.ui.IntFormat;
import io.anuke.mindustry.ui.Minimap;
import io.anuke.mindustry.ui.dialogs.FloatingDialog;
import static io.anuke.mindustry.Vars.*;
@@ -75,10 +75,10 @@ public class HudFragment extends Fragment{
}
}).update(i -> {
if(Net.active()){
i.getStyle().imageUp = Core.skin.getDrawable("icon-players");
i.getStyle().imageUp = Core.scene.skin.getDrawable("icon-players");
}else{
i.setDisabled(Net.active());
i.getStyle().imageUp = Core.skin.getDrawable(state.is(State.paused) ? "icon-play" : "icon-pause");
i.getStyle().imageUp = Core.scene.skin.getDrawable(state.is(State.paused) ? "icon-play" : "icon-pause");
}
}).get();
@@ -94,9 +94,9 @@ public class HudFragment extends Fragment{
}
}).update(i -> {
if(Net.active() && mobile){
i.getStyle().imageUp = Core.skin.getDrawable("icon-chat");
i.getStyle().imageUp = Core.scene.skin.getDrawable("icon-chat");
}else{
i.getStyle().imageUp = Core.skin.getDrawable("icon-unlocks");
i.getStyle().imageUp = Core.scene.skin.getDrawable("icon-unlocks");
}
}).get();
@@ -109,7 +109,7 @@ public class HudFragment extends Fragment{
}
cont.update(() -> {
if(!Core.input.keyDown("gridMode") && Core.input.keyTap("toggle_menus") && !ui.chatfrag.chatOpen()){
if(!Core.input.keyDown(Binding.gridMode) && Core.input.keyTap(Binding.toggle_menus) && !ui.chatfrag.chatOpen()){
toggleMenus();
}
});
@@ -198,7 +198,7 @@ public class HudFragment extends Fragment{
return coreAttackOpacity > 0;
});
t.table("button", top -> top.add("$text.coreattack").pad(2)
.update(label -> label.setColor(Hue.mix(Color.ORANGE, Color.SCARLET, Mathf.absin(Time.time(), 2f, 1f)))));
.update(label -> label.getColor().set(Color.ORANGE).lerp(Color.SCARLET, Mathf.absin(Time.time(), 2f, 1f))));
});
//'saving' indicator
@@ -207,7 +207,7 @@ public class HudFragment extends Fragment{
t.add("$text.saveload");
});
blockfrag.build(Core.scene.getRoot());
blockfrag.build(Core.scene.root);
}
public void showToast(String text){
@@ -345,7 +345,7 @@ public class HudFragment extends Fragment{
Interpolation in = Interpolation.pow3Out;
if(flip != null){
flip.getStyle().imageUp = Core.skin.getDrawable(shown ? "icon-arrow-down" : "icon-arrow-up");
flip.getStyle().imageUp = Core.scene.skin.getDrawable(shown ? "icon-arrow-down" : "icon-arrow-up");
}
if(shown){
@@ -368,7 +368,7 @@ public class HudFragment extends Fragment{
IntFormat enemiesf = new IntFormat("text.wave.enemies");
table.clearChildren();
table.setTouchable(Touchable.enabled);
table.touchable(Touchable.enabled);
table.labelWrap(() ->
world.getSector() == null ?
@@ -403,8 +403,8 @@ public class HudFragment extends Fragment{
boolean vis = state.mode.disableWaveTimer && ((Net.server() || players[0].isAdmin) || !Net.active());
boolean paused = state.is(State.paused) || !vis;
l.getStyle().imageUp = Core.skin.getDrawable(vis ? "icon-play" : "clear");
l.setTouchable(!paused ? Touchable.enabled : Touchable.disabled);
l.getStyle().imageUp = Core.scene.skin.getDrawable(vis ? "icon-play" : "clear");
l.touchable(!paused ? Touchable.enabled : Touchable.disabled);
}).visible(() -> state.mode.disableWaveTimer && ((Net.server() || players[0].isAdmin) || !Net.active()) && unitGroups[Team.red.ordinal()].size() == 0);
}
}
@@ -14,8 +14,8 @@ public class LoadingFragment extends Fragment{
@Override
public void build(Group parent){
parent.fill("loadDim", t -> {
t.setVisible(false);
t.setTouchable(Touchable.enabled);
t.visible(false);
t.touchable(Touchable.enabled);
t.add().height(70f).row();
t.addImage("white").growX().height(3f).pad(4f).growX().get().setColor(Palette.accent);
@@ -31,8 +31,8 @@ public class LoadingFragment extends Fragment{
}
public void setButton(Runnable listener){
button.setVisible(true);
button.getListeners().removeIndex(button.getListeners().size - 1);
button.visible(true);
button.getListeners().removeAt(button.getListeners().size - 1);
button.clicked(listener);
}
@@ -42,12 +42,12 @@ public class LoadingFragment extends Fragment{
public void show(String text){
table.<Label>find("namelabel").setText(text);
table.setVisible(true);
table.visible(true);
table.toFront();
}
public void hide(){
table.setVisible(false);
button.setVisible(false);
table.visible(false);
button.visible(false);
}
}
@@ -12,11 +12,8 @@ public class OverlayFragment extends Fragment{
public final BlockConsumeFragment consume;
private Group group = new Group();
private InputHandler input;
public OverlayFragment(InputHandler input){
this.input = input;
inv = new BlockInventoryFragment(input);
config = new BlockConfigFragment(input);
consume = new BlockConsumeFragment();
@@ -1,13 +1,24 @@
package io.anuke.mindustry.ui.fragments;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.math.Interpolation;
import io.anuke.arc.math.Vector2;
import io.anuke.arc.Core;
import io.anuke.arc.Events;
import io.anuke.arc.collection.Array;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.input.KeyCode;
import io.anuke.arc.math.Interpolation;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.actions.Actions;
import io.anuke.arc.scene.event.Touchable;
import io.anuke.arc.scene.ui.ButtonGroup;
import io.anuke.arc.scene.ui.Image;
import io.anuke.arc.scene.ui.ImageButton;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.game.EventType.WorldLoadGraphicsEvent;
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.input.Binding;
import io.anuke.mindustry.input.InputHandler;
import io.anuke.mindustry.type.Category;
import io.anuke.mindustry.type.ItemStack;
@@ -16,18 +27,6 @@ import io.anuke.mindustry.ui.ImageStack;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.OreBlock;
import io.anuke.arc.Events;
import io.anuke.arc.Graphics;
import io.anuke.arc.Inputs;
import io.anuke.arc.input.Input;
import io.anuke.arc.scene.Group;
import io.anuke.arc.scene.actions.Actions;
import io.anuke.arc.scene.event.Touchable;
import io.anuke.arc.scene.ui.ButtonGroup;
import io.anuke.arc.scene.ui.Image;
import io.anuke.arc.scene.ui.ImageButton;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.Bundles;
import static io.anuke.mindustry.Vars.*;
@@ -42,20 +41,20 @@ public class PlacementFragment extends Fragment{
boolean lastGround;
//TODO make this configurable
final Input[] inputGrid = {
Input.NUM_1, Input.NUM_2, Input.NUM_3, Input.NUM_4,
Input.Q, Input.W, Input.E, Input.R,
Input.A, Input.S, Input.D, Input.F,
Input.Z, Input.X, Input.C, Input.V
final KeyCode[] inputGrid = {
KeyCode.NUM_1, KeyCode.NUM_2, KeyCode.NUM_3, KeyCode.NUM_4,
KeyCode.Q, KeyCode.W, KeyCode.E, KeyCode.R,
KeyCode.A, KeyCode.S, KeyCode.D, KeyCode.F,
KeyCode.Z, KeyCode.X, KeyCode.C, KeyCode.V
}, inputCatGrid = {
Input.NUM_1, Input.NUM_2,
Input.Q, Input.W,
Input.A, Input.S,
Input.Z, Input.X, Input.C, Input.V
KeyCode.NUM_1, KeyCode.NUM_2,
KeyCode.Q, KeyCode.W,
KeyCode.A, KeyCode.S,
KeyCode.Z, KeyCode.X, KeyCode.C, KeyCode.V
};
public PlacementFragment(){
Events.on(WorldLoadGraphicsEvent.class, event -> {
Events.on(WorldLoadEvent.class, event -> {
currentCategory = Category.turret;
Group group = toggler.getParent();
toggler.remove();
@@ -64,10 +63,10 @@ public class PlacementFragment extends Fragment{
}
boolean gridUpdate(InputHandler input){
if(!Core.input.keyDown("gridMode") || ui.chatfrag.chatOpen()) return false;
if(Core.input.keyDown("gridModeShift")){ //select category
if(!Core.input.keyDown(Binding.gridMode) || ui.chatfrag.chatOpen()) return false;
if(Core.input.keyDown(Binding.gridModeShift)){ //select category
int i = 0;
for(Input key : inputCatGrid){
for(KeyCode key : inputCatGrid){
if(Core.input.keyDown(key)){
input.recipe = Recipe.getByCategory(Category.values()[i]).first();
currentCategory = input.recipe.category;
@@ -75,7 +74,7 @@ public class PlacementFragment extends Fragment{
i++;
}
return true;
}else if(Core.input.keyDown("select")){ //mouse eyedropper select
}else if(Core.input.keyDown(Binding.select)){ //mouse eyedropper select
Tile tile = world.tileWorld(Core.input.mouseWorld().x, Core.input.mouseWorld().y);
if(tile != null){
@@ -90,7 +89,7 @@ public class PlacementFragment extends Fragment{
}else{ //select block
int i = 0;
Array<Recipe> recipes = Recipe.getByCategory(currentCategory);
for(Input key : inputGrid){
for(KeyCode key : inputGrid){
if(Core.input.keyDown(key))
input.recipe = (i < recipes.size && control.unlocks.isUnlocked(recipes.get(i))) ? recipes.get(i) : null;
i++;
@@ -254,7 +253,7 @@ public class PlacementFragment extends Fragment{
Block getSelected(){
Block toDisplay = null;
Vector2 v = topTable.stageToLocalCoordinates(Graphics.mouse());
Vector2 v = topTable.stageToLocalCoordinates(Core.input.mouse());
//setup hovering tile
if(!Core.scene.hasMouse() && topTable.hit(v.x, v.y, false) == null){
@@ -1,14 +1,13 @@
package io.anuke.mindustry.ui.fragments;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.g2d.Batch;
import io.anuke.arc.util.Interval;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.net.NetConnection;
import io.anuke.mindustry.net.Packets.AdminAction;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.Lines;
import io.anuke.arc.scene.Group;
@@ -16,7 +15,6 @@ import io.anuke.arc.scene.event.Touchable;
import io.anuke.arc.scene.ui.Image;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.scene.ui.layout.Unit;
import io.anuke.arc.util.Bundles;
import io.anuke.arc.util.Timer;
import static io.anuke.mindustry.Vars.*;
@@ -24,7 +22,7 @@ import static io.anuke.mindustry.Vars.*;
public class PlayerListFragment extends Fragment{
private boolean visible = false;
private Table content = new Table().marginRight(13f).marginLeft(13f);
private Timer timer = new Timer();
private Interval timer = new Interval();
@Override
public void build(Group parent){
@@ -83,8 +81,8 @@ public class PlayerListFragment extends Fragment{
Table table = new Table(){
@Override
public void draw(Batch batch, float parentAlpha){
super.draw(batch, parentAlpha);
public void draw(){
super.draw();
Draw.color(Palette.accent);
Draw.alpha(parentAlpha);
Lines.stroke(Unit.dp.scl(3f));