isLogicControllable

This commit is contained in:
Anuken
2023-02-23 16:12:52 -05:00
parent ab2138d8e7
commit a38351d41f
5 changed files with 21 additions and 1 deletions

View File

@@ -49,6 +49,11 @@ public class CommandAI extends AIController{
}
}
@Override
public boolean isLogicControllable(){
return !hasCommand();
}
public boolean isAttacking(){
return target != null && unit.within(target, unit.range() + 10f);
}

View File

@@ -93,6 +93,11 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
return isAdded();
}
@Override
public boolean isLogicControllable(){
return false;
}
@Replace
public float clipSize(){
return unit.isNull() ? 20 : unit.type.hitSize * 2f;

View File

@@ -55,6 +55,11 @@ public class AIController implements UnitController{
return false;
}
@Override
public boolean isLogicControllable(){
return true;
}
public void stopShooting(){
for(var mount : unit.mounts){
//ignore mount controllable stats too, they should not shoot either

View File

@@ -14,6 +14,11 @@ public interface UnitController{
return true;
}
/** @return whether logic AI can take over */
default boolean isLogicControllable(){
return false;
}
default void updateUnit(){
}

View File

@@ -361,7 +361,7 @@ public class LExecutor{
/** Checks is a unit is valid for logic AI control, and returns the controller. */
@Nullable
public static LogicAI checkLogicAI(LExecutor exec, Object unitObj){
if(unitObj instanceof Unit unit && unit.isValid() && exec.obj(varUnit) == unit && (unit.team == exec.team || exec.privileged) && !unit.isPlayer() && !(unit.isCommandable() && unit.command().hasCommand())){
if(unitObj instanceof Unit unit && unit.isValid() && exec.obj(varUnit) == unit && (unit.team == exec.team || exec.privileged) && unit.controller().isLogicControllable()){
if(unit.controller() instanceof LogicAI la){
la.controller = exec.building(varThis);
return la;