mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-01-10 15:19:24 +07:00
Bugfixes, cleanup
This commit is contained in:
parent
e71230755d
commit
6d68e10804
@ -343,6 +343,7 @@ public class TechTree implements ContentList{
|
||||
public static class TechNode{
|
||||
static TechNode context;
|
||||
|
||||
public TechNode parent;
|
||||
public final Block block;
|
||||
public final ItemStack[] requirements;
|
||||
public final Array<TechNode> children = new Array<>();
|
||||
@ -352,6 +353,7 @@ public class TechTree implements ContentList{
|
||||
ccontext.children.add(this);
|
||||
}
|
||||
|
||||
this.parent = ccontext;
|
||||
this.block = block;
|
||||
this.requirements = requirements;
|
||||
|
||||
|
@ -78,7 +78,6 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{
|
||||
float rotation = this.rotation - 90;
|
||||
|
||||
//shoot if applicable
|
||||
//TODO only shoot if angle is reached, don't shoot inaccurately
|
||||
if(mount.reload <= 0.0001f && Angles.within(mount.rotation, mount.targetRotation, 1.5f)){
|
||||
for(int i : (weapon.mirror && !weapon.alternate ? Mathf.signs : Mathf.one)){
|
||||
i *= Mathf.sign(weapon.flipped) * Mathf.sign(mount.side);
|
||||
@ -91,7 +90,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{
|
||||
shootY = mountY + Angles.trnsy(weaponRotation, weapon.shootX * i, weapon.shootY);
|
||||
float shootAngle = weapon.rotate ? weaponRotation + 90 : Angles.angle(shootX, shootY, mount.aimX, mount.aimY) + (this.rotation - angleTo(mount.aimX, mount.aimY));
|
||||
|
||||
shoot(weapon, shootX, shootY, shootAngle);
|
||||
shoot(weapon, shootX, shootY, shootAngle, -i);
|
||||
}
|
||||
|
||||
mount.side = !mount.side;
|
||||
@ -101,7 +100,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{
|
||||
}
|
||||
}
|
||||
|
||||
private void shoot(Weapon weapon, float x, float y, float rotation){
|
||||
private void shoot(Weapon weapon, float x, float y, float rotation, int side){
|
||||
float baseX = this.x, baseY = this.y;
|
||||
|
||||
weapon.shootSound.at(x, y, Mathf.random(0.8f, 1.0f));
|
||||
@ -129,7 +128,7 @@ abstract class WeaponsComp implements Teamc, Posc, Rotc{
|
||||
boolean parentize = ammo.keepVelocity;
|
||||
|
||||
Effects.shake(weapon.shake, weapon.shake, x, y);
|
||||
weapon.ejectEffect.at(x, y, rotation);
|
||||
weapon.ejectEffect.at(x, y, rotation * side);
|
||||
ammo.shootEffect.at(x + Tmp.v1.x, y + Tmp.v1.y, rotation, parentize ? this : null);
|
||||
ammo.smokeEffect.at(x + Tmp.v1.x, y + Tmp.v1.y, rotation, parentize ? this : null);
|
||||
}
|
||||
|
@ -53,7 +53,6 @@ public class TestPlanetGenerator implements PlanetGenerator{
|
||||
@Override
|
||||
public void generate(Vec3 position, TileGen tile){
|
||||
tile.floor = getBlock(position);
|
||||
tile.overlay = Mathf.chance(0.01) ? Blocks.oreCopper : Blocks.air;
|
||||
}
|
||||
|
||||
Block getBlock(Vec3 position){
|
||||
|
@ -6,7 +6,7 @@ import arc.audio.*;
|
||||
import arc.files.*;
|
||||
import arc.func.*;
|
||||
import arc.graphics.*;
|
||||
import arc.mock.MockSound;
|
||||
import arc.mock.*;
|
||||
import arc.struct.Array;
|
||||
import arc.struct.*;
|
||||
import arc.util.ArcAnnotate.*;
|
||||
@ -173,9 +173,11 @@ public class ContentParser{
|
||||
readBundle(ContentType.block, name, value);
|
||||
|
||||
Block block;
|
||||
boolean exists;
|
||||
|
||||
if(locate(ContentType.block, name) != null){
|
||||
block = locate(ContentType.block, name);
|
||||
exists = true;
|
||||
|
||||
if(value.has("type")){
|
||||
throw new IllegalArgumentException("When defining properties for an existing block, you must not re-declare its type. The original type will be used. Block: " + name);
|
||||
@ -183,6 +185,7 @@ public class ContentParser{
|
||||
}else{
|
||||
//TODO generate dynamically instead of doing.. this
|
||||
Class<? extends Block> type;
|
||||
exists = false;
|
||||
|
||||
try{
|
||||
type = resolve(getType(value),
|
||||
@ -249,13 +252,17 @@ public class ContentParser{
|
||||
//add research tech node
|
||||
if(research[0] != null){
|
||||
Block parent = find(ContentType.block, research[0]);
|
||||
TechNode baseNode = TechTree.create(parent, block);
|
||||
TechNode baseNode = exists && TechTree.all.contains(t -> t.block == block) ? TechTree.all.find(t -> t.block == block) : TechTree.create(parent, block);
|
||||
LoadedMod cur = currentMod;
|
||||
|
||||
postreads.add(() -> {
|
||||
currentContent = block;
|
||||
currentMod = cur;
|
||||
|
||||
if(baseNode.parent != null){
|
||||
baseNode.parent.children.remove(baseNode);
|
||||
}
|
||||
|
||||
TechNode parnode = TechTree.all.find(t -> t.block == parent);
|
||||
if(parnode == null){
|
||||
throw new IllegalArgumentException("Block '" + parent.name + "' isn't in the tech tree, but '" + block.name + "' requires it to be researched.");
|
||||
@ -263,7 +270,9 @@ public class ContentParser{
|
||||
if(!parnode.children.contains(baseNode)){
|
||||
parnode.children.add(baseNode);
|
||||
}
|
||||
baseNode.parent = parnode;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
//make block visible by default if there are requirements and no visibility set
|
||||
|
@ -1,3 +1,3 @@
|
||||
org.gradle.daemon=true
|
||||
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
||||
archash=d5eb3f0c3df12ba6f6b20c1c95952bc22d4250b3
|
||||
archash=0b2f044e5955ff700650eebecfb3dfcb629d7a8b
|
||||
|
Loading…
Reference in New Issue
Block a user