Merge branch 'continuous-servers' of https://github.com/Anuken/Mindustry

This commit is contained in:
Anuken
2018-08-21 18:56:32 -04:00
9 changed files with 116 additions and 56 deletions

View File

@@ -66,8 +66,6 @@ public class Logic extends Module{
}
}
Events.fire(PlayEvent.class);
}

View File

@@ -80,18 +80,8 @@ public class NetClient extends Module{
player.isAdmin = false;
Net.setClientLoaded(false);
removed.clear();
timeoutTime = 0f;
connecting = true;
quiet = false;
lastSent = 0;
lastSnapshotBase = null;
currentSnapshot = null;
currentSnapshotID = -1;
lastSnapshotBaseID = -1;
reset();
ui.chatfrag.clearMessages();
ui.loadfrag.hide();
ui.loadfrag.show("$text.connecting.data");
@@ -102,8 +92,6 @@ public class NetClient extends Module{
Net.disconnect();
});
Entities.clear();
ConnectPacket c = new ConnectPacket();
c.name = player.name;
c.mobile = mobile;
@@ -161,6 +149,29 @@ public class NetClient extends Module{
ui.loadfrag.hide();
}
@Remote(variants = Variant.both)
public static void onInfoMessage(String message){
threads.runGraphics(() -> ui.showText("", message));
}
@Remote(variants = Variant.both)
public static void onWorldDataBegin(){
Entities.clear();
ui.chatfrag.clearMessages();
Net.setClientLoaded(false);
threads.runGraphics(() -> {
ui.loadfrag.show("$text.connecting.data");
ui.loadfrag.setButton(() -> {
ui.loadfrag.hide();
netClient.connecting = false;
netClient.quiet = true;
Net.disconnect();
});
});
}
@Remote(variants = Variant.one)
public static void onPositionSet(float x, float y){
players[0].x = x;
@@ -285,7 +296,6 @@ public class NetClient extends Module{
//go through each entity
for(int j = 0; j < amount; j++){
int position = netClient.byteStream.position(); //save position to check read/write correctness
int id = input.readInt();
byte typeID = input.readByte();
@@ -304,11 +314,6 @@ public class NetClient extends Module{
//read the entity
entity.read(input, timestamp);
byte readLength = input.readByte();
//if(netClient.byteStream.position() - position - 1 != readLength){
// throw new RuntimeException("Error reading entity of type '" + group.getType() + "': Read length mismatch [write=" + readLength + ", read=" + (netClient.byteStream.position() - position - 1) + "]");
//}
if(add){
entity.add();
netClient.addRemovedEntity(entity.getID());
@@ -352,6 +357,22 @@ public class NetClient extends Module{
Timers.runTask(40f, Platform.instance::updateRPC);
}
private void reset(){
Net.setClientLoaded(false);
removed.clear();
timeoutTime = 0f;
connecting = true;
quiet = false;
lastSent = 0;
lastSnapshotBase = null;
currentSnapshot = null;
currentSnapshotID = -1;
lastSnapshotBaseID = -1;
Entities.clear();
ui.chatfrag.clearMessages();
}
public void beginConnecting(){
connecting = true;
}

View File

@@ -190,15 +190,7 @@ public class NetServer extends Module{
trace.playerid = player.id;
//TODO try DeflaterOutputStream
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DeflaterOutputStream def = new DeflaterOutputStream(stream);
NetworkIO.writeWorld(player, def);
WorldStream data = new WorldStream();
data.stream = new ByteArrayInputStream(stream.toByteArray());
Net.sendStream(id, data);
Log.info("Packed {0} uncompressed bytes of WORLD data.", stream.size());
sendWorldData(player, id);
Platform.instance.updateRPC();
});
@@ -317,6 +309,17 @@ public class NetServer extends Module{
}
}
public void sendWorldData(Player player, int clientID){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DeflaterOutputStream def = new DeflaterOutputStream(stream);
NetworkIO.writeWorld(player, def);
WorldStream data = new WorldStream();
data.stream = new ByteArrayInputStream(stream.toByteArray());
Net.sendStream(clientID, data);
Log.info("Packed {0} compressed bytes of world data.", stream.size());
}
public static void onDisconnect(Player player){
if(player.con.hasConnected){
Call.sendMessage("[accent]" + player.name + "[accent] has disconnected.");
@@ -483,7 +486,6 @@ public class NetServer extends Module{
int length = syncStream.position() - position; //length must always be less than 127 bytes
if(length > 127)
throw new RuntimeException("Write size for entity of type " + group.getType() + " must not exceed 127!");
dataStream.writeByte(length);
}
}
}

View File

@@ -664,7 +664,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
dead = true;
trail.clear();
health = maxHealth();
mech = (mobile ? Mechs.starterMobile : Mechs.starterDesktop);
mech = (isMobile ? Mechs.starterMobile : Mechs.starterDesktop);
placeQueue.clear();
add();

View File

@@ -320,7 +320,7 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
if(target != null) behavior();
if(!isWave){
if(!isWave && !isFlying()){
x = Mathf.clamp(x, 0, world.width() * tilesize);
y = Mathf.clamp(y, 0, world.height() * tilesize);
}

View File

@@ -118,6 +118,8 @@ public class NetworkIO{
i += consecutives;
}
stream.write(Team.all.length);
//write team data
for(Team team : Team.all){
TeamData data = state.teams.get(team);

View File

@@ -14,7 +14,7 @@ public class ItemImage extends Stack{
public ItemImage(TextureRegion region, Supplier<CharSequence> text){
Table t = new Table().left().bottom();
t.label(text).color(Color.DARK_GRAY).padBottom(-22).get().setFontScale(Unit.dp.scl(0.5f));
t.label(text).color(Color.DARK_GRAY).padBottom(-21).get().setFontScale(Unit.dp.scl(0.5f));
t.row();
t.label(text).get().setFontScale(Unit.dp.scl(0.5f));
@@ -25,7 +25,7 @@ public class ItemImage extends Stack{
public ItemImage(ItemStack stack){
Table t = new Table().left().bottom();
t.add(stack.amount + "").color(Color.DARK_GRAY).padBottom(-22).get().setFontScale(Unit.dp.scl(0.5f));
t.add(stack.amount + "").color(Color.DARK_GRAY).padBottom(-21).get().setFontScale(Unit.dp.scl(0.5f));
t.row();
t.add(stack.amount + "").get().setFontScale(Unit.dp.scl(0.5f));

View File

@@ -1,7 +1,6 @@
package io.anuke.mindustry.world.blocks.storage;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Rectangle;
import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.Annotations.Remote;
import io.anuke.mindustry.Vars;
@@ -38,12 +37,7 @@ import java.io.IOException;
import static io.anuke.mindustry.Vars.*;
public class CoreBlock extends StorageBlock{
private static Rectangle rect = new Rectangle();
protected int timerSupply = timers++;
protected float supplyRadius = 50f;
protected float supplyInterval = 5f;
protected float droneRespawnDuration = 60 * 6;
protected UnitType droneType = UnitTypes.drone;