From 2f989d57bbeec8d32dc438d96476854330d06b39 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 3 Feb 2022 00:59:21 -0500 Subject: [PATCH] Weapon animation suffering --- .../units/weapons/conquer-weapon-heat.png | Bin 0 -> 20028 bytes .../units/weapons/conquer-weapon-sides.png | Bin 0 -> 612 bytes .../weapons/conquer-weapon-sinks-heat.png | Bin 1527 -> 1543 bytes core/src/mindustry/content/UnitTypes.java | 37 ++++++++++++--- .../mindustry/entities/part/RegionPart.java | 5 +-- .../mindustry/entities/part/WeaponPart.java | 2 + core/src/mindustry/type/UnitType.java | 8 +++- core/src/mindustry/type/Weapon.java | 42 ++++++++++-------- gradle.properties | 2 +- tools/src/mindustry/tools/Generators.java | 2 +- 10 files changed, 68 insertions(+), 30 deletions(-) create mode 100644 core/assets-raw/sprites/units/weapons/conquer-weapon-heat.png create mode 100644 core/assets-raw/sprites/units/weapons/conquer-weapon-sides.png diff --git a/core/assets-raw/sprites/units/weapons/conquer-weapon-heat.png b/core/assets-raw/sprites/units/weapons/conquer-weapon-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..ee963032bc1a23c9a751902b451d8d08e4c9dbcc GIT binary patch literal 20028 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 literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/weapons/conquer-weapon-sides.png b/core/assets-raw/sprites/units/weapons/conquer-weapon-sides.png new file mode 100644 index 0000000000000000000000000000000000000000..81a6757cd9bdff071b8294f937613dd6b1b47c20 GIT binary patch literal 612 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 diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 4bf6235628..5152a89172 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -2526,7 +2526,9 @@ public class UnitTypes{ y = -2f; shadow = 50f; heatColor = Color.valueOf("f9350f"); - cooldownTime = 80f; + shootWarmupSpeed = 0.06f; + cooldownTime = 110f; + heatColor = Color.valueOf("f9350f"); parts.add( new RegionPart("-glow"){{ @@ -2534,10 +2536,33 @@ public class UnitTypes{ blending = Blending.additive; outline = mirror = false; }}, + new RegionPart("-sides"){{ + useReload = false; + mirror = true; + under = true; + moveX = 0.5f; + moveY = 0.5f; + rotMove = 82f; + x = 38 / 4f; + y = 9 / 4f; + }}, new RegionPart("-sinks"){{ useReload = false; mirror = true; under = true; + heatColor = new Color(1f, 0.1f, 0.1f); + moveX = 15f / 4f; + moveY = -13f / 4f; + x = 34 / 4f; + y = -36 / 4f; + }}, + new RegionPart("-sinks-heat"){{ + blending = Blending.additive; + useReload = false; + mirror = true; + outline = false; + colorTo = new Color(1f, 0f, 0f, 0.5f); + color = colorTo.cpy().a(0f); moveX = 15f / 4f; moveY = -13f / 4f; x = 34 / 4f; @@ -2545,20 +2570,20 @@ public class UnitTypes{ }} ); - bullet = new BasicBulletType(8f, 110){{ + bullet = new BasicBulletType(8.5f, 250){{ sprite = "missile-large"; - width = 9.5f; - height = 15f; + width = 12f; + height = 20f; lifetime = 30f; hitSize = 6f; shootEffect = Fx.shootTitan; smokeEffect = Fx.shootSmokeTitan; - pierceCap = 2; + pierceCap = 3; pierce = true; pierceBuilding = true; hitColor = backColor = trailColor = Color.valueOf("feb380"); frontColor = Color.white; - trailWidth = 3.1f; + trailWidth = 4f; trailLength = 8; hitEffect = despawnEffect = Fx.blastExplosion; }}; diff --git a/core/src/mindustry/entities/part/RegionPart.java b/core/src/mindustry/entities/part/RegionPart.java index f85179bf9b..29f88a965d 100644 --- a/core/src/mindustry/entities/part/RegionPart.java +++ b/core/src/mindustry/entities/part/RegionPart.java @@ -20,8 +20,6 @@ public class RegionPart extends WeaponPart{ public boolean mirror = false; /** If true, an outline is drawn under the part. */ public boolean outline = true; - /** If true, the layer is overridden to be under the weapon/turret itself. */ - public boolean under = false; /** If true, the base + outline regions are drawn. Set to false for heat-only regions. */ public boolean drawRegion = true; /** If true, progress is inverted. */ @@ -49,7 +47,8 @@ public class RegionPart extends WeaponPart{ public void draw(PartParams params){ float z = Draw.z(); if(layer > 0) Draw.z(layer); - if(under) Draw.z(z - 0.0001f); + //TODO 'under' should not be special cased like this... + if(under && turretShading) Draw.z(z - 0.0001f); float prevZ = Draw.z(); float progress = useReload ? 1f - params.reload : params.warmup; diff --git a/core/src/mindustry/entities/part/WeaponPart.java b/core/src/mindustry/entities/part/WeaponPart.java index b02c86158f..cbb3426f7f 100644 --- a/core/src/mindustry/entities/part/WeaponPart.java +++ b/core/src/mindustry/entities/part/WeaponPart.java @@ -8,6 +8,8 @@ public abstract class WeaponPart{ /** If true, turret shading is used. Don't touch this, it is set up in unit/block init()! */ public boolean turretShading; + /** If true, the layer is overridden to be under the weapon/turret itself. */ + public boolean under = false; public abstract void draw(PartParams params); public abstract void load(String name); diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 3889719f73..c368b3118e 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -613,7 +613,7 @@ public class UnitType extends UnlockableContent{ if(outlines){ //outlines only created when weapons are drawn under w/ merged outlines - makeOutline(packer, region, alwaysCreateOutline || weapons.contains(w -> !w.top)); + makeOutline(packer, region, alwaysCreateOutline || weapons.contains(w -> !w.top || w.parts.contains(p -> p.under))); for(Weapon weapon : weapons){ if(!weapon.name.isEmpty()){ @@ -981,7 +981,13 @@ public class UnitType extends UnlockableContent{ for(WeaponMount mount : unit.mounts){ if(!mount.weapon.top){ + //apply layer offset, roll it back at the end + float z = Draw.z(); + Draw.z(z + mount.weapon.layerOffset); + mount.weapon.drawOutline(unit, mount); + + Draw.z(z); } } diff --git a/core/src/mindustry/type/Weapon.java b/core/src/mindustry/type/Weapon.java index c0e74370fb..fbe7c00d66 100644 --- a/core/src/mindustry/type/Weapon.java +++ b/core/src/mindustry/type/Weapon.java @@ -25,7 +25,7 @@ import static mindustry.Vars.*; public class Weapon implements Cloneable{ /** temporary weapon sequence number */ static int sequenceNum = 0; - + /** displayed weapon region */ public String name; /** bullet shot */ @@ -129,7 +129,7 @@ public class Weapon implements Cloneable{ /** whether this weapon should fire when its owner dies */ public boolean shootOnDeath = false; /** extra animated parts */ - public Seq parts = new Seq<>(); + public Seq parts = new Seq<>(WeaponPart.class); public Weapon(String name){ this.name = name; @@ -158,10 +158,6 @@ public class Weapon implements Cloneable{ public void drawOutline(Unit unit, WeaponMount mount){ if(!outlineRegion.found()) return; - //apply layer offset, roll it back at the end - float z = Draw.z(); - Draw.z(z + layerOffset); - float rotation = unit.rotation - 90, weaponRotation = rotation + (rotate ? mount.rotation : 0), @@ -171,10 +167,8 @@ public class Weapon implements Cloneable{ Draw.xscl = -Mathf.sign(flipSprite); Draw.rect(outlineRegion, wx, wy, weaponRotation); Draw.xscl = 1f; - - Draw.z(z); } - + public void draw(Unit unit, WeaponMount mount){ if(!region.found()) return; @@ -198,6 +192,17 @@ public class Weapon implements Cloneable{ Draw.xscl = -Mathf.sign(flipSprite); + if(parts.size > 0){ + WeaponPart.params.set(mount.warmup, 1f - Mathf.clamp(mount.reload / reload), mount.heat, wx, wy, weaponRotation + 90); + + for(int i = 0; i < parts.size; i++){ + var part = parts.items[i]; + if(part.under){ + part.draw(WeaponPart.params); + } + } + } + Draw.rect(region, wx, wy, weaponRotation); if(heatRegion.found() && mount.heat > 0){ @@ -218,10 +223,11 @@ public class Weapon implements Cloneable{ Draw.z(Layer.turret); }*/ - var params = WeaponPart.params.set(mount.warmup, 1f - Mathf.clamp(mount.reload / reload), mount.heat, wx, wy, weaponRotation + 90); - - for(var part : parts){ - part.draw(params); + for(int i = 0; i < parts.size; i++){ + var part = parts.items[i]; + if(!part.under){ + part.draw(WeaponPart.params); + } } } @@ -361,8 +367,8 @@ public class Weapon implements Cloneable{ protected Vec2 getShootPos(Unit unit, WeaponMount mount, Vec2 out){ float weaponRot = unit.rotation - 90 + (rotate ? mount.rotation : 0); return out.set(unit.x, unit.y) - .add(Angles.trnsx(unit.rotation - 90, x, y), Angles.trnsy(unit.rotation - 90, x, y)) - .add(Angles.trnsx(weaponRot, this.shootX, this.shootY), Angles.trnsx(weaponRot, this.shootX, this.shootY)); + .add(Angles.trnsx(unit.rotation - 90, x, y), Angles.trnsy(unit.rotation - 90, x, y)) + .add(Angles.trnsx(weaponRot, this.shootX, this.shootY), Angles.trnsx(weaponRot, this.shootX, this.shootY)); } protected void shoot(Unit unit, WeaponMount mount, float shootX, float shootY, float aimX, float aimY, float mountX, float mountY, float rotation, int side){ @@ -430,9 +436,9 @@ public class Weapon implements Cloneable{ protected @Nullable Bullet bullet(Unit unit, float shootX, float shootY, float angle, float lifescl){ float - xr = Mathf.range(xRand), - x = shootX + Angles.trnsx(angle, 0, xr), - y = shootY + Angles.trnsy(angle, 0, xr); + xr = Mathf.range(xRand), + x = shootX + Angles.trnsx(angle, 0, xr), + y = shootY + Angles.trnsy(angle, 0, xr); if(unitSpawned == null){ return bullet.create(unit, unit.team, x, y, angle, (1f - velocityRnd) + Mathf.random(velocityRnd), lifescl); diff --git a/gradle.properties b/gradle.properties index 8d36b34f7b..4cc65959c2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,4 +24,4 @@ android.useAndroidX=true #used for slow jitpack builds; TODO see if this actually works org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 -archash=680252597e +archash=476ab38cea diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index c974cdc12d..1e358fb140 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -515,7 +515,7 @@ public class Generators{ for(Weapon weapon : weapons){ if(outlined.add(weapon.name) && has(weapon.name)){ //only non-top weapons need separate outline sprites (this is mostly just mechs) - if(!weapon.top){ + if(!weapon.top || weapon.parts.contains(p -> p.under)){ save(outline.get(get(weapon.name)), weapon.name + "-outline"); }else{ //replace weapon with outlined version, no use keeping standard around