Mobile manual aiming / Mobile control changes [UNSTABLE]
This commit is contained in:
@@ -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{
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
60
core/src/mindustry/world/blocks/payloads/BuildPayload.java
Normal file
60
core/src/mindustry/world/blocks/payloads/BuildPayload.java
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user