Lock rotation of blocks that don't rotate

This commit is contained in:
MEEP of Faith
2023-04-23 10:45:20 -07:00
parent 1314dfe53e
commit 8f6bfa1e0f
3 changed files with 15 additions and 5 deletions

View File

@@ -35,7 +35,7 @@ public class BuildPlan implements Position, QuadTreeObject{
public BuildPlan(int x, int y, int rotation, Block block){
this.x = x;
this.y = y;
this.rotation = rotation;
setRotation(block, rotation);
this.block = block;
this.breaking = false;
}
@@ -44,7 +44,7 @@ public class BuildPlan implements Position, QuadTreeObject{
public BuildPlan(int x, int y, int rotation, Block block, Object config){
this.x = x;
this.y = y;
this.rotation = rotation;
setRotation(block, rotation);
this.block = block;
this.breaking = false;
this.config = config;
@@ -136,7 +136,7 @@ public class BuildPlan implements Position, QuadTreeObject{
public BuildPlan set(int x, int y, int rotation, Block block){
this.x = x;
this.y = y;
this.rotation = rotation;
setRotation(block, rotation);
this.block = block;
this.breaking = false;
return this;
@@ -177,6 +177,14 @@ public class BuildPlan implements Position, QuadTreeObject{
return drawy();
}
public void setRotation(Block block, int rotation){
this.rotation = !block.rotate && block.lockRotation ? 0 : rotation;
}
public void setRotation(int rotation){
if(block != null) setRotation(block, rotation);
}
@Override
public String toString(){
return "BuildPlan{" +

View File

@@ -1038,7 +1038,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
}
plan.x = World.toTile(wx - plan.block.offset) + ox;
plan.y = World.toTile(wy - plan.block.offset) + oy;
plan.rotation = Mathf.mod(plan.rotation + direction, 4);
plan.setRotation(Mathf.mod(plan.rotation + direction, 4));
});
}

View File

@@ -106,6 +106,8 @@ public class Block extends UnlockableContent implements Senseable{
public boolean underBullets;
/** whether this is rotatable */
public boolean rotate;
/** if rotate is false and this is true, building rotation is set to 0 regardless of player input */
public boolean lockRotation = true;
/** if rotate is true and this is false, the region won't rotate when drawing */
public boolean rotateDraw = true;
/** if true, schematic flips with this block are inverted. */
@@ -1343,7 +1345,7 @@ public class Block extends UnlockableContent implements Senseable{
public void flipRotation(BuildPlan req, boolean x){
if((x == (req.rotation % 2 == 0)) != invertFlip){
req.rotation = Mathf.mod(req.rotation + 2, 4);
req.setRotation(Mathf.mod(req.rotation + 2, 4));
}
}