Upgradeable cores

This commit is contained in:
Anuken
2020-06-27 19:16:39 -04:00
parent 313cadb763
commit 80332e37d5
63 changed files with 365 additions and 290 deletions

View File

@@ -272,8 +272,8 @@ public class DesktopInput extends InputHandler{
Tile cursor = tileAt(Core.input.mouseX(), Core.input.mouseY());
if(cursor != null){
if(cursor.entity != null){
cursorType = cursor.entity.getCursor();
if(cursor.build != null){
cursorType = cursor.build.getCursor();
}
if(isPlacing() || !selectRequests.isEmpty()){
@@ -292,8 +292,8 @@ public class DesktopInput extends InputHandler{
cursorType = ui.unloadCursor;
}
if(cursor.entity != null && cursor.interactable(player.team()) && !isPlacing() && Math.abs(Core.input.axisTap(Binding.rotate)) > 0 && Core.input.keyDown(Binding.rotateplaced) && cursor.block().rotate){
Call.rotateBlock(player, cursor.entity, Core.input.axisTap(Binding.rotate) > 0);
if(cursor.build != null && cursor.interactable(player.team()) && !isPlacing() && Math.abs(Core.input.axisTap(Binding.rotate)) > 0 && Core.input.keyDown(Binding.rotateplaced) && cursor.block().rotate){
Call.rotateBlock(player, cursor.build, Core.input.axisTap(Binding.rotate) > 0);
}
}
@@ -445,7 +445,7 @@ public class DesktopInput extends InputHandler{
deleting = true;
}else if(selected != null){
//only begin shooting if there's no cursor event
if(!tileTapped(selected.entity) && !tryTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y) && (player.builder().plans().size == 0 || !player.builder().isBuilding()) && !droppingItem &&
if(!tileTapped(selected.build) && !tryTapPlayer(Core.input.mouseWorld().x, Core.input.mouseWorld().y) && (player.builder().plans().size == 0 || !player.builder().isBuilding()) && !droppingItem &&
!tryBeginMine(selected) && player.miner().mineTile() == null && !Core.scene.hasKeyboard()){
isShooting = shouldShoot;
}
@@ -494,7 +494,7 @@ public class DesktopInput extends InputHandler{
removeSelection(selectX, selectY, cursorX, cursorY);
}
tryDropItems(selected == null ? null : selected.entity, Core.input.mouseWorld().x, Core.input.mouseWorld().y);
tryDropItems(selected == null ? null : selected.build, Core.input.mouseWorld().x, Core.input.mouseWorld().y);
if(sreq != null){
if(getRequest(sreq.x, sreq.y, sreq.block.size, sreq) != null){

View File

@@ -85,11 +85,11 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
@Remote(called = Loc.server, unreliable = true)
public static void transferItemTo(Item item, int amount, float x, float y, Tile tile){
if(tile == null || tile.entity == null || tile.entity.items == null) return;
if(tile == null || tile.build == null || tile.build.items == null) return;
for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){
Time.run(i * 3, () -> createItemTransfer(item, amount, x, y, tile, () -> {}));
}
tile.entity.items.add(item, amount);
tile.build.items.add(item, amount);
}
public static void createItemTransfer(Item item, int amount, float x, float y, Position to, Runnable done){
@@ -327,7 +327,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
public boolean requestMatches(BuildPlan request){
Tile tile = world.tile(request.x, request.y);
return tile != null && tile.block() instanceof BuildBlock && tile.<BuildEntity>ent().cblock == request.block;
return tile != null && tile.block() instanceof BuildBlock && tile.<BuildEntity>bc().cblock == request.block;
}
public void drawBreaking(int x, int y){
@@ -925,7 +925,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
public void breakBlock(int x, int y){
Tile tile = world.tile(x, y);
//TODO hacky
if(tile != null && tile.entity != null) tile = tile.entity.tile();
if(tile != null && tile.build != null) tile = tile.build.tile();
player.builder().addBuild(new BuildPlan(tile.x, tile.y));
}

View File

@@ -496,9 +496,9 @@ public class MobileInput extends InputHandler implements GestureListener{
}else{
Tile tile = tileAt(screenX, screenY);
if(tile == null || tile.entity == null) return false;
if(tile == null || tile.build == null) return false;
tryDropItems(tile.entity, Core.input.mouseWorld(screenX, screenY).x, Core.input.mouseWorld(screenX, screenY).y);
tryDropItems(tile.build, Core.input.mouseWorld(screenX, screenY).x, Core.input.mouseWorld(screenX, screenY).y);
}
return false;
}
@@ -542,7 +542,7 @@ public class MobileInput extends InputHandler implements GestureListener{
//ignore off-screen taps
if(cursor == null || Core.scene.hasMouse(x, y)) return false;
Tile linked = cursor.entity == null ? cursor : cursor.entity.tile();
Tile linked = cursor.build == null ? cursor : cursor.build.tile();
checkTargets(worldx, worldy);
@@ -555,7 +555,7 @@ public class MobileInput extends InputHandler implements GestureListener{
}else if(mode == breaking && validBreak(linked.x,linked.y) && !hasRequest(linked)){
//add to selection queue if it's a valid BREAK position
selectRequests.add(new BuildPlan(linked.x, linked.y));
}else if(!canTapPlayer(worldx, worldy) && !tileTapped(linked.entity)){
}else if(!canTapPlayer(worldx, worldy) && !tileTapped(linked.build)){
tryBeginMine(cursor);
}