import com.artemis.E; //导入方法依赖的package包/类
@Override
protected void process(E e) {
if (e.hasRunning()) {
particleSystem.gremlinWave();
}
if (e.hasRobot()) {
if (e.chargeCharge() > 0) {
E enemy = touchingDeadlyStuffs(e, true);
if (enemy != null) {
e.chargeDecrease(0.2f);
particleSystem.bloodExplosion(enemy.posX() + enemy.boundsCx(), enemy.posY() + enemy.boundsCy());
enemy.deleteFromWorld();
animSystem.forceAnim(e, "robot-fight-stand");
}
}
} else if (!e.hasDead()) {
if (mapCollisionSystem.isLava(e.posX(), e.posY()) || touchingDeadlyStuffs(e, false) != null) {
e.dead();
}
float halfScreenWidth = (Gdx.graphics.getWidth() / G.CAMERA_ZOOM) * 0.5f + 16;
if (e.hasRunning() && e.posX() + e.boundsMaxx() < cameraSystem.camera.position.x - halfScreenWidth ) {
e.dead();
}
} else {
e.deadCooldown(e.deadCooldown() - world.delta);
if (!e.hasInvisible()) {
if (e.teamTeam() == 2) {
assetSystem.stopMusic();
assetSystem.playSfx("deathsound");
assetSystem.playSfx("death_jingle");
if (!e.isRobot()) {
dialogSystem.robotSay(DialogSystem.Dialog.SAD, 0.5f, 5f);
}
} else {
assetSystem.playSfx("gremlin_death");
}
e.invisible();
particleSystem.bloodExplosion(e.posX() + e.boundsCx(), e.posY() + e.boundsCy());
}
if (e.deadCooldown() <= 0 ) {
if ( (e.isRobot() || e.isPlayerControlled()) ) {
doExit();
e.removeDead().removeMortal();
} else e.deleteFromWorld();
}
}
}