Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3813d66f30 | ||
|
|
871548c095 | ||
|
|
c4b1df9526 | ||
|
|
bf320a98b8 | ||
|
|
a78e7ca8c9 |
|
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 279 B |
|
Before Width: | Height: | Size: 463 B After Width: | Height: | Size: 383 B |
|
Before Width: | Height: | Size: 329 B After Width: | Height: | Size: 439 B |
|
Before Width: | Height: | Size: 307 B After Width: | Height: | Size: 521 B |
@@ -3184,6 +3184,7 @@ public class Blocks{
|
|||||||
reload = 6f;
|
reload = 6f;
|
||||||
coolantMultiplier = 1.5f;
|
coolantMultiplier = 1.5f;
|
||||||
range = 60f;
|
range = 60f;
|
||||||
|
shootY = 3;
|
||||||
shootCone = 50f;
|
shootCone = 50f;
|
||||||
targetAir = false;
|
targetAir = false;
|
||||||
ammoUseEffect = Fx.none;
|
ammoUseEffect = Fx.none;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public class ContentLoader{
|
|||||||
|
|
||||||
public ContentLoader(){
|
public ContentLoader(){
|
||||||
for(ContentType type : ContentType.all){
|
for(ContentType type : ContentType.all){
|
||||||
contentMap[type.ordinal()] = new Seq<>(type.contentClass == null ? Object.class : type.contentClass);
|
contentMap[type.ordinal()] = new Seq<>();
|
||||||
contentNameMap[type.ordinal()] = new ObjectMap<>();
|
contentNameMap[type.ordinal()] = new ObjectMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1005,7 +1005,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
int dump = this.cdump;
|
int dump = this.cdump;
|
||||||
var allItems = content.items();
|
var allItems = content.items();
|
||||||
int itemSize = allItems.size;
|
int itemSize = allItems.size;
|
||||||
Item[] itemArray = allItems.items;
|
Object[] itemArray = allItems.items;
|
||||||
|
|
||||||
for(int i = 0; i < proximity.size; i++){
|
for(int i = 0; i < proximity.size; i++){
|
||||||
Building other = proximity.get((i + dump) % proximity.size);
|
Building other = proximity.get((i + dump) % proximity.size);
|
||||||
@@ -1014,7 +1014,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
|||||||
|
|
||||||
for(int ii = 0; ii < itemSize; ii++){
|
for(int ii = 0; ii < itemSize; ii++){
|
||||||
if(!items.has(ii)) continue;
|
if(!items.has(ii)) continue;
|
||||||
Item item = itemArray[ii];
|
Item item = (Item)itemArray[ii];
|
||||||
|
|
||||||
if(other.acceptItem(self(), item) && canDump(other, item)){
|
if(other.acceptItem(self(), item) && canDump(other, item)){
|
||||||
other.handleItem(self(), item);
|
other.handleItem(self(), item);
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
|
|
||||||
@Remote(called = Loc.server, unreliable = true)
|
@Remote(called = Loc.server, unreliable = true)
|
||||||
public static void transferItemTo(@Nullable Unit unit, Item item, int amount, float x, float y, Building build){
|
public static void transferItemTo(@Nullable Unit unit, Item item, int amount, float x, float y, Building build){
|
||||||
if(build == null || build.items == null) return;
|
if(build == null || build.items == null || item == null) return;
|
||||||
|
|
||||||
if(unit != null && unit.item() == item) unit.stack.amount = Math.max(unit.stack.amount - amount, 0);
|
if(unit != null && unit.item() == item) unit.stack.amount = Math.max(unit.stack.amount - amount, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -116,14 +116,14 @@ public class ArcNetProvider implements NetProvider{
|
|||||||
|
|
||||||
Log.debug("&bReceived connection: @", c.addressTCP);
|
Log.debug("&bReceived connection: @", c.addressTCP);
|
||||||
|
|
||||||
|
connection.setArbitraryData(kn);
|
||||||
connections.add(kn);
|
connections.add(kn);
|
||||||
Core.app.post(() -> net.handleServerReceived(kn, c));
|
Core.app.post(() -> net.handleServerReceived(kn, c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void disconnected(Connection connection, DcReason reason){
|
public void disconnected(Connection connection, DcReason reason){
|
||||||
ArcConnection k = getByArcID(connection.getID());
|
if(!(connection.getArbitraryData() instanceof ArcConnection k)) return;
|
||||||
if(k == null) return;
|
|
||||||
|
|
||||||
Disconnect c = new Disconnect();
|
Disconnect c = new Disconnect();
|
||||||
c.reason = reason.toString();
|
c.reason = reason.toString();
|
||||||
@@ -136,8 +136,8 @@ public class ArcNetProvider implements NetProvider{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void received(Connection connection, Object object){
|
public void received(Connection connection, Object object){
|
||||||
ArcConnection k = getByArcID(connection.getID());
|
if(!(connection.getArbitraryData() instanceof ArcConnection k)) return;
|
||||||
if(!(object instanceof Packet pack) || k == null) return;
|
if(!(object instanceof Packet pack)) return;
|
||||||
|
|
||||||
if(packetSpamLimit > 0 && !k.packetRate.allow(3000, packetSpamLimit)){
|
if(packetSpamLimit > 0 && !k.packetRate.allow(3000, packetSpamLimit)){
|
||||||
Log.warn("Blacklisting IP '@' as potential DOS attack - packet spam.", k.address);
|
Log.warn("Blacklisting IP '@' as potential DOS attack - packet spam.", k.address);
|
||||||
@@ -308,17 +308,6 @@ public class ArcNetProvider implements NetProvider{
|
|||||||
mainExecutor.submit(server::stop);
|
mainExecutor.submit(server::stop);
|
||||||
}
|
}
|
||||||
|
|
||||||
ArcConnection getByArcID(int id){
|
|
||||||
for(int i = 0; i < connections.size(); i++){
|
|
||||||
ArcConnection con = connections.get(i);
|
|
||||||
if(con.connection != null && con.connection.getID() == id){
|
|
||||||
return con;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
class ArcConnection extends NetConnection{
|
class ArcConnection extends NetConnection{
|
||||||
public final Connection connection;
|
public final Connection connection;
|
||||||
|
|
||||||
@@ -370,8 +359,9 @@ public class ArcNetProvider implements NetProvider{
|
|||||||
Log.info("Error sending packet. Disconnecting invalid client!");
|
Log.info("Error sending packet. Disconnecting invalid client!");
|
||||||
connection.close(DcReason.error);
|
connection.close(DcReason.error);
|
||||||
|
|
||||||
ArcConnection k = getByArcID(connection.getID());
|
if(connection.getArbitraryData() instanceof ArcConnection k){
|
||||||
if(k != null) connections.remove(k);
|
connections.remove(k);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,9 +68,9 @@ public class OverdriveProjector extends Block{
|
|||||||
stats.add(Stat.range, range / tilesize, StatUnit.blocks);
|
stats.add(Stat.range, range / tilesize, StatUnit.blocks);
|
||||||
stats.add(Stat.productionTime, useTime / 60f, StatUnit.seconds);
|
stats.add(Stat.productionTime, useTime / 60f, StatUnit.seconds);
|
||||||
|
|
||||||
if(hasBoost){
|
if(hasBoost && findConsumer(f -> f instanceof ConsumeItems) instanceof ConsumeItems items){
|
||||||
stats.remove(Stat.booster);
|
stats.remove(Stat.booster);
|
||||||
stats.add(Stat.booster, StatValues.itemBoosters("+{0}%", stats.timePeriod, speedBoostPhase * 100f, phaseRangeBoost, ((ConsumeItems)findConsumer(f -> f instanceof ConsumeItems)).items, this::consumesItem));
|
stats.add(Stat.booster, StatValues.itemBoosters("+{0}%", stats.timePeriod, speedBoostPhase * 100f, phaseRangeBoost, items.items, this::consumesItem));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -250,6 +250,8 @@ public class PayloadConveyor extends Block{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void unitOn(Unit unit){
|
public void unitOn(Unit unit){
|
||||||
|
if(!enabled) return;
|
||||||
|
|
||||||
//calculate derivative of units moved last frame
|
//calculate derivative of units moved last frame
|
||||||
float delta = (curInterp - lastInterp) * size * tilesize;
|
float delta = (curInterp - lastInterp) * size * tilesize;
|
||||||
Tmp.v1.trns(rotdeg(), delta * moveForce).scl(1f / Math.max(unit.mass(), 201f));
|
Tmp.v1.trns(rotdeg(), delta * moveForce).scl(1f / Math.max(unit.mass(), 201f));
|
||||||
|
|||||||