Mobile manual aiming / Mobile control changes [UNSTABLE]

This commit is contained in:
Anuken
2020-10-07 14:19:08 -04:00
parent 583a12a47b
commit 30f5340a22
25 changed files with 223 additions and 224 deletions

View File

@@ -50,7 +50,7 @@ public class BlockForge extends PayloadAcceptor{
Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90);
}
public class BlockForgeBuild extends PayloadAcceptorBuild<BlockPayload>{
public class BlockForgeBuild extends PayloadAcceptorBuild<BuildPayload>{
public @Nullable Block recipe;
public float progress, time, heat;
@@ -82,7 +82,7 @@ public class BlockForge extends PayloadAcceptor{
if(progress >= recipe.buildCost){
consume();
payload = new BlockPayload(recipe, team);
payload = new BuildPayload(recipe, team);
progress = 0f;
}
}else{

View File

@@ -50,13 +50,13 @@ public class BlockLoader extends PayloadAcceptor{
Draw.rect(topRegion, req.drawx(), req.drawy());
}
public class BlockLoaderBuild extends PayloadAcceptorBuild<BlockPayload>{
public class BlockLoaderBuild extends PayloadAcceptorBuild<BuildPayload>{
@Override
public boolean acceptPayload(Building source, Payload payload){
return super.acceptPayload(source, payload) &&
(payload instanceof BlockPayload) &&
((((BlockPayload)payload).entity.block.hasItems && ((BlockPayload)payload).block().unloadable && ((BlockPayload)payload).block().itemCapacity >= 10)/* ||
(payload instanceof BuildPayload) &&
((((BuildPayload)payload).build.block.hasItems && ((BuildPayload)payload).block().unloadable && ((BuildPayload)payload).block().itemCapacity >= 10)/* ||
((BlockPayload)payload).entity.block().hasLiquids && ((BlockPayload)payload).block().liquidCapacity >= 10f)*/);
}
@@ -101,8 +101,8 @@ public class BlockLoader extends PayloadAcceptor{
for(int i = 0; i < items.length(); i++){
if(items.get(i) > 0){
Item item = content.item(i);
if(payload.entity.acceptItem(payload.entity, item)){
payload.entity.handleItem(payload.entity, item);
if(payload.build.acceptItem(payload.build, item)){
payload.build.handleItem(payload.build, item);
items.remove(item, 1);
break;
}
@@ -127,13 +127,13 @@ public class BlockLoader extends PayloadAcceptor{
}
public float fraction(){
return payload == null ? 0f : payload.entity.items.total() / (float)payload.entity.block.itemCapacity;
return payload == null ? 0f : payload.build.items.total() / (float)payload.build.block.itemCapacity;
}
public boolean shouldExport(){
return payload != null &&
((payload.block().hasLiquids && payload.entity.liquids.total() >= payload.block().liquidCapacity - 0.001f) ||
(payload.block().hasItems && payload.entity.items.total() >= payload.block().itemCapacity));
((payload.block().hasLiquids && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) ||
(payload.block().hasItems && payload.build.items.total() >= payload.block().itemCapacity));
}
}
}

View File

@@ -35,9 +35,9 @@ public class BlockUnloader extends BlockLoader{
//load up items a set amount of times
for(int j = 0; j < itemsLoaded && !full(); j++){
for(int i = 0; i < items.length(); i++){
if(payload.entity.items.get(i) > 0){
if(payload.build.items.get(i) > 0){
Item item = content.item(i);
payload.entity.items.remove(item, 1);
payload.build.items.remove(item, 1);
items.add(item, 1);
break;
}
@@ -56,12 +56,12 @@ public class BlockUnloader extends BlockLoader{
@Override
public float fraction(){
return payload == null ? 0f : 1f - payload.entity.items.total() / (float)payload.entity.block.itemCapacity;
return payload == null ? 0f : 1f - payload.build.items.total() / (float)payload.build.block.itemCapacity;
}
@Override
public boolean shouldExport(){
return payload != null && (payload.block().hasItems && payload.entity.items.empty());
return payload != null && (payload.block().hasItems && payload.build.items.empty());
}
}
}

View File

@@ -129,8 +129,7 @@ public class LogicBlock extends Block{
@Override
public Object pointConfig(Object config, Cons<Point2> transformer){
if(config instanceof byte[]){
byte[] data = (byte[])config;
if(config instanceof byte[] data){
try(DataInputStream stream = new DataInputStream(new InflaterInputStream(new ByteArrayInputStream(data)))){
//discard version for now

View File

@@ -1,60 +0,0 @@
package mindustry.world.blocks.payloads;
import arc.graphics.g2d.*;
import arc.util.io.*;
import mindustry.game.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.ui.*;
import mindustry.world.*;
import static mindustry.Vars.*;
public class BlockPayload implements Payload{
public Building entity;
public BlockPayload(Block block, Team team){
this.entity = block.newBuilding().create(block, team);
}
public BlockPayload(Building entity){
this.entity = entity;
}
public Block block(){
return entity.block;
}
public void place(Tile tile){
place(tile, 0);
}
public void place(Tile tile, int rotation){
tile.setBlock(entity.block, entity.team, rotation, () -> entity);
entity.dropped();
}
@Override
public float size(){
return entity.block.size * tilesize;
}
@Override
public void write(Writes write){
write.b(payloadBlock);
write.s(entity.block.id);
write.b(entity.version());
entity.writeAll(write);
}
@Override
public void set(float x, float y, float rotation){
entity.set(x, y);
}
@Override
public void draw(){
Drawf.shadow(entity.x, entity.y, entity.block.size * tilesize * 2f);
Draw.rect(entity.block.icon(Cicon.full), entity.x, entity.y);
}
}

View File

@@ -0,0 +1,60 @@
package mindustry.world.blocks.payloads;
import arc.graphics.g2d.*;
import arc.util.io.*;
import mindustry.game.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.ui.*;
import mindustry.world.*;
import static mindustry.Vars.*;
public class BuildPayload implements Payload{
public Building build;
public BuildPayload(Block block, Team team){
this.build = block.newBuilding().create(block, team);
}
public BuildPayload(Building build){
this.build = build;
}
public Block block(){
return build.block;
}
public void place(Tile tile){
place(tile, 0);
}
public void place(Tile tile, int rotation){
tile.setBlock(build.block, build.team, rotation, () -> build);
build.dropped();
}
@Override
public float size(){
return build.block.size * tilesize;
}
@Override
public void write(Writes write){
write.b(payloadBlock);
write.s(build.block.id);
write.b(build.version());
build.writeAll(write);
}
@Override
public void set(float x, float y, float rotation){
build.set(x, y);
}
@Override
public void draw(){
Drawf.shadow(build.x, build.y, build.block.size * tilesize * 2f);
Draw.rect(build.block.icon(Cicon.full), build.x, build.y);
}
}

View File

@@ -51,9 +51,9 @@ public interface Payload{
byte type = read.b();
if(type == payloadBlock){
Block block = content.block(read.s());
BlockPayload payload = new BlockPayload(block, Team.derelict);
BuildPayload payload = new BuildPayload(block, Team.derelict);
byte version = read.b();
payload.entity.readAll(read, version);
payload.build.readAll(read, version);
return (T)payload;
}else if(type == payloadUnit){
byte id = read.b();