More reconstructors

This commit is contained in:
Anuken 2022-02-27 11:43:14 -05:00
parent 73fb5657f1
commit 06292d6687
13 changed files with 73 additions and 29 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 319 B

View File

@ -549,3 +549,5 @@
63154=avert|unit-avert-ui
63153=latum|unit-latum-ui
63152=tank-reconstructor|block-tank-reconstructor-ui
63151=mech-reconstructor|block-mech-reconstructor-ui
63150=ship-reconstructor|block-ship-reconstructor-ui

Binary file not shown.

View File

@ -3701,11 +3701,26 @@ public class Blocks{
);
}};
shipReconstructor = new Reconstructor("ship-reconstructor"){{
requirements(Category.units, with(Items.graphite, 250, Items.tungsten, 120, Items.silicon, 200));
regionSuffix = "-dark";
size = 3;
consumePower(3f);
consumeLiquid(Liquids.hydrogen, 3f / 60f);
consumeItems(with(Items.silicon, 100, Items.tungsten, 100));
constructTime = 60f * 20f;
upgrades.addAll(
new UnitType[]{UnitTypes.stell, UnitTypes.avert}
);
}};
tankAssembler = new UnitAssembler("tank-assembler"){{
requirements(Category.units, with(Items.graphite, 600, Items.beryllium, 600, Items.oxide, 250, Items.tungsten, 400, Items.silicon, 500));
regionSuffix = "-dark";
size = 5;
//TODO remove ducts and crushers, replace with 2-3 high cost special blocks with silicon requirements
plans.add(new AssemblerUnitPlan(UnitTypes.vanquish, 60f * 50f, PayloadStack.list(UnitTypes.stell, 4, Blocks.tungstenWallLarge, 10)));
consumePower(3f);
areaSize = 13;
@ -3719,8 +3734,7 @@ public class Blocks{
requirements(Category.units, with(Items.beryllium, 700, Items.oxide, 300, Items.tungsten, 500, Items.silicon, 800));
regionSuffix = "-dark";
size = 5;
//TODO not stell
plans.add(new AssemblerUnitPlan(UnitTypes.quell, 60f * 60f, PayloadStack.list(Blocks.berylliumWallLarge, 20, UnitTypes.stell, 2)));
plans.add(new AssemblerUnitPlan(UnitTypes.quell, 60f * 60f, PayloadStack.list(UnitTypes.avert, 2, Blocks.berylliumWallLarge, 8)));
consumePower(3f);
areaSize = 13;
researchCostMultiplier = 0.4f;
@ -3734,8 +3748,7 @@ public class Blocks{
regionSuffix = "-dark";
size = 5;
//TODO different reqs
//TODO not stell
plans.add(new AssemblerUnitPlan(UnitTypes.bulwark, 60f * 60f, PayloadStack.list(Blocks.tungstenWallLarge, 12, UnitTypes.stell, 2)));
plans.add(new AssemblerUnitPlan(UnitTypes.bulwark, 60f * 60f, PayloadStack.list(UnitTypes.latum, 2, Blocks.tungstenWallLarge, 10)));
consumePower(3f);
areaSize = 13;
researchCostMultiplier = 0.4f;

View File

@ -2506,10 +2506,42 @@ public class UnitTypes{
damage = 50f;
hitColor = Color.valueOf("feb380");
hitEffect = endEffect = Fx.hitBulletColor;
shootEffect = Fx.shootBig;
smokeEffect = Fx.shootBigSmoke;
pierceDamageFactor = 0.8f;
smokeEffect = Fx.colorSpark;
//lines - messy
if(false)
smokeEffect = new Effect(22f, e -> {
color(e.color);
stroke(e.fout() * 0.9f + 0.6f);
Fx.rand.setSeed(e.id);
for(int i = 0; i < 7; i++){
Fx.v.trns(e.rotation, Fx.rand.random(8f, length - 8f));
Lines.lineAngleCenter(e.x + Fx.v.x, e.y + Fx.v.y, e.rotation + e.finpow(), e.foutpowdown() * 20f * Fx.rand.random(0.5f, 1f) + 0.3f);
}
});
endEffect = new Effect(14f, e-> {
color(e.color);
Drawf.tri(e.x, e.y, e.fout() * 1.5f, 5f, e.rotation);
});
shootEffect = new Effect(10, e -> {
color(e.color);
float w = 1.2f + 7 * e.fout();
Drawf.tri(e.x, e.y, w, 30f * e.fout(), e.rotation);
color(e.color);
for(int i : Mathf.signs){
Drawf.tri(e.x, e.y, w * 0.9f, 18f * e.fout(), e.rotation + i * 90f);
}
Drawf.tri(e.x, e.y, w, 4f * e.fout(), e.rotation + 180f);
});
lineEffect = new Effect(14f, e -> {
if(!(e.data instanceof Vec2 v)) return;
@ -2519,6 +2551,7 @@ public class UnitTypes{
});
pointEffectSpace = 8f;
if(false)
pointEffect = new Effect(20, e -> {
color(e.color);
@ -2822,7 +2855,7 @@ public class UnitTypes{
smoothReloadSpeed = 0.15f;
recoil = 2f;
bullet = new BasicBulletType(3.5f, 40){{
bullet = new BasicBulletType(3.5f, 50){{
backColor = trailColor = hitColor = Pal.techBlue;
frontColor = Color.white;
width = 7.5f;
@ -2853,7 +2886,7 @@ public class UnitTypes{
weapons.add(new PointDefenseWeapon("latum-point-defense"){{
x = 16f / 4f;
y = -20f / 4f;
reload = 10f;
reload = 9f;
targetInterval = 9f;
targetSwitchInterval = 12f;
@ -2863,7 +2896,7 @@ public class UnitTypes{
shootEffect = Fx.sparkShoot;
hitEffect = Fx.pointHit;
maxRange = 100f;
damage = 35f;
damage = 38f;
}};
}});
}};

View File

@ -27,8 +27,9 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw
@Import Vec2 vel;
IntSeq collided = new IntSeq(6);
Object data;
BulletType type;
Object data;
float fdata;
@ReadOnly

View File

@ -1,6 +1,5 @@
package mindustry.graphics;
import arc.*;
import arc.graphics.*;
import arc.graphics.g2d.*;
import arc.math.*;
@ -393,8 +392,16 @@ public class Drawf{
}
public static void tri(float x, float y, float width, float length, float rotation){
float oy = 17f / 63f * length;
Draw.rect(Core.atlas.find("shape-3"), x, y - oy + length / 2f, width, length, width / 2f, oy, rotation - 90);
float
fx = Angles.trnsx(rotation, length),
fy = Angles.trnsy(rotation, length),
rx = Angles.trnsx(rotation - 90f, width / 2f),
ry = Angles.trnsy(rotation - 90f, width / 2f);
Fill.tri(
x + rx, y + ry,
x + fx, y + fy,
x - rx, y - ry
);
}
public static void construct(Building t, UnlockableContent content, float rotation, float progress, float speed, float time){

View File

@ -91,7 +91,6 @@ public class ClassMap{
classes.put("PayloadStack", mindustry.type.PayloadStack.class);
classes.put("Planet", mindustry.type.Planet.class);
classes.put("Publishable", mindustry.type.Publishable.class);
classes.put("Satellite", mindustry.type.Satellite.class);
classes.put("Sector", mindustry.type.Sector.class);
classes.put("SectorRect", mindustry.type.Sector.SectorRect.class);
classes.put("SectorPreset", mindustry.type.SectorPreset.class);

View File

@ -1,11 +0,0 @@
package mindustry.type;
//TODO
/** Any object that is orbiting a planet. */
public class Satellite{
public transient Planet planet;
public Satellite(Planet orbiting){
this.planet = orbiting;
}
}

View File

@ -30,7 +30,7 @@ public class Styles{
public static TextButtonStyle defaultt, nodet, cleart, nonet, clearPartialt, clearTogglet, logicTogglet, clearToggleMenut, togglet, transt, fullTogglet, squareTogglet, logict;
public static ImageButtonStyle defaulti, nodei, emptyi, emptytogglei, selecti, logici, geni, colori, accenti, cleari, clearFulli, clearPartiali, clearTogglei, clearTransi, clearToggleTransi, clearTogglePartiali;
public static ScrollPaneStyle defaultPane, horizontalPane, smallPane, nonePane;
public static ScrollPaneStyle defaultPane, horizontalPane, smallPane, noBarPane;
public static SliderStyle defaultSlider;
public static LabelStyle defaultLabel, outlineLabel, techLabel;
public static TextFieldStyle defaultField, nodeField, areaField, nodeArea;
@ -284,7 +284,7 @@ public class Styles{
vScroll = clear;
vScrollKnob = scrollKnobVerticalThin;
}};
nonePane = new ScrollPaneStyle();
noBarPane = new ScrollPaneStyle();
defaultSlider = new SliderStyle(){{
background = sliderBack;

View File

@ -79,7 +79,7 @@ public class SchematicsDialog extends BaseDialog{
in.add("@schematic.tags").padRight(4);
//tags (no scroll pane visible)
in.pane(Styles.nonePane, t -> {
in.pane(Styles.noBarPane, t -> {
rebuildTags = () -> {
t.clearChildren();
t.left();