Lock rotation of blocks with rotate = false to 0 (#8531)

* Lock rotation of blocks that don't rotate

* Fix input visuals

* Default to false

Quick, stop forcing changes to mods before sk yells at me.

* lock GenericCrafter rotation if rotate = false

* Convert from a setter a to block method

* Simplify

* Revert "lock GenericCrafter rotation if rotate = false"

This reverts commit 26ac41baf5.

* Remove `lockRotation` boolean.

Pointless. If you want something to rotate, just do `rotate = true; drawArrow = false;`
This commit is contained in:
MEEPofFaith
2023-06-16 12:57:54 -07:00
committed by GitHub
parent d14cdfd59c
commit 26c0c7467b
5 changed files with 19 additions and 12 deletions

View File

@@ -37,7 +37,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;
this.rotation = block.planRotation(rotation);
this.block = block;
this.breaking = false;
}
@@ -46,7 +46,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;
this.rotation = block.planRotation(rotation);
this.block = block;
this.breaking = false;
this.config = config;
@@ -138,7 +138,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;
this.rotation = block.planRotation(rotation);
this.block = block;
this.breaking = false;
return this;

View File

@@ -178,17 +178,18 @@ public class DesktopInput extends InputHandler{
}
linePlans.each(this::drawOverPlan);
}else if(isPlacing()){
int rot = block.planRotation(rotation);
if(block.rotate && block.drawArrow){
drawArrow(block, cursorX, cursorY, rotation);
drawArrow(block, cursorX, cursorY, rot);
}
Draw.color();
boolean valid = validPlace(cursorX, cursorY, block, rotation);
drawPlan(cursorX, cursorY, block, rotation);
block.drawPlace(cursorX, cursorY, rotation, valid);
boolean valid = validPlace(cursorX, cursorY, block, rot);
drawPlan(cursorX, cursorY, block, rot);
block.drawPlace(cursorX, cursorY, rot, valid);
if(block.saveConfig){
Draw.mixcol(!valid ? Pal.breakInvalid : Color.white, (!valid ? 0.4f : 0.24f) + Mathf.absin(Time.globalTime, 6f, 0.28f));
bplan.set(cursorX, cursorY, rotation, block);
bplan.set(cursorX, cursorY, rot, block);
bplan.config = block.lastConfig;
block.drawPlanConfig(bplan, allPlans());
bplan.config = null;

View File

@@ -1044,7 +1044,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.rotation = plan.block.planRotation(Mathf.mod(plan.rotation + direction, 4));
});
}

View File

@@ -415,9 +415,10 @@ public class MobileInput extends InputHandler implements GestureListener{
//draw last placed plan
if(!plan.breaking && plan == lastPlaced && plan.block != null){
boolean valid = validPlace(tile.x, tile.y, plan.block, rotation);
int rot = block.planRotation(rotation);
boolean valid = validPlace(tile.x, tile.y, plan.block, rot);
Draw.mixcol();
plan.block.drawPlace(tile.x, tile.y, rotation, valid);
plan.block.drawPlace(tile.x, tile.y, rot, valid);
drawOverlapCheck(plan.block, tile.x, tile.y, valid);
}

View File

@@ -1341,9 +1341,14 @@ public class Block extends UnlockableContent implements Senseable{
packer.add(PageType.editor, name + "-icon-editor", editorBase);
}
public int planRotation(int rot){
if(!rotate) return 0;
return rot;
}
public void flipRotation(BuildPlan req, boolean x){
if((x == (req.rotation % 2 == 0)) != invertFlip){
req.rotation = Mathf.mod(req.rotation + 2, 4);
req.rotation = planRotation(Mathf.mod(req.rotation + 2, 4));
}
}