1
0
mirror of https://github.com/Anuken/Mindustry.git synced 2024-09-22 13:57:46 +03:00

Implemented saving of weapons after disconnect

This commit is contained in:
Anuken 2018-01-10 18:46:00 -05:00
parent 1820abe14f
commit 8d82639afc
5 changed files with 22 additions and 4 deletions

View File

@ -162,6 +162,7 @@ text.blocks.powerrange=Power range
text.blocks.lasertilerange=Laser tile range
text.blocks.capacity=Capacity
text.blocks.itemcapacity=Item Capacity
text.blocks.maxpowergenerationsecond=Max Power Generation/second
text.blocks.powergenerationsecond=Power Generation/second
text.blocks.generationsecondsitem=Generation Seconds/item
text.blocks.input=Input

View File

@ -102,6 +102,12 @@ public class NetClient extends Module {
}
}
for(int i = 0; i < data.weapons.length; i ++){
Vars.control.addWeapon((Weapon) Upgrade.getByID(data.weapons[i]));
}
Vars.player.weaponLeft = Vars.player.weaponRight = Vars.control.getWeapons().peek();
Vars.ui.hudfrag.updateWeapons();
UCore.log("Recieved entities: " + Arrays.toString(data.players) + " player ID: " + data.playerid);
gotEntities = true;
});

View File

@ -1,9 +1,7 @@
package io.anuke.mindustry.core;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.IntArray;
import com.badlogic.gdx.utils.IntMap;
import com.badlogic.gdx.utils.TimeUtils;
import com.badlogic.gdx.utils.*;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.BulletType;
@ -33,6 +31,7 @@ import java.util.Arrays;
public class NetServer extends Module{
/**Maps connection IDs to players.*/
IntMap<Player> connections = new IntMap<>();
ObjectMap<String, ByteArray> weapons = new ObjectMap<>();
float serverSyncTime = 4, itemSyncTime = 10, blockSyncTime = 120;
boolean closing = false;
@ -67,6 +66,7 @@ public class NetServer extends Module{
dp.playerid = player.id;
dp.players = Vars.control.playerGroup.all().toArray(Player.class);
dp.weapons = weapons.get(packet.name, new ByteArray()).toArray();
UCore.log("Sending entities: " + Arrays.toString(dp.players));
@ -145,7 +145,13 @@ public class NetServer extends Module{
});
Net.handleServer(UpgradePacket.class, packet -> {
Player player = connections.get(Net.getLastConnection());
Weapon weapon = (Weapon)Upgrade.getByID(packet.id);
if(!weapons.containsKey(player.name)) weapons.put(player.name, new ByteArray());
if(!weapons.get(player.name).contains(weapon.id)) weapons.get(player.name).add(weapon.id);
Vars.control.removeItems(UpgradeRecipes.get(weapon));
});

View File

@ -22,6 +22,7 @@ public class Packets {
public static class EntityDataPacket{
public Player[] players;
public int playerid;
public byte[] weapons;
}
public static class SyncPacket{

View File

@ -14,6 +14,7 @@ import io.anuke.ucore.core.Draw;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.util.Mathf;
import io.anuke.ucore.util.Strings;
import io.anuke.ucore.util.Tmp;
import java.io.DataInputStream;
@ -35,7 +36,7 @@ public class NuclearReactor extends LiquidPowerGenerator{
protected int explosionRadius = 19;
protected int explosionDamage = 135;
protected float flashThreshold = 0.46f; //heat threshold at which the lights start flashing
public NuclearReactor(String name) {
super(name);
generateItem = Item.uranium;
@ -52,6 +53,9 @@ public class NuclearReactor extends LiquidPowerGenerator{
public void getStats(Array<String> list){
super.getStats(list);
list.add("[powerinfo]Input Item: " + generateItem);
list.add("[powerinfo]Max Power Generation/second: " + Strings.toFixed(powerMultiplier*60f, 2));
list.removeValue(list.select(s -> s.contains("Power/Liquid")).iterator().next(), true);
list.removeValue(list.select(s -> s.contains("Max liquid/second:")).iterator().next(), true);
}
@Override