Removal of drone requests
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 712 KiB After Width: | Height: | Size: 712 KiB |
@@ -355,7 +355,13 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
|
|||||||
public void drawOver(){
|
public void drawOver(){
|
||||||
if(dead) return;
|
if(dead) return;
|
||||||
|
|
||||||
drawMechanics();
|
if(isBuilding()){
|
||||||
|
if(!state.isPaused()){
|
||||||
|
drawBuilding();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
drawMining();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -10,11 +10,10 @@ import io.anuke.arc.math.*;
|
|||||||
import io.anuke.arc.util.*;
|
import io.anuke.arc.util.*;
|
||||||
import io.anuke.mindustry.content.*;
|
import io.anuke.mindustry.content.*;
|
||||||
import io.anuke.mindustry.entities.type.base.*;
|
import io.anuke.mindustry.entities.type.base.*;
|
||||||
import io.anuke.mindustry.game.EventType.*;
|
|
||||||
import io.anuke.mindustry.game.*;
|
import io.anuke.mindustry.game.*;
|
||||||
|
import io.anuke.mindustry.game.EventType.*;
|
||||||
import io.anuke.mindustry.game.Teams.*;
|
import io.anuke.mindustry.game.Teams.*;
|
||||||
import io.anuke.mindustry.world.*;
|
import io.anuke.mindustry.world.*;
|
||||||
import io.anuke.mindustry.world.Block.*;
|
|
||||||
|
|
||||||
import static io.anuke.arc.Core.camera;
|
import static io.anuke.arc.Core.camera;
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
@@ -131,7 +130,7 @@ public class BlockRenderer implements Disposable{
|
|||||||
if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset(), block.y * tilesize + b.offset()))) continue;
|
if(!camera.bounds(Tmp.r1).grow(tilesize * 2f).overlaps(Tmp.r2.setSize(b.size * tilesize).setCenter(block.x * tilesize + b.offset(), block.y * tilesize + b.offset()))) continue;
|
||||||
|
|
||||||
Draw.alpha(0.5f);
|
Draw.alpha(0.5f);
|
||||||
Draw.mixcol(Pal.accent, 0.2f + Mathf.absin(5f, 0.2f));
|
Draw.mixcol(Color.white, 0.2f + Mathf.absin(Time.globalTime(), 6f, 0.2f));
|
||||||
Draw.rect(b.icon(Cicon.full), block.x * tilesize + b.offset(), block.y * tilesize + b.offset(), b.rotate ? block.rotation * 90 : 0f);
|
Draw.rect(b.icon(Cicon.full), block.x * tilesize + b.offset(), block.y * tilesize + b.offset(), b.rotate ? block.rotation * 90 : 0f);
|
||||||
}
|
}
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
|
|||||||
@@ -7,19 +7,13 @@ import io.anuke.arc.graphics.g2d.*;
|
|||||||
import io.anuke.arc.math.*;
|
import io.anuke.arc.math.*;
|
||||||
import io.anuke.arc.scene.*;
|
import io.anuke.arc.scene.*;
|
||||||
import io.anuke.arc.scene.ui.*;
|
import io.anuke.arc.scene.ui.*;
|
||||||
import io.anuke.arc.util.*;
|
|
||||||
import io.anuke.mindustry.content.*;
|
|
||||||
import io.anuke.mindustry.core.GameState.*;
|
import io.anuke.mindustry.core.GameState.*;
|
||||||
import io.anuke.mindustry.entities.traits.BuilderTrait.*;
|
import io.anuke.mindustry.entities.traits.BuilderTrait.*;
|
||||||
import io.anuke.mindustry.game.EventType.*;
|
import io.anuke.mindustry.game.EventType.*;
|
||||||
import io.anuke.mindustry.gen.*;
|
import io.anuke.mindustry.gen.*;
|
||||||
import io.anuke.mindustry.graphics.*;
|
|
||||||
import io.anuke.mindustry.input.PlaceUtils.*;
|
|
||||||
import io.anuke.mindustry.ui.*;
|
import io.anuke.mindustry.ui.*;
|
||||||
import io.anuke.mindustry.world.*;
|
import io.anuke.mindustry.world.*;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import static io.anuke.arc.Core.scene;
|
import static io.anuke.arc.Core.scene;
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
import static io.anuke.mindustry.input.PlaceMode.*;
|
import static io.anuke.mindustry.input.PlaceMode.*;
|
||||||
@@ -44,7 +38,7 @@ public class DesktopInput extends InputHandler{
|
|||||||
@Override
|
@Override
|
||||||
public void buildUI(Group group){
|
public void buildUI(Group group){
|
||||||
group.fill(t -> {
|
group.fill(t -> {
|
||||||
t.bottom().update(() -> t.getColor().a = Mathf.lerpDelta(t.getColor().a, player.isBuilding() ? 1f : 0f, 0.1f));
|
t.bottom().update(() -> t.getColor().a = Mathf.lerpDelta(t.getColor().a, player.isBuilding() ? 1f : 0f, 0.15f));
|
||||||
t.table(Styles.black6, b -> b.add(Core.bundle.format("cancelbuilding", Core.keybinds.get(Binding.clear_building).key.name())).style(Styles.outlineLabel)).margin(10f);
|
t.table(Styles.black6, b -> b.add(Core.bundle.format("cancelbuilding", Core.keybinds.get(Binding.clear_building).key.name())).style(Styles.outlineLabel)).margin(10f);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -65,36 +59,7 @@ public class DesktopInput extends InputHandler{
|
|||||||
drawRequest(lineRequests.get(i));
|
drawRequest(lineRequests.get(i));
|
||||||
}
|
}
|
||||||
}else if(mode == breaking){
|
}else if(mode == breaking){
|
||||||
NormalizeDrawResult result = PlaceUtils.normalizeDrawArea(Blocks.air, selectX, selectY, cursorX, cursorY, false, maxLength, 1f);
|
drawSelection(selectX, selectY, cursorX, cursorY);
|
||||||
NormalizeResult dresult = PlaceUtils.normalizeArea(selectX, selectY, cursorX, cursorY, rotation, false, maxLength);
|
|
||||||
|
|
||||||
for(int x = dresult.x; x <= dresult.x2; x++){
|
|
||||||
for(int y = dresult.y; y <= dresult.y2; y++){
|
|
||||||
Tile tile = world.ltile(x, y);
|
|
||||||
if(tile == null || !validBreak(tile.x, tile.y)) continue;
|
|
||||||
|
|
||||||
drawBreaking(tile.x, tile.y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Tmp.r1.set(result.x, result.y, result.x2 - result.x, result.y2 - result.y);
|
|
||||||
|
|
||||||
Draw.color(Pal.remove);
|
|
||||||
Lines.stroke(1f);
|
|
||||||
|
|
||||||
for(BuildRequest req : player.buildQueue()){
|
|
||||||
if(req.breaking) continue;
|
|
||||||
if(req.bounds(Tmp.r2).overlaps(Tmp.r1)){
|
|
||||||
drawBreaking(req);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Lines.stroke(2f);
|
|
||||||
|
|
||||||
Draw.color(Pal.removeBack);
|
|
||||||
Lines.rect(result.x, result.y - 1, result.x2 - result.x, result.y2 - result.y);
|
|
||||||
Draw.color(Pal.remove);
|
|
||||||
Lines.rect(result.x, result.y, result.x2 - result.x, result.y2 - result.y);
|
|
||||||
}else if(isPlacing()){
|
}else if(isPlacing()){
|
||||||
if(block.rotate){
|
if(block.rotate){
|
||||||
drawArrow(block, cursorX, cursorY, rotation);
|
drawArrow(block, cursorX, cursorY, rotation);
|
||||||
@@ -257,24 +222,7 @@ public class DesktopInput extends InputHandler{
|
|||||||
lineRequests.clear();
|
lineRequests.clear();
|
||||||
Events.fire(new LineConfirmEvent());
|
Events.fire(new LineConfirmEvent());
|
||||||
}else if(mode == breaking){ //touch up while breaking, break everything in selection
|
}else if(mode == breaking){ //touch up while breaking, break everything in selection
|
||||||
NormalizeResult result = PlaceUtils.normalizeArea(selectX, selectY, cursorX, cursorY, rotation, false, maxLength);
|
removeSelection(selectX, selectY, cursorX, cursorY);
|
||||||
for(int x = 0; x <= Math.abs(result.x2 - result.x); x++){
|
|
||||||
for(int y = 0; y <= Math.abs(result.y2 - result.y); y++){
|
|
||||||
int wx = selectX + x * Mathf.sign(cursorX - selectX);
|
|
||||||
int wy = selectY + y * Mathf.sign(cursorY - selectY);
|
|
||||||
|
|
||||||
tryBreakBlock(wx, wy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Tmp.r1.set(result.x * tilesize, result.y * tilesize, (result.x2 - result.x) * tilesize, (result.y2 - result.y) * tilesize);
|
|
||||||
Iterator<BuildRequest> it = player.buildQueue().iterator();
|
|
||||||
while(it.hasNext()){
|
|
||||||
BuildRequest req = it.next();
|
|
||||||
if(!req.breaking && req.bounds(Tmp.r2).overlaps(Tmp.r1)){
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(selected != null){
|
if(selected != null){
|
||||||
|
|||||||
@@ -20,13 +20,17 @@ import io.anuke.mindustry.entities.effect.*;
|
|||||||
import io.anuke.mindustry.entities.traits.BuilderTrait.*;
|
import io.anuke.mindustry.entities.traits.BuilderTrait.*;
|
||||||
import io.anuke.mindustry.entities.type.*;
|
import io.anuke.mindustry.entities.type.*;
|
||||||
import io.anuke.mindustry.game.EventType.*;
|
import io.anuke.mindustry.game.EventType.*;
|
||||||
|
import io.anuke.mindustry.game.Teams.*;
|
||||||
import io.anuke.mindustry.gen.*;
|
import io.anuke.mindustry.gen.*;
|
||||||
import io.anuke.mindustry.graphics.*;
|
import io.anuke.mindustry.graphics.*;
|
||||||
|
import io.anuke.mindustry.input.PlaceUtils.*;
|
||||||
import io.anuke.mindustry.net.*;
|
import io.anuke.mindustry.net.*;
|
||||||
import io.anuke.mindustry.type.*;
|
import io.anuke.mindustry.type.*;
|
||||||
import io.anuke.mindustry.ui.fragments.*;
|
import io.anuke.mindustry.ui.fragments.*;
|
||||||
import io.anuke.mindustry.world.*;
|
import io.anuke.mindustry.world.*;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
|
||||||
public abstract class InputHandler implements InputProcessor, GestureListener{
|
public abstract class InputHandler implements InputProcessor, GestureListener{
|
||||||
@@ -189,18 +193,23 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void drawSelected(int x, int y, Block block, Color color){
|
||||||
|
Draw.color(Pal.remove);
|
||||||
|
for(int i = 0; i < 4; i++){
|
||||||
|
Point2 p = Geometry.d8edge[i];
|
||||||
|
float offset = -Math.max(block.size - 1, 0) / 2f * tilesize;
|
||||||
|
Draw.rect("block-select",
|
||||||
|
x*tilesize + block.offset() + offset * p.x,
|
||||||
|
y*tilesize + block.offset() + offset * p.y, i * 90);
|
||||||
|
}
|
||||||
|
Draw.reset();
|
||||||
|
}
|
||||||
|
|
||||||
public void drawBreaking(BuildRequest request){
|
public void drawBreaking(BuildRequest request){
|
||||||
if(request.breaking){
|
if(request.breaking){
|
||||||
drawBreaking(request.x, request.y);
|
drawBreaking(request.x, request.y);
|
||||||
}else{
|
}else{
|
||||||
Block block = request.block;
|
drawSelected(request.x, request.y, request.block, Pal.remove);
|
||||||
Draw.color(Pal.remove);
|
|
||||||
for(int i = 0; i < 4; i++){
|
|
||||||
Point2 p = Geometry.d8edge[i];
|
|
||||||
float offset = -Math.max(block.size - 1, 0) / 2f * tilesize;
|
|
||||||
Draw.rect("block-select", request.drawx() + offset * p.x, request.drawy() + offset * p.y, i * 90);
|
|
||||||
}
|
|
||||||
Draw.reset();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,13 +218,47 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
if(tile == null) return;
|
if(tile == null) return;
|
||||||
Block block = tile.block();
|
Block block = tile.block();
|
||||||
|
|
||||||
Draw.color(Pal.remove);
|
drawSelected(x, y, block, Pal.remove);
|
||||||
for(int i = 0; i < 4; i++){
|
}
|
||||||
Point2 p = Geometry.d8edge[i];
|
|
||||||
float offset = -Math.max(block.size - 1, 0) / 2f * tilesize;
|
protected void drawSelection(int x1, int y1, int x2, int y2){
|
||||||
Draw.rect("block-select", x * tilesize + block.offset() + offset * p.x, y * tilesize + block.offset() + offset * p.y, i * 90);
|
NormalizeDrawResult result = PlaceUtils.normalizeDrawArea(Blocks.air, x1, y1, x2, y2, false, maxLength, 1f);
|
||||||
|
NormalizeResult dresult = PlaceUtils.normalizeArea(x1, y1, x2, y2, rotation, false, maxLength);
|
||||||
|
|
||||||
|
for(int x = dresult.x; x <= dresult.x2; x++){
|
||||||
|
for(int y = dresult.y; y <= dresult.y2; y++){
|
||||||
|
Tile tile = world.ltile(x, y);
|
||||||
|
if(tile == null || !validBreak(tile.x, tile.y)) continue;
|
||||||
|
|
||||||
|
drawBreaking(tile.x, tile.y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Draw.reset();
|
|
||||||
|
Tmp.r1.set(result.x, result.y, result.x2 - result.x, result.y2 - result.y);
|
||||||
|
|
||||||
|
Draw.color(Pal.remove);
|
||||||
|
Lines.stroke(1f);
|
||||||
|
|
||||||
|
for(BuildRequest req : player.buildQueue()){
|
||||||
|
if(req.breaking) continue;
|
||||||
|
if(req.bounds(Tmp.r2).overlaps(Tmp.r1)){
|
||||||
|
drawBreaking(req);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(BrokenBlock req : state.teams.get(player.getTeam()).brokenBlocks){
|
||||||
|
Block block = content.block(req.block);
|
||||||
|
if(block.bounds(req.x, req.y, Tmp.r2).overlaps(Tmp.r1)){
|
||||||
|
drawSelected(req.x, req.y, content.block(req.block), Pal.remove);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Lines.stroke(2f);
|
||||||
|
|
||||||
|
Draw.color(Pal.removeBack);
|
||||||
|
Lines.rect(result.x, result.y - 1, result.x2 - result.x, result.y2 - result.y);
|
||||||
|
Draw.color(Pal.remove);
|
||||||
|
Lines.rect(result.x, result.y, result.x2 - result.x, result.y2 - result.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void flushRequests(Array<BuildRequest> requests){
|
protected void flushRequests(Array<BuildRequest> requests){
|
||||||
@@ -236,6 +279,39 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
block.drawRequest(brequest, allRequests(), validPlace(x, y, block, rotation));
|
block.drawRequest(brequest, allRequests(), validPlace(x, y, block, rotation));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Remove everything from the queue in a selection. */
|
||||||
|
protected void removeSelection(int x1, int y1, int x2, int y2){
|
||||||
|
NormalizeResult result = PlaceUtils.normalizeArea(x1, y1, x2, y2, rotation, false, maxLength);
|
||||||
|
for(int x = 0; x <= Math.abs(result.x2 - result.x); x++){
|
||||||
|
for(int y = 0; y <= Math.abs(result.y2 - result.y); y++){
|
||||||
|
int wx = x1 + x * Mathf.sign(x2 - x1);
|
||||||
|
int wy = y1 + y * Mathf.sign(y2 - y1);
|
||||||
|
|
||||||
|
tryBreakBlock(wx, wy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//remove build requests
|
||||||
|
Tmp.r1.set(result.x * tilesize, result.y * tilesize, (result.x2 - result.x) * tilesize, (result.y2 - result.y) * tilesize);
|
||||||
|
Iterator<BuildRequest> it = player.buildQueue().iterator();
|
||||||
|
while(it.hasNext()){
|
||||||
|
BuildRequest req = it.next();
|
||||||
|
if(!req.breaking && req.bounds(Tmp.r2).overlaps(Tmp.r1)){
|
||||||
|
it.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//remove blocks to rebuild
|
||||||
|
Iterator<BrokenBlock> broken = state.teams.get(player.getTeam()).brokenBlocks.iterator();
|
||||||
|
while(broken.hasNext()){
|
||||||
|
BrokenBlock req = broken.next();
|
||||||
|
Block block = content.block(req.block);
|
||||||
|
if(block.bounds(req.x, req.y, Tmp.r2).overlaps(Tmp.r1)){
|
||||||
|
broken.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void updateLine(int selectX, int selectY){
|
protected void updateLine(int selectX, int selectY){
|
||||||
lineRequests.clear();
|
lineRequests.clear();
|
||||||
iterateLine(selectX, selectY, tileX(getMouseX()), tileY(getMouseY()), l -> {
|
iterateLine(selectX, selectY, tileX(getMouseX()), tileY(getMouseY()), l -> {
|
||||||
|
|||||||
@@ -48,8 +48,6 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
/** Used for shifting build requests. */
|
/** Used for shifting build requests. */
|
||||||
private float shiftDeltaX, shiftDeltaY;
|
private float shiftDeltaX, shiftDeltaY;
|
||||||
|
|
||||||
/** List of currently selected tiles to place. */
|
|
||||||
private Array<BuildRequest> selection = new Array<>();
|
|
||||||
/** Place requests to be removed. */
|
/** Place requests to be removed. */
|
||||||
private Array<BuildRequest> removals = new Array<>();
|
private Array<BuildRequest> removals = new Array<>();
|
||||||
/** Whether or not the player is currently shifting all placed tiles. */
|
/** Whether or not the player is currently shifting all placed tiles. */
|
||||||
@@ -98,7 +96,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
r2.setSize(block.size * tilesize);
|
r2.setSize(block.size * tilesize);
|
||||||
r2.setCenter(x * tilesize + block.offset(), y * tilesize + block.offset());
|
r2.setCenter(x * tilesize + block.offset(), y * tilesize + block.offset());
|
||||||
|
|
||||||
for(BuildRequest req : selection){
|
for(BuildRequest req : selectRequests){
|
||||||
Tile other = req.tile();
|
Tile other = req.tile();
|
||||||
|
|
||||||
if(other == null || req.breaking) continue;
|
if(other == null || req.breaking) continue;
|
||||||
@@ -131,7 +129,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
r2.setSize(tilesize);
|
r2.setSize(tilesize);
|
||||||
r2.setCenter(tile.worldx(), tile.worldy());
|
r2.setCenter(tile.worldx(), tile.worldy());
|
||||||
|
|
||||||
for(BuildRequest req : selection){
|
for(BuildRequest req : selectRequests){
|
||||||
Tile other = req.tile();
|
Tile other = req.tile();
|
||||||
|
|
||||||
if(other == null) continue;
|
if(other == null) continue;
|
||||||
@@ -156,7 +154,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
void removeRequest(BuildRequest request){
|
void removeRequest(BuildRequest request){
|
||||||
selection.removeValue(request, true);
|
selectRequests.removeValue(request, true);
|
||||||
removals.add(request);
|
removals.add(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -194,7 +192,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
|
|
||||||
//confirm button
|
//confirm button
|
||||||
table.addImageButton(Icon.checkSmall, Styles.clearPartiali, () -> {
|
table.addImageButton(Icon.checkSmall, Styles.clearPartiali, () -> {
|
||||||
for(BuildRequest request : selection){
|
for(BuildRequest request : selectRequests){
|
||||||
Tile tile = request.tile();
|
Tile tile = request.tile();
|
||||||
|
|
||||||
//actually place/break all selected blocks
|
//actually place/break all selected blocks
|
||||||
@@ -212,10 +210,10 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//move all current requests to removal array so they fade out
|
//move all current requests to removal array so they fade out
|
||||||
removals.addAll(selection);
|
removals.addAll(selectRequests);
|
||||||
selection.clear();
|
selectRequests.clear();
|
||||||
selecting = false;
|
selecting = false;
|
||||||
}).visible(() -> !selection.isEmpty()).name("confirmplace");
|
}).visible(() -> !selectRequests.isEmpty()).name("confirmplace");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -232,7 +230,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isDrawing(){
|
public boolean isDrawing(){
|
||||||
return selection.size > 0 || removals.size > 0 || lineMode || player.target != null || mode != PlaceMode.none;
|
return selectRequests.size > 0 || removals.size > 0 || lineMode || player.target != null || mode != PlaceMode.none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -257,7 +255,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//draw list of requests
|
//draw list of requests
|
||||||
for(BuildRequest request : selection){
|
for(BuildRequest request : selectRequests){
|
||||||
Tile tile = request.tile();
|
Tile tile = request.tile();
|
||||||
|
|
||||||
if(tile == null) continue;
|
if(tile == null) continue;
|
||||||
@@ -296,7 +294,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
int tileX = tileX(Core.input.mouseX());
|
int tileX = tileX(Core.input.mouseX());
|
||||||
int tileY = tileY(Core.input.mouseY());
|
int tileY = tileY(Core.input.mouseY());
|
||||||
|
|
||||||
if(mode == placing && block != null){
|
/*if(mode == placing && block != null){
|
||||||
//draw placing
|
//draw placing
|
||||||
|
|
||||||
iterateLine(lineStartX, lineStartY, tileX, tileY, l -> {
|
iterateLine(lineStartX, lineStartY, tileX, tileY, l -> {
|
||||||
@@ -307,7 +305,8 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
|
|
||||||
rotation = l.rotation;
|
rotation = l.rotation;
|
||||||
});
|
});
|
||||||
}else if(mode == breaking){
|
}else */
|
||||||
|
if(mode == breaking){
|
||||||
//draw breaking
|
//draw breaking
|
||||||
NormalizeDrawResult result = PlaceUtils.normalizeDrawArea(Blocks.air, lineStartX, lineStartY, tileX, tileY, false, maxLength, 1f);
|
NormalizeDrawResult result = PlaceUtils.normalizeDrawArea(Blocks.air, lineStartX, lineStartY, tileX, tileY, false, maxLength, 1f);
|
||||||
NormalizeResult dresult = PlaceUtils.normalizeArea(lineStartX, lineStartY, tileX, tileY, rotation, false, maxLength);
|
NormalizeResult dresult = PlaceUtils.normalizeArea(lineStartX, lineStartY, tileX, tileY, rotation, false, maxLength);
|
||||||
@@ -330,7 +329,6 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
Lines.rect(result.x, result.y, result.x2 - result.x, result.y2 - result.y);
|
Lines.rect(result.x, result.y, result.x2 - result.x, result.y2 - result.y);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TargetTrait target = player.target;
|
TargetTrait target = player.target;
|
||||||
@@ -409,7 +407,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
|
|
||||||
BuildRequest request = new BuildRequest(l.x, l.y, l.rotation, block);
|
BuildRequest request = new BuildRequest(l.x, l.y, l.rotation, block);
|
||||||
request.animScale = 1f;
|
request.animScale = 1f;
|
||||||
selection.add(request);
|
selectRequests.add(request);
|
||||||
});
|
});
|
||||||
Events.fire(new LineConfirmEvent());
|
Events.fire(new LineConfirmEvent());
|
||||||
}else if(mode == breaking){
|
}else if(mode == breaking){
|
||||||
@@ -429,7 +427,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
if(!hasRequest(world.tile(tar.x, tar.y)) && validBreak(tar.x, tar.y)){
|
if(!hasRequest(world.tile(tar.x, tar.y)) && validBreak(tar.x, tar.y)){
|
||||||
BuildRequest request = new BuildRequest(tar.x, tar.y);
|
BuildRequest request = new BuildRequest(tar.x, tar.y);
|
||||||
request.animScale = 1f;
|
request.animScale = 1f;
|
||||||
selection.add(request);
|
selectRequests.add(request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -490,11 +488,11 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
removeRequest(getRequest(cursor));
|
removeRequest(getRequest(cursor));
|
||||||
}else if(mode == placing && isPlacing() && validPlace(cursor.x, cursor.y, block, rotation) && !checkOverlapPlacement(cursor.x, cursor.y, block)){
|
}else if(mode == placing && isPlacing() && validPlace(cursor.x, cursor.y, block, rotation) && !checkOverlapPlacement(cursor.x, cursor.y, block)){
|
||||||
//add to selection queue if it's a valid place position
|
//add to selection queue if it's a valid place position
|
||||||
selection.add(lastPlaced = new BuildRequest(cursor.x, cursor.y, rotation, block));
|
selectRequests.add(lastPlaced = new BuildRequest(cursor.x, cursor.y, rotation, block));
|
||||||
}else if(mode == breaking && validBreak(cursor.link().x, cursor.link().y) && !hasRequest(cursor.link())){
|
}else if(mode == breaking && validBreak(cursor.link().x, cursor.link().y) && !hasRequest(cursor.link())){
|
||||||
//add to selection queue if it's a valid BREAK position
|
//add to selection queue if it's a valid BREAK position
|
||||||
cursor = cursor.link();
|
cursor = cursor.link();
|
||||||
selection.add(new BuildRequest(cursor.x, cursor.y));
|
selectRequests.add(new BuildRequest(cursor.x, cursor.y));
|
||||||
}else if(!canTapPlayer(worldx, worldy) && !tileTapped(cursor.link())){
|
}else if(!canTapPlayer(worldx, worldy) && !tileTapped(cursor.link())){
|
||||||
tryBeginMine(cursor);
|
tryBeginMine(cursor);
|
||||||
}
|
}
|
||||||
@@ -505,7 +503,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
@Override
|
@Override
|
||||||
public void update(){
|
public void update(){
|
||||||
if(state.is(State.menu) || player.isDead()){
|
if(state.is(State.menu) || player.isDead()){
|
||||||
selection.clear();
|
selectRequests.clear();
|
||||||
removals.clear();
|
removals.clear();
|
||||||
mode = none;
|
mode = none;
|
||||||
}
|
}
|
||||||
@@ -535,8 +533,8 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
if(mode == none){
|
if(mode == none){
|
||||||
selecting = false;
|
selecting = false;
|
||||||
lineMode = false;
|
lineMode = false;
|
||||||
removals.addAll(selection);
|
removals.addAll(selectRequests);
|
||||||
selection.clear();
|
selectRequests.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(lineMode && mode == placing && block == null){
|
if(lineMode && mode == placing && block == null){
|
||||||
@@ -628,7 +626,7 @@ public class MobileInput extends InputHandler implements GestureListener{
|
|||||||
int shiftedY = (int)(shiftDeltaY / tilesize);
|
int shiftedY = (int)(shiftDeltaY / tilesize);
|
||||||
|
|
||||||
if(Math.abs(shiftedX) > 0 || Math.abs(shiftedY) > 0){
|
if(Math.abs(shiftedX) > 0 || Math.abs(shiftedY) > 0){
|
||||||
for(BuildRequest req : selection){
|
for(BuildRequest req : selectRequests){
|
||||||
if(req.breaking) continue; //don't shift removal requests
|
if(req.breaking) continue; //don't shift removal requests
|
||||||
req.x += shiftedX;
|
req.x += shiftedX;
|
||||||
req.y += shiftedY;
|
req.y += shiftedY;
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ public abstract class SaveVersion extends SaveFileReader{
|
|||||||
TeamData data = state.teams.get(team);
|
TeamData data = state.teams.get(team);
|
||||||
int blocks = stream.readInt();
|
int blocks = stream.readInt();
|
||||||
for(int j = 0; j < blocks; j++){
|
for(int j = 0; j < blocks; j++){
|
||||||
data.brokenBlocks.addLast(new BrokenBlock(stream.readShort(), stream.readShort(), stream.readShort(), stream.readShort(), stream.readInt()));
|
data.brokenBlocks.addLast(new BrokenBlock(stream.readShort(), stream.readShort(), stream.readShort(), content.block(stream.readShort()).id, stream.readInt()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -669,7 +669,7 @@ public class Block extends BlockStorage{
|
|||||||
|
|
||||||
public void drawRequest(BuildRequest req, Eachable<BuildRequest> list, boolean valid){
|
public void drawRequest(BuildRequest req, Eachable<BuildRequest> list, boolean valid){
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
Draw.mixcol(!valid ? Pal.breakInvalid : Pal.accent, 0.24f + Mathf.absin(Time.globalTime(), 7f, 0.3f));
|
Draw.mixcol(!valid ? Pal.breakInvalid : Color.white, (!valid ? 0.4f : 0.24f) + Mathf.absin(Time.globalTime(), 6f, 0.28f));
|
||||||
Draw.alpha(1f);
|
Draw.alpha(1f);
|
||||||
drawRequestRegion(req, list);
|
drawRequestRegion(req, list);
|
||||||
Draw.reset();
|
Draw.reset();
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
org.gradle.daemon=true
|
org.gradle.daemon=true
|
||||||
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
||||||
archash=5b52af54b7f87db9732c4fa97781b2f2ae09c5ab
|
archash=92070bb15802eb8a37b9c0734caffc6fecb557fc
|
||||||
|
|||||||
Reference in New Issue
Block a user