Overall difficulty decrease / Crash fix / Server fillitems command
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package io.anuke.mindustry.ai;
|
package io.anuke.mindustry.ai;
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import com.badlogic.gdx.utils.Bits;
|
|
||||||
import io.anuke.mindustry.entities.units.BaseUnit;
|
import io.anuke.mindustry.entities.units.BaseUnit;
|
||||||
import io.anuke.mindustry.entities.units.Squad;
|
import io.anuke.mindustry.entities.units.Squad;
|
||||||
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
||||||
@@ -10,6 +9,7 @@ import io.anuke.mindustry.game.Team;
|
|||||||
import io.anuke.mindustry.game.Waves;
|
import io.anuke.mindustry.game.Waves;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.ucore.core.Events;
|
import io.anuke.ucore.core.Events;
|
||||||
|
import io.anuke.ucore.util.GridBits;
|
||||||
import io.anuke.ucore.util.Mathf;
|
import io.anuke.ucore.util.Mathf;
|
||||||
|
|
||||||
import java.io.DataInput;
|
import java.io.DataInput;
|
||||||
@@ -21,7 +21,7 @@ import static io.anuke.mindustry.Vars.*;
|
|||||||
public class WaveSpawner{
|
public class WaveSpawner{
|
||||||
private static final int quadsize = 4;
|
private static final int quadsize = 4;
|
||||||
|
|
||||||
private Bits quadrants;
|
private GridBits quadrants;
|
||||||
|
|
||||||
private Array<SpawnGroup> groups;
|
private Array<SpawnGroup> groups;
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ public class WaveSpawner{
|
|||||||
private void reset(){
|
private void reset(){
|
||||||
flySpawns.clear();
|
flySpawns.clear();
|
||||||
groundSpawns.clear();
|
groundSpawns.clear();
|
||||||
quadrants = new Bits(quadWidth() * quadHeight());
|
quadrants = new GridBits(quadWidth(), quadHeight());
|
||||||
|
|
||||||
if(world.getSector() == null){
|
if(world.getSector() == null){
|
||||||
groups = Waves.getSpawns();
|
groups = Waves.getSpawns();
|
||||||
@@ -176,15 +176,13 @@ public class WaveSpawner{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean getQuad(int quadx, int quady){
|
private boolean getQuad(int quadx, int quady){
|
||||||
return quadrants.get(quadx + quady * quadWidth());
|
return quadrants.get(quadx, quady);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setQuad(int quadx, int quady, boolean valid){
|
private void setQuad(int quadx, int quady, boolean valid){
|
||||||
if(valid){
|
if(quadrants == null) quadrants = new GridBits(quadWidth(), quadHeight());
|
||||||
quadrants.set(quadx + quady * quadWidth());
|
|
||||||
}else{
|
quadrants.set(quadx, quady, valid);
|
||||||
quadrants.clear(quadx + quady * quadWidth());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO instead of randomly scattering locations around the map, find spawns close to each other
|
//TODO instead of randomly scattering locations around the map, find spawns close to each other
|
||||||
|
|||||||
@@ -41,7 +41,8 @@ public class SectorsDialog extends FloatingDialog{
|
|||||||
+ (selected.saveID == -1 ? " " + Bundles.get("text.sector.unexplored") :
|
+ (selected.saveID == -1 ? " " + Bundles.get("text.sector.unexplored") :
|
||||||
(selected.hasSave() ? " [accent]/[white] " + Bundles.format("text.sector.time", selected.getSave().getPlayTime()) : ""))));
|
(selected.hasSave() ? " [accent]/[white] " + Bundles.format("text.sector.time", selected.getSave().getPlayTime()) : ""))));
|
||||||
content().row();
|
content().row();
|
||||||
content().label(() -> Bundles.format("text.mission", selected == null || selected.completedMissions >= selected.missions.size ? Bundles.get("text.none") : selected.missions.get(selected.completedMissions).displayString())
|
content().label(() -> Bundles.format("text.mission", selected == null || selected.completedMissions >= selected.missions.size
|
||||||
|
? Bundles.get("text.none") : selected.missions.get(selected.completedMissions).displayString())
|
||||||
+ " [WHITE]" + (selected == null ? "" : Bundles.format("text.save.difficulty", "[LIGHT_GRAY]" + selected.getDifficulty().toString())));
|
+ " [WHITE]" + (selected == null ? "" : Bundles.format("text.save.difficulty", "[LIGHT_GRAY]" + selected.getDifficulty().toString())));
|
||||||
content().row();
|
content().row();
|
||||||
content().add(new SectorView()).grow();
|
content().add(new SectorView()).grow();
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ import java.io.DataOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
public class UnitPad extends Block{
|
public class UnitPad extends Block{
|
||||||
protected float gracePeriodMultiplier = 19f;
|
protected float gracePeriodMultiplier = 22f;
|
||||||
protected float speedupTime = 60f * 60f * 19;
|
protected float speedupTime = 60f * 60f * 20;
|
||||||
protected float maxSpeedup = 7f;
|
protected float maxSpeedup = 7f;
|
||||||
|
|
||||||
protected UnitType type;
|
protected UnitType type;
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import io.anuke.mindustry.game.Version;
|
|||||||
import io.anuke.mindustry.net.*;
|
import io.anuke.mindustry.net.*;
|
||||||
import io.anuke.mindustry.net.Administration.PlayerInfo;
|
import io.anuke.mindustry.net.Administration.PlayerInfo;
|
||||||
import io.anuke.mindustry.net.Packets.KickReason;
|
import io.anuke.mindustry.net.Packets.KickReason;
|
||||||
|
import io.anuke.mindustry.type.Item;
|
||||||
|
import io.anuke.mindustry.type.ItemType;
|
||||||
import io.anuke.mindustry.ui.fragments.DebugFragment;
|
import io.anuke.mindustry.ui.fragments.DebugFragment;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.ucore.core.*;
|
import io.anuke.ucore.core.*;
|
||||||
@@ -261,6 +263,20 @@ public class ServerControl extends Module{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
handler.register("fillitems", "Fill the core with 2000 items.", arg -> {
|
||||||
|
if(!state.is(State.playing)){
|
||||||
|
err("Not playing. Host first.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(Item item : Item.all()){
|
||||||
|
if(item.type == ItemType.material){
|
||||||
|
state.teams.get(Team.blue).cores.first().entity.items.add(item, 2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
info("Core filled.");
|
||||||
|
});
|
||||||
|
|
||||||
handler.register("friendlyfire", "<on/off>", "Enable or disable friendly fire.", arg -> {
|
handler.register("friendlyfire", "<on/off>", "Enable or disable friendly fire.", arg -> {
|
||||||
String s = arg[0];
|
String s = arg[0];
|
||||||
if(s.equalsIgnoreCase("on")){
|
if(s.equalsIgnoreCase("on")){
|
||||||
@@ -544,10 +560,12 @@ public class ServerControl extends Module{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveIO.loadFromSlot(slot);
|
threads.run(() -> {
|
||||||
info("Save loaded.");
|
SaveIO.loadFromSlot(slot);
|
||||||
host();
|
info("Save loaded.");
|
||||||
state.set(State.playing);
|
host();
|
||||||
|
state.set(State.playing);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
handler.register("save", "<slot>", "Save game state to a slot.", arg -> {
|
handler.register("save", "<slot>", "Save game state to a slot.", arg -> {
|
||||||
@@ -559,11 +577,11 @@ public class ServerControl extends Module{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int slot = Strings.parseInt(arg[0]);
|
threads.run(() -> {
|
||||||
|
int slot = Strings.parseInt(arg[0]);
|
||||||
SaveIO.saveToSlot(slot);
|
SaveIO.saveToSlot(slot);
|
||||||
|
info("Saved to slot {0}.", slot);
|
||||||
info("Saved to slot {0}.", slot);
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
handler.register("griefers", "[min-break:place-ratio] [min-breakage]", "Find possible griefers currently online.", arg -> {
|
handler.register("griefers", "[min-break:place-ratio] [min-breakage]", "Find possible griefers currently online.", arg -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user