Merge branch 'master' of https://github.com/Anuken/Mindustry into 7.0-features
Conflicts: gradle.properties
This commit is contained in:
@@ -576,11 +576,14 @@ public class NetClient implements ApplicationListener{
|
||||
for(int i = 0; i < usedRequests; i++){
|
||||
BuildPlan plan = player.unit().plans().get(i);
|
||||
if(plan.config instanceof byte[] b){
|
||||
int length = b.length;
|
||||
totalLength += length;
|
||||
totalLength += b.length;
|
||||
}
|
||||
|
||||
if(totalLength > 1024){
|
||||
if(plan.config instanceof String b){
|
||||
totalLength += b.length();
|
||||
}
|
||||
|
||||
if(totalLength > 500){
|
||||
usedRequests = i + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ public class WaveInfoDialog extends BaseDialog{
|
||||
dialog.hide();
|
||||
}).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null || Core.app.getClipboardText().isEmpty()).row();
|
||||
|
||||
t.button("@settings.reset", Icon.upload, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
|
||||
t.button("@settings.reset", Icon.upload, style, () -> ui.showConfirm("@confirm", "@settings.clear.confirm", () -> {
|
||||
groups = JsonIO.copy(waves.get());
|
||||
buildGroups();
|
||||
dialog.hide();
|
||||
|
||||
@@ -21,9 +21,7 @@ public class EmpBulletType extends BasicBulletType{
|
||||
Vars.indexer.allBuildings(x, y, radius, other -> {
|
||||
if(other.team == b.team){
|
||||
if(other.block.hasPower && other.block.canOverdrive && other.timeScale < timeIncrease){
|
||||
if(timeIncrease >= other.timeScale){
|
||||
other.timeScale = Math.max(other.timeScale, timeIncrease);
|
||||
}
|
||||
other.timeScale = Math.max(other.timeScale, timeIncrease);
|
||||
other.timeScaleDuration = Math.max(other.timeScaleDuration, timeDuration);
|
||||
chainEffect.at(x, y, 0, hitColor, other);
|
||||
applyEffect.at(other, other.block.size * 7f);
|
||||
|
||||
@@ -269,7 +269,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
||||
|
||||
public void applyBoost(float intensity, float duration){
|
||||
//do not refresh time scale when getting a weaker intensity
|
||||
if(intensity >= this.timeScale){
|
||||
if(intensity >= this.timeScale - 0.001f){
|
||||
timeScaleDuration = Math.max(timeScaleDuration, duration);
|
||||
}
|
||||
timeScale = Math.max(timeScale, intensity);
|
||||
@@ -280,11 +280,13 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
||||
}
|
||||
|
||||
public Building nearby(int rotation){
|
||||
if(rotation == 0) return world.build(tile.x + 1, tile.y);
|
||||
if(rotation == 1) return world.build(tile.x, tile.y + 1);
|
||||
if(rotation == 2) return world.build(tile.x - 1, tile.y);
|
||||
if(rotation == 3) return world.build(tile.x, tile.y - 1);
|
||||
return null;
|
||||
return switch(rotation){
|
||||
case 0 -> world.build(tile.x + 1, tile.y);
|
||||
case 1 -> world.build(tile.x, tile.y + 1);
|
||||
case 2 -> world.build(tile.x - 1, tile.y);
|
||||
case 3 -> world.build(tile.x, tile.y - 1);
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
public byte relativeTo(Tile tile){
|
||||
@@ -1033,7 +1035,12 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
||||
|
||||
/** Called *after* the tile has been removed. */
|
||||
public void afterDestroyed(){
|
||||
|
||||
if(block.destroyBullet != null){
|
||||
//I really do not like that the bullet will not destroy derelict
|
||||
//but I can't do anything about it without using a random team
|
||||
//which may or may not cause issues with servers and js
|
||||
block.destroyBullet.create(this, Team.derelict, x, y, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/** @return the cap for item amount calculations, used when this block explodes. */
|
||||
|
||||
@@ -242,7 +242,8 @@ public class SectorInfo{
|
||||
production.get(item).mean = Math.min(production.get(item).mean, rawProduction.get(item).mean);
|
||||
|
||||
if(export.containsKey(item)){
|
||||
export.get(item).mean = Math.min(export.get(item).mean, Math.max(rawProduction.get(item).mean, -production.get(item).mean));
|
||||
//export can, at most, be the raw items being produced from factories + the items being taken from the core
|
||||
export.get(item).mean = Math.min(export.get(item).mean, rawProduction.get(item).mean + Math.max(-production.get(item).mean, 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -182,6 +182,7 @@ public class LightRenderer{
|
||||
public void draw(){
|
||||
if(!Vars.enableLight){
|
||||
lights.clear();
|
||||
circleIndex = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ public class ContentInfoDialog extends BaseDialog{
|
||||
|
||||
table.table(title1 -> {
|
||||
title1.image(content.uiIcon).size(iconXLarge).scaling(Scaling.fit);
|
||||
title1.add("[accent]" + content.localizedName).padLeft(5);
|
||||
title1.add("[accent]" + content.localizedName + (enableConsole ? "\n[gray]" + content.name : "")).padLeft(5);
|
||||
});
|
||||
|
||||
table.row();
|
||||
|
||||
@@ -98,7 +98,7 @@ public class DatabaseDialog extends BaseDialog{
|
||||
ui.content.show(unlock);
|
||||
}
|
||||
});
|
||||
image.addListener(new Tooltip(t -> t.background(Tex.button).add(unlock.localizedName)));
|
||||
image.addListener(new Tooltip(t -> t.background(Tex.button).add(unlock.localizedName + (enableConsole ? "\n[gray]" + unlock.name : ""))));
|
||||
}
|
||||
|
||||
if((++count) % cols == 0){
|
||||
|
||||
@@ -29,6 +29,7 @@ import mindustry.world.blocks.*;
|
||||
import mindustry.world.blocks.environment.*;
|
||||
import mindustry.world.blocks.power.*;
|
||||
import mindustry.world.consumers.*;
|
||||
import mindustry.entities.bullet.*;
|
||||
import mindustry.world.meta.*;
|
||||
|
||||
import java.lang.reflect.*;
|
||||
@@ -133,6 +134,8 @@ public class Block extends UnlockableContent{
|
||||
public int health = -1;
|
||||
/** base block explosiveness */
|
||||
public float baseExplosiveness = 0f;
|
||||
/** bullet that this block spawns when destroyed */
|
||||
public @Nullable BulletType destroyBullet = null;
|
||||
/** whether this block can be placed on edges of liquids. */
|
||||
public boolean floating = false;
|
||||
/** multiblock size */
|
||||
|
||||
@@ -56,6 +56,10 @@ public class Attributes implements JsonSerializable{
|
||||
}
|
||||
|
||||
private void check(){
|
||||
if(arr.length != Attribute.all.length) arr = new float[Attribute.all.length];
|
||||
if(arr.length != Attribute.all.length){
|
||||
var last = arr;
|
||||
arr = new float[Attribute.all.length];
|
||||
System.arraycopy(last, 0, arr, 0, Math.min(last.length, arr.length));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public class OverdriveProjector extends Block{
|
||||
@Override
|
||||
public void setBars(){
|
||||
super.setBars();
|
||||
bars.add("boost", (OverdriveBuild entity) -> new Bar(() -> Core.bundle.format("bar.boost", Math.max((int)(entity.realBoost() * 100 - 100), 0)), () -> Pal.accent, () -> entity.realBoost() / (hasBoost ? speedBoost + speedBoostPhase : speedBoost)));
|
||||
bars.add("boost", (OverdriveBuild entity) -> new Bar(() -> Core.bundle.format("bar.boost", Mathf.round(Math.max((entity.realBoost() * 100 - 100), 0))), () -> Pal.accent, () -> entity.realBoost() / (hasBoost ? speedBoost + speedBoostPhase : speedBoost)));
|
||||
}
|
||||
|
||||
public class OverdriveBuild extends Building implements Ranged{
|
||||
|
||||
@@ -430,9 +430,6 @@ public class Turret extends ReloadTurret{
|
||||
int ii = i;
|
||||
Time.run(burstSpacing * i, () -> {
|
||||
if(dead || !hasAmmo()) return;
|
||||
|
||||
recoil = recoilAmount;
|
||||
|
||||
tr.trns(rotation, shootLength, Mathf.range(xRand));
|
||||
bullet(type, rotation + Mathf.range(inaccuracy + type.inaccuracy) + (ii - (int)(shots / 2f)) * spread);
|
||||
effects();
|
||||
@@ -519,4 +516,4 @@ public class Turret extends ReloadTurret{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,6 +252,7 @@ public class MassDriver extends Block{
|
||||
@Override
|
||||
public boolean onConfigureTileTapped(Building other){
|
||||
if(this == other){
|
||||
if(link == -1) deselect();
|
||||
configure(-1);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -432,6 +432,7 @@ public class PayloadMassDriver extends PayloadBlock{
|
||||
@Override
|
||||
public boolean onConfigureTileTapped(Building other){
|
||||
if(this == other){
|
||||
if(link == -1) deselect();
|
||||
configure(-1);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ public class Battery extends PowerDistributor{
|
||||
super(name);
|
||||
outputsPower = true;
|
||||
consumesPower = true;
|
||||
canOverdrive = false;
|
||||
flags = EnumSet.of(BlockFlag.battery);
|
||||
//TODO could be supported everywhere...
|
||||
envEnabled |= Env.space;
|
||||
|
||||
@@ -53,7 +53,6 @@ public class CoreBlock extends StorageBlock{
|
||||
|
||||
//support everything
|
||||
envEnabled = Env.any;
|
||||
drawDisabled = false;
|
||||
replaceable = false;
|
||||
rebuildable = false;
|
||||
}
|
||||
|
||||
@@ -118,6 +118,16 @@ public class CommandCenter extends Block{
|
||||
table.label(() -> team.data().command.localized()).style(Styles.outlineLabel).center().growX().get().setAlignment(Align.center);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onConfigureTileTapped(Building other){
|
||||
if(this == other){
|
||||
deselect();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(Writes write){
|
||||
super.write(write);
|
||||
|
||||
Reference in New Issue
Block a user