Custom shield colouring (#9647)

Five extra minutes I had the luxury of spending fixing Git because it exploded again

Co-authored-by: Anuken <arnukren@gmail.com>
This commit is contained in:
Elixias
2024-06-20 09:27:22 -06:00
committed by GitHub
parent d897f1b7b0
commit 0019b78f71
5 changed files with 18 additions and 8 deletions

View File

@@ -82,7 +82,7 @@ public class ForceFieldAbility extends Ability{
if(unit.shield <= 0f && !wasBroken){
unit.shield -= cooldown * regen;
Fx.shieldBreak.at(unit.x, unit.y, radius, unit.team.color, this);
Fx.shieldBreak.at(unit.x, unit.y, radius, unit.type.shieldColor(unit), this);
}
wasBroken = unit.shield <= 0f;
@@ -110,7 +110,7 @@ public class ForceFieldAbility extends Ability{
checkRadius(unit);
if(unit.shield > 0){
Draw.color(unit.team.color, Color.white, Mathf.clamp(alpha));
Draw.color(unit.type.shieldColor(unit), Color.white, Mathf.clamp(alpha));
if(Vars.renderer.animateShields){
Draw.z(Layer.shields + 0.001f * alpha);

View File

@@ -31,7 +31,7 @@ public class ShieldArcAbility extends Ability{
if(paramField.data <= b.damage()){
paramField.data -= paramField.cooldown * paramField.regen;
Fx.arcShieldBreak.at(paramPos.x, paramPos.y, 0, paramUnit.team.color, paramUnit);
Fx.arcShieldBreak.at(paramPos.x, paramPos.y, 0, paramField.color == null ? paramUnit.type.shieldColor(paramUnit) : paramField.color, paramUnit);
}
paramField.data -= b.damage();
@@ -60,6 +60,8 @@ public class ShieldArcAbility extends Ability{
public boolean drawArc = true;
/** If not null, will be drawn on top. */
public @Nullable String region;
/** Color override of the shield. Uses unit shield colour by default. */
public @Nullable Color color;
/** If true, sprite position will be influenced by x/y. */
public boolean offsetRegion = false;
@@ -109,7 +111,7 @@ public class ShieldArcAbility extends Ability{
if(widthScale > 0.001f){
Draw.z(Layer.shields);
Draw.color(unit.team.color, Color.white, Mathf.clamp(alpha));
Draw.color(color == null ? unit.type.shieldColor(unit) : color, Color.white, Mathf.clamp(alpha));
var pos = paramPos.set(x, y).rotate(unit.rotation - 90f).add(unit);
if(!Vars.renderer.animateShields){

View File

@@ -48,13 +48,13 @@ public class ShieldRegenFieldAbility extends Ability{
if(other.shield < max){
other.shield = Math.min(other.shield + amount, max);
other.shieldAlpha = 1f; //TODO may not be necessary
applyEffect.at(unit.x, unit.y, 0f, unit.team.color, parentizeEffects ? other : null);
applyEffect.at(other.x, other.y, 0f, other.type.shieldColor(other), parentizeEffects ? other : null);
applied = true;
}
});
if(applied){
activeEffect.at(unit.x, unit.y, unit.team.color);
activeEffect.at(unit.x, unit.y, unit.type.shieldColor(unit));
}
timer = 0f;

View File

@@ -61,7 +61,7 @@ abstract class ShieldComp implements Healthc, Posc{
}
if(hadShields && shield <= 0.0001f){
Fx.unitShieldBreak.at(x, y, 0, team.color, this);
Fx.unitShieldBreak.at(x, y, 0, type.shieldColor(self()), this);
}
}
}