This commit is contained in:
Anuken
2020-08-18 10:01:53 -04:00
parent 623e3924ed
commit 00f7f57c46
5 changed files with 12 additions and 13 deletions

View File

@ -19,6 +19,8 @@ public class BuilderAI extends AIController{
builder.lookAt(builder.vel().angle()); builder.lookAt(builder.vel().angle());
} }
builder.updateBuilding(true);
//approach request if building //approach request if building
if(builder.buildPlan() != null){ if(builder.buildPlan() != null){
BuildPlan req = builder.buildPlan(); BuildPlan req = builder.buildPlan();

View File

@ -554,7 +554,7 @@ public class NetClient implements ApplicationListener{
void sync(){ void sync(){
if(timer.get(0, playerSyncTime)){ if(timer.get(0, playerSyncTime)){
BuildPlan[] requests = null; BuildPlan[] requests = null;
if(player.isBuilder() && control.input.isBuilding){ if(player.isBuilder()){
//limit to 10 to prevent buffer overflows //limit to 10 to prevent buffer overflows
int usedRequests = Math.min(player.builder().plans().size, 10); int usedRequests = Math.min(player.builder().plans().size, 10);
@ -574,7 +574,7 @@ public class NetClient implements ApplicationListener{
unit instanceof Mechc ? ((Mechc)unit).baseRotation() : 0, unit instanceof Mechc ? ((Mechc)unit).baseRotation() : 0,
unit.vel.x, unit.vel.y, unit.vel.x, unit.vel.y,
player.miner().mineTile(), player.miner().mineTile(),
player.boosting, player.shooting, ui.chatfrag.shown(), player.boosting, player.shooting, ui.chatfrag.shown(), control.input.isBuilding,
requests, requests,
Core.camera.position.x, Core.camera.position.y, Core.camera.position.x, Core.camera.position.y,
Core.camera.width * viewScale, Core.camera.height * viewScale); Core.camera.width * viewScale, Core.camera.height * viewScale);

View File

@ -6,8 +6,8 @@ import arc.graphics.*;
import arc.math.*; import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
import arc.struct.*; import arc.struct.*;
import arc.util.ArcAnnotate.*;
import arc.util.*; import arc.util.*;
import arc.util.ArcAnnotate.*;
import arc.util.CommandHandler.*; import arc.util.CommandHandler.*;
import arc.util.io.*; import arc.util.io.*;
import arc.util.serialization.*; import arc.util.serialization.*;
@ -535,7 +535,7 @@ public class NetServer implements ApplicationListener{
float rotation, float baseRotation, float rotation, float baseRotation,
float xVelocity, float yVelocity, float xVelocity, float yVelocity,
Tile mining, Tile mining,
boolean boosting, boolean shooting, boolean chatting, boolean boosting, boolean shooting, boolean chatting, boolean building,
@Nullable BuildPlan[] requests, @Nullable BuildPlan[] requests,
float viewX, float viewY, float viewWidth, float viewHeight float viewX, float viewY, float viewWidth, float viewHeight
){ ){
@ -572,6 +572,7 @@ public class NetServer implements ApplicationListener{
if(player.isBuilder()){ if(player.isBuilder()){
player.builder().clearBuilding(); player.builder().clearBuilding();
player.builder().updateBuilding(building);
} }
if(player.isMiner()){ if(player.isMiner()){

View File

@ -29,13 +29,7 @@ abstract class BuilderComp implements Unitc{
@Import float x, y, rotation; @Import float x, y, rotation;
@SyncLocal Queue<BuildPlan> plans = new Queue<>(); @SyncLocal Queue<BuildPlan> plans = new Queue<>();
transient boolean updateBuilding = true; @SyncLocal transient boolean updateBuilding = true;
@Override
public void controller(UnitController next){
//reset building state so AI controlled units will always start off building
updateBuilding = true;
}
@Override @Override
public void update(){ public void update(){
@ -85,12 +79,12 @@ abstract class BuilderComp implements Unitc{
boolean hasAll = infinite || !Structs.contains(current.block.requirements, i -> core != null && !core.items.has(i.item)); boolean hasAll = infinite || !Structs.contains(current.block.requirements, i -> core != null && !core.items.has(i.item));
if(hasAll){ if(hasAll){
Build.beginPlace(current.block, team(), current.x, current.y, current.rotation); Call.beginPlace(current.block, team(), current.x, current.y, current.rotation);
}else{ }else{
current.stuck = true; current.stuck = true;
} }
}else if(!current.initialized && current.breaking && Build.validBreak(team(), current.x, current.y)){ }else if(!current.initialized && current.breaking && Build.validBreak(team(), current.x, current.y)){
Build.beginBreak(team(), current.x, current.y); Call.beginBreak(team(), current.x, current.y);
}else{ }else{
plans.removeFirst(); plans.removeFirst();
return; return;

View File

@ -326,6 +326,8 @@ public class LExecutor{
} }
exec.setobj(output, targeted); exec.setobj(output, targeted);
}else{
exec.setobj(output, null);
} }
} }