Merging changes from private branch

This commit is contained in:
Anuken
2025-04-04 11:47:35 -04:00
parent cf5c6d0905
commit b7dbe54d76
161 changed files with 2484 additions and 1137 deletions

View File

@@ -15,7 +15,7 @@ import mindustry.world.blocks.environment.*;
import static mindustry.Vars.*;
@Component
abstract class StatusComp implements Posc, Flyingc{
abstract class StatusComp implements Posc{
private Seq<StatusEntry> statuses = new Seq<>(4);
private transient Bits applied = new Bits(content.getBy(ContentType.status).size);
@@ -28,12 +28,12 @@ abstract class StatusComp implements Posc, Flyingc{
@Import float maxHealth;
/** Apply a status effect for 1 tick (for permanent effects) **/
void apply(StatusEffect effect){
public void apply(StatusEffect effect){
apply(effect, 1);
}
/** Adds a status effect to this unit. */
void apply(StatusEffect effect, float duration){
public void apply(StatusEffect effect, float duration){
if(effect == StatusEffects.none || effect == null || isImmune(effect)) return; //don't apply empty or immune effects
//unlock status effects regardless of whether they were applied to friendly units
@@ -67,18 +67,18 @@ abstract class StatusComp implements Posc, Flyingc{
}
}
float getDuration(StatusEffect effect){
public float getDuration(StatusEffect effect){
var entry = statuses.find(e -> e.effect == effect);
return entry == null ? 0 : entry.time;
}
void clearStatuses(){
public void clearStatuses(){
statuses.each(e -> e.effect.onRemoved(self()));
statuses.clear();
}
/** Removes a status effect. */
void unapply(StatusEffect effect){
public void unapply(StatusEffect effect){
statuses.remove(e -> {
if(e.effect == effect){
e.effect.onRemoved(self());
@@ -89,13 +89,15 @@ abstract class StatusComp implements Posc, Flyingc{
});
}
boolean isBoss(){
public boolean isBoss(){
return hasEffect(StatusEffects.boss);
}
abstract boolean isImmune(StatusEffect effect);
public boolean isImmune(StatusEffect effect){
return type.immunities.contains(effect);
}
Color statusColor(){
public Color statusColor(){
if(statuses.size == 0){
return Tmp.c1.set(Color.white);
}
@@ -168,6 +170,8 @@ abstract class StatusComp implements Posc, Flyingc{
applyDynamicStatus().armorOverride = armor;
}
public abstract boolean isGrounded();
@Override
public void update(){
Floor floor = floorOn();
@@ -237,7 +241,7 @@ abstract class StatusComp implements Posc, Flyingc{
}
}
boolean hasEffect(StatusEffect effect){
public boolean hasEffect(StatusEffect effect){
return applied.get(effect.id);
}
}