Merge branch 'master' of https://github.com/Anuken/Mindustry into 4.0

This commit is contained in:
Anuken
2018-03-23 22:48:51 -04:00
24 changed files with 1535 additions and 244 deletions

View File

@@ -2,7 +2,6 @@ package io.anuke.mindustry.ui.dialogs;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.ui.Links;
import io.anuke.mindustry.ui.Links.LinkEntry;
import io.anuke.ucore.core.Core;
@@ -10,6 +9,8 @@ import io.anuke.ucore.core.Timers;
import io.anuke.ucore.scene.ui.ScrollPane;
import io.anuke.ucore.scene.ui.layout.Table;
import static io.anuke.mindustry.Vars.ui;
public class AboutDialog extends FloatingDialog {
public AboutDialog(){
@@ -45,7 +46,7 @@ public class AboutDialog extends FloatingDialog {
table.addImageButton("icon-link", 14*3, () -> {
if(!Gdx.net.openURI(link.link)){
Vars.ui.showError("$text.linkfail");
ui.showError("$text.linkfail");
Gdx.app.getClipboard().setContents(link.link);
}
}).size(h-5, h);
@@ -58,6 +59,7 @@ public class AboutDialog extends FloatingDialog {
content().add(pane).growX();
buttons().addButton("$text.credits", this::showCredits).size(200f, 64f);
buttons().addButton("$text.changelog.title", ui.changelog::show).size(200f, 64f);
}
private void showCredits(){

View File

@@ -1,6 +1,7 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.net.Administration.PlayerInfo;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.net.NetConnection;
import io.anuke.mindustry.net.NetEvents;
@@ -36,15 +37,15 @@ public class AdminsDialog extends FloatingDialog {
table.add("$text.server.admins.none");
}
for(String ip : netServer.admins.getAdmins()){
for(PlayerInfo info : netServer.admins.getAdmins()){
Table res = new Table("button");
res.margin(14f);
res.labelWrap("[LIGHT_GRAY]" + netServer.admins.getLastName(ip)).width(w - h - 24f);
res.labelWrap("[LIGHT_GRAY]" + info.lastName).width(w - h - 24f);
res.add().growX();
res.addImageButton("icon-cancel", 14*3, () -> {
ui.showConfirm("$text.confirm", "$text.confirmunadmin", () -> {
netServer.admins.unAdminPlayer(ip);
netServer.admins.unAdminPlayer(info.id);
for(Player player : playerGroup.all()){
NetConnection c = Net.getConnection(player.clientid);
if(c != null){

View File

@@ -1,5 +1,6 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.mindustry.net.Administration.PlayerInfo;
import io.anuke.ucore.scene.ui.ScrollPane;
import io.anuke.ucore.scene.ui.layout.Table;
@@ -33,15 +34,15 @@ public class BansDialog extends FloatingDialog {
table.add("$text.server.bans.none");
}
for(String ip : netServer.admins.getBanned()){
for(PlayerInfo info : netServer.admins.getBanned()){
Table res = new Table("button");
res.margin(14f);
res.labelWrap("IP: [LIGHT_GRAY]" + ip + "\n[]Name: [LIGHT_GRAY]" + netServer.admins.getLastName(ip)).width(w - h - 24f);
res.labelWrap("IP: [LIGHT_GRAY]" + info.lastIP + "\n[]Name: [LIGHT_GRAY]" + info.lastName).width(w - h - 24f);
res.add().growX();
res.addImageButton("icon-cancel", 14*3, () -> {
ui.showConfirm("$text.confirm", "$text.confirmunban", () -> {
netServer.admins.unbanPlayerIP(ip);
netServer.admins.unbanPlayerID(info.id);
setup();
});
}).size(h).pad(-14f);

View File

@@ -31,7 +31,7 @@ public class BackgroundFragment implements Fragment {
float logoh = logo.getRegionHeight()*logoscl;
Draw.color();
Core.batch.draw(logo, w/2 - logow/2, h - logoh + 15 - Unit.dp.scl(portrait ? 30f : 30), logow, logoh);
Core.batch.draw(logo, w/2 - logow/2, h - logoh + 15 - Unit.dp.scl(portrait ? 30f : 0), logow, logoh);
}).visible(() -> state.is(State.menu)).grow();
}
}

View File

@@ -20,6 +20,7 @@ import io.anuke.ucore.scene.ui.TextField;
import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.scene.ui.layout.Unit;
import io.anuke.ucore.util.Log;
import java.util.Arrays;
import static io.anuke.mindustry.Vars.state;
import static io.anuke.ucore.core.Core.scene;
@@ -39,6 +40,8 @@ public class ChatFragment extends Table implements Fragment{
private float textWidth = Unit.dp.scl(600);
private Color shadowColor = new Color(0, 0, 0, 0.4f);
private float textspacing = Unit.dp.scl(10);
private Array<String> history = new Array<String>();
private int historyPos = 0;
public ChatFragment(){
super();
@@ -57,8 +60,21 @@ public class ChatFragment extends Table implements Fragment{
if(Net.active() && Inputs.keyTap("chat")){
toggle();
}
if (chatOpen) {
if (Inputs.keyTap("chat_scroll_up") && historyPos < history.size - 1) {
if (historyPos == 0) history.set(0, chatfield.getText());
historyPos++;
updateChat();
}
if (Inputs.keyTap("chat_scroll_down") && historyPos > 0) {
historyPos--;
updateChat();
}
}
});
history.insert(0, "");
setup();
}
@@ -69,6 +85,8 @@ public class ChatFragment extends Table implements Fragment{
public void clearMessages(){
messages.clear();
history.clear();
history.insert(0, "");
}
private void setup(){
@@ -144,7 +162,8 @@ public class ChatFragment extends Table implements Fragment{
private void sendMessage(){
String message = chatfield.getText();
chatfield.clearText();
clearChatInput();
history.insert(1, message);
if(message.replaceAll(" ", "").isEmpty()) return;
@@ -170,6 +189,17 @@ public class ChatFragment extends Table implements Fragment{
public void hide(){
scene.setKeyboardFocus(null);
chatOpen = false;
clearChatInput();
}
public void updateChat() {
chatfield.setText(history.get(historyPos));
chatfield.setCursorPosition(chatfield.getText().length());
}
public void clearChatInput() {
historyPos = 0;
history.set(0, "");
chatfield.setText("");
}

View File

@@ -128,7 +128,7 @@ public class PlayerListFragment implements Fragment{
ui.showConfirm("$text.confirm", "$text.confirmban", () -> {
if(Net.server()) {
netServer.admins.banPlayerIP(connection.address);
Net.kickConnection(player.clientid, KickReason.banned);
netServer.kick(player.clientid, KickReason.banned);
}else{
NetEvents.handleAdministerRequest(player, AdminAction.ban);
}
@@ -137,7 +137,7 @@ public class PlayerListFragment implements Fragment{
t.addImageButton("icon-cancel", 14*2, () -> {
if(Net.server()) {
Net.kickConnection(player.clientid, KickReason.kick);
netServer.kick(player.clientid, KickReason.kick);
}else{
NetEvents.handleAdministerRequest(player, AdminAction.kick);
}
@@ -148,14 +148,16 @@ public class PlayerListFragment implements Fragment{
t.addImageButton("icon-admin", "toggle", 14*2, () -> {
if(Net.client()) return;
if(netServer.admins.isAdmin(connection.address)){
String id = netServer.admins.getTrace(connection.address).uuid;
if(netServer.admins.isAdmin(id, connection.address)){
ui.showConfirm("$text.confirm", "$text.confirmunadmin", () -> {
netServer.admins.unAdminPlayer(connection.address);
netServer.admins.unAdminPlayer(id);
NetEvents.handleAdminSet(player, false);
});
}else{
ui.showConfirm("$text.confirm", "$text.confirmadmin", () -> {
netServer.admins.adminPlayer(connection.address);
netServer.admins.adminPlayer(id, connection.address);
NetEvents.handleAdminSet(player, true);
});
}