Implemented full multiplayer; block syncing still unfinished

This commit is contained in:
Anuken
2017-12-31 19:56:40 -05:00
parent b6845d5d10
commit 701c7f6e78
27 changed files with 688 additions and 134 deletions

View File

@@ -1,13 +1,10 @@
package io.anuke.mindustry.ui;
import static io.anuke.mindustry.Vars.ui;
import com.badlogic.gdx.utils.reflect.ClassReflection;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.net.Net;
import io.anuke.ucore.UCore;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.scene.Element;
import io.anuke.ucore.scene.builders.build;
@@ -19,20 +16,22 @@ import io.anuke.ucore.util.Strings;
import java.io.IOException;
import static io.anuke.mindustry.Vars.ui;
public class MenuDialog extends FloatingDialog{
private SaveDialog save = new SaveDialog();
private LoadDialog load = new LoadDialog();
public boolean wasPaused = false;
public MenuDialog() {
super("Paused");
super("$text.menu");
setup();
}
void setup(){
shown(() -> {
wasPaused = GameState.is(State.paused);
GameState.set(State.paused);
if(!Net.active()) GameState.set(State.paused);
});
if(!Vars.android){
@@ -40,7 +39,7 @@ public class MenuDialog extends FloatingDialog{
content().addButton("$text.back", () -> {
hide();
if(!wasPaused)
if(!wasPaused || Net.active())
GameState.set(State.playing);
});
@@ -71,6 +70,7 @@ public class MenuDialog extends FloatingDialog{
}else{
try{
Net.host(result);
GameState.set(State.playing);
}catch (IOException e){
Vars.ui.showError(Bundles.format("text.server.error", Strings.parseException(e, false)));
}

View File

@@ -1,34 +1,26 @@
package io.anuke.mindustry.ui.fragments;
import static io.anuke.mindustry.Vars.*;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Interpolation;
import io.anuke.mindustry.Mindustry;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.resource.Item;
import io.anuke.mindustry.world.GameMode;
import io.anuke.ucore.UCore;
import io.anuke.mindustry.net.Net;
import io.anuke.ucore.core.Core;
import io.anuke.ucore.core.Draw;
import io.anuke.ucore.core.Settings;
import io.anuke.ucore.scene.actions.Actions;
import io.anuke.ucore.scene.builders.imagebutton;
import io.anuke.ucore.scene.builders.label;
import io.anuke.ucore.scene.builders.table;
import io.anuke.ucore.scene.event.Touchable;
import io.anuke.ucore.scene.ui.Image;
import io.anuke.ucore.scene.ui.ImageButton;
import io.anuke.ucore.scene.ui.Label;
import io.anuke.ucore.scene.ui.layout.Cell;
import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.util.Bundles;
import static io.anuke.mindustry.Vars.*;
public class HudFragment implements Fragment{
private ImageButton menu, flip, pause;
private Table respawntable;
@@ -74,7 +66,8 @@ public class HudFragment implements Fragment{
pause = new imagebutton("icon-pause", isize, ()->{
GameState.set(GameState.is(State.paused) ? State.playing : State.paused);
}).update(i -> i.getStyle().imageUp = Core.skin.getDrawable(GameState.is(State.paused) ? "icon-play" : "icon-pause")).get();
}).update(i -> i.getStyle().imageUp = Core.skin.getDrawable(GameState.is(State.paused) ? "icon-play" : "icon-pause")).cell
.disabled(b -> Net.active()).get();
}}.end();
@@ -105,7 +98,7 @@ public class HudFragment implements Fragment{
//paused table
new table(){{
visible(()->GameState.is(State.paused));
visible(()->GameState.is(State.paused) && !Net.active());
atop();
new table("pane"){{