40 lines
1.0 KiB
Java
40 lines
1.0 KiB
Java
package mindustry.entities.comp;
|
|
|
|
import arc.util.*;
|
|
import mindustry.annotations.Annotations.*;
|
|
import mindustry.game.*;
|
|
import mindustry.gen.*;
|
|
import mindustry.type.*;
|
|
|
|
/** A unit that depends on a units's existence; if that unit is removed, it despawns. */
|
|
@Component
|
|
abstract class UnitTetherComp implements Unitc{
|
|
@Import UnitType type;
|
|
@Import Team team;
|
|
|
|
//spawner unit cannot be read directly for technical reasons.
|
|
public transient @Nullable Unit spawner;
|
|
public int spawnerUnitId = -1;
|
|
|
|
@Override
|
|
public void afterRead(){
|
|
if(spawnerUnitId != -1) spawner = Groups.unit.getByID(spawnerUnitId);
|
|
spawnerUnitId = -1;
|
|
}
|
|
|
|
@Override
|
|
public void afterSync(){
|
|
if(spawnerUnitId != -1) spawner = Groups.unit.getByID(spawnerUnitId);
|
|
spawnerUnitId = -1;
|
|
}
|
|
|
|
@Override
|
|
public void update(){
|
|
if(spawner == null || !spawner.isValid() || spawner.team != team){
|
|
Call.unitDespawn(self());
|
|
}else{
|
|
spawnerUnitId = spawner.id;
|
|
}
|
|
}
|
|
}
|