Name refactor / Fixed crash / Power transfer fix

This commit is contained in:
Anuken
2018-09-19 22:17:58 -04:00
parent c9a53aed7b
commit 5248a4eb9c
50 changed files with 88 additions and 99 deletions

View File

@@ -134,7 +134,7 @@ public class DebugBlocks extends BlockList implements ContentList{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new LiquidSourceEntity(); return new LiquidSourceEntity();
} }
}; };

View File

@@ -172,12 +172,12 @@ public class UI extends SceneModule{
Group group = Core.scene.getRoot(); Group group = Core.scene.getRoot();
backfrag.build(group); backfrag.build(group);
control.input(0).getFrag().build(Core.scene.getRoot());
hudfrag.build(group); hudfrag.build(group);
menufrag.build(group); menufrag.build(group);
chatfrag.container().build(group); chatfrag.container().build(group);
listfrag.build(group); listfrag.build(group);
loadfrag.build(group); loadfrag.build(group);
} }
@Override @Override

View File

@@ -48,7 +48,6 @@ public abstract class InputHandler extends InputAdapter{
public InputHandler(Player player){ public InputHandler(Player player){
this.player = player; this.player = player;
this.section = "player_" + (player.playerIndex + 1); this.section = "player_" + (player.playerIndex + 1);
Timers.run(1f, () -> frag.build(Core.scene.getRoot()));
} }
//methods to override //methods to override
@@ -122,6 +121,10 @@ public abstract class InputHandler extends InputAdapter{
tile.block().tapped(tile, player); tile.block().tapped(tile, player);
} }
public OverlayFragment getFrag(){
return frag;
}
public void update(){ public void update(){
} }

View File

@@ -159,6 +159,11 @@ public class Block extends BaseBlock {
out.add(other); out.add(other);
} }
} }
for(int i = 0; i < tile.entity.power.links.size; i++){
Tile link = world.tile(tile.entity.power.links.get(i));
if(link != null) out.add(link);
}
return out; return out;
} }
@@ -468,7 +473,7 @@ public class Block extends BaseBlock {
return destructible || update; return destructible || update;
} }
public TileEntity getEntity(){ public TileEntity newEntity(){
return new TileEntity(); return new TileEntity();
} }

View File

@@ -416,7 +416,7 @@ public class Tile implements PosTrait, TargetTrait{
Block block = block(); Block block = block();
if(block.hasEntity()){ if(block.hasEntity()){
entity = block.getEntity().init(this, block.update); entity = block.newEntity().init(this, block.update);
entity.cons = new ConsumeModule(); entity.cons = new ConsumeModule();
if(block.hasItems) entity.items = new InventoryModule(); if(block.hasItems) entity.items = new InventoryModule();
if(block.hasLiquids) entity.liquids = new LiquidModule(); if(block.hasLiquids) entity.liquids = new LiquidModule();

View File

@@ -171,7 +171,7 @@ public class BuildBlock extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new BuildEntity(); return new BuildEntity();
} }

View File

@@ -76,7 +76,7 @@ public class DeflectorWall extends Wall{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new DeflectorEntity(); return new DeflectorEntity();
} }

View File

@@ -81,7 +81,7 @@ public class Door extends Wall{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new DoorEntity(); return new DoorEntity();
} }

View File

@@ -169,7 +169,7 @@ public class ForceProjector extends Block {
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new ForceEntity(); return new ForceEntity();
} }

View File

@@ -122,7 +122,7 @@ public class MendProjector extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new MendEntity(); return new MendEntity();
} }

View File

@@ -52,7 +52,7 @@ public class MendingWall extends Wall{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new DeflectorEntity(); return new DeflectorEntity();
} }
} }

View File

@@ -123,7 +123,7 @@ public class OverdriveProjector extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new OverdriveEntity(); return new OverdriveEntity();
} }

View File

@@ -60,7 +60,7 @@ public class ChargeTurret extends PowerTurret{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new LaserTurretEntity(); return new LaserTurretEntity();
} }

View File

@@ -89,7 +89,7 @@ public class LaserTurret extends PowerTurret{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new LaserTurretEntity(); return new LaserTurretEntity();
} }

View File

@@ -339,7 +339,7 @@ public abstract class Turret extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new TurretEntity(); return new TurretEntity();
} }

View File

@@ -41,7 +41,7 @@ public class BufferedItemBridge extends ExtendingItemBridge{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new BufferedItemBridgeEntity(); return new BufferedItemBridgeEntity();
} }

View File

@@ -127,7 +127,7 @@ public class Conduit extends LiquidBlock{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new ConduitEntity(); return new ConduitEntity();
} }

View File

@@ -358,7 +358,7 @@ public class Conveyor extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new ConveyorEntity(); return new ConveyorEntity();
} }

View File

@@ -287,7 +287,7 @@ public class ItemBridge extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new ItemBridgeEntity(); return new ItemBridgeEntity();
} }

View File

@@ -92,7 +92,7 @@ public class Junction extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new JunctionEntity(); return new JunctionEntity();
} }

View File

@@ -234,7 +234,7 @@ public class MassDriver extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new MassDriverEntity(); return new MassDriverEntity();
} }

View File

@@ -86,7 +86,7 @@ public class Router extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new SplitterEntity(); return new SplitterEntity();
} }

View File

@@ -114,7 +114,7 @@ public class Sorter extends Block implements SelectionTrait{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new SorterEntity(); return new SorterEntity();
} }

View File

@@ -273,7 +273,7 @@ public class WarpGate extends PowerBlock{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new TeleporterEntity(); return new TeleporterEntity();
} }

View File

@@ -108,7 +108,7 @@ public class FusionReactor extends PowerGenerator{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new FusionReactorEntity(); return new FusionReactorEntity();
} }

View File

@@ -112,7 +112,7 @@ public abstract class ItemGenerator extends PowerGenerator{
protected abstract float getItemEfficiency(Item item); protected abstract float getItemEfficiency(Item item);
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new ItemGeneratorEntity(); return new ItemGeneratorEntity();
} }

View File

@@ -70,7 +70,7 @@ public abstract class LiquidGenerator extends PowerGenerator{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new ItemGeneratorEntity(); return new ItemGeneratorEntity();
} }

View File

@@ -193,7 +193,7 @@ public class NuclearReactor extends PowerGenerator{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new NuclearReactorEntity(); return new NuclearReactorEntity();
} }

View File

@@ -18,7 +18,7 @@ public class PowerGenerator extends PowerDistributor{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new GeneratorEntity(); return new GeneratorEntity();
} }

View File

@@ -35,6 +35,12 @@ public class PowerGraph{
lastFrameUpdated = threads.getFrameID(); lastFrameUpdated = threads.getFrameID();
float totalInput = 0f;
for(Tile producer : producers){
totalInput += producer.entity.power.amount;
}
for(Tile producer : producers){ for(Tile producer : producers){
float accumulator = producer.entity.power.amount; float accumulator = producer.entity.power.amount;
@@ -55,7 +61,7 @@ public class PowerGraph{
} }
for(Tile tile : consumers){ for(Tile tile : consumers){
float used = Math.min(tile.block().powerCapacity - tile.entity.power.amount, finalEach); float used = Math.min(tile.block().powerCapacity - tile.entity.power.amount, finalEach) * accumulator / totalInput;
buffer += used; buffer += used;
tile.entity.power.amount += used; tile.entity.power.amount += used;
} }

View File

@@ -1,8 +1,6 @@
package io.anuke.mindustry.world.blocks.power; package io.anuke.mindustry.world.blocks.power;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.IntArray;
import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.Annotations.Remote; import io.anuke.annotations.Annotations.Remote;
import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.Player;
@@ -24,10 +22,6 @@ import io.anuke.ucore.util.Angles;
import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Mathf;
import io.anuke.ucore.util.Translator; import io.anuke.ucore.util.Translator;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class PowerNode extends PowerBlock{ public class PowerNode extends PowerBlock{
@@ -60,15 +54,14 @@ public class PowerNode extends PowerBlock{
NodeEntity entity = tile.entity(); NodeEntity entity = tile.entity();
if(!entity.links.contains(other.packedPosition())){ if(!entity.power.links.contains(other.packedPosition())){
entity.links.add(other.packedPosition()); entity.power.links.add(other.packedPosition());
} }
if(other.getTeamID() == tile.getTeamID() && other.block() instanceof PowerNode){ if(other.getTeamID() == tile.getTeamID()){
NodeEntity oe = other.entity();
if(!oe.links.contains(tile.packedPosition())){ if(!other.entity.power.links.contains(tile.packedPosition())){
oe.links.add(tile.packedPosition()); other.entity.power.links.add(tile.packedPosition());
} }
} }
@@ -81,12 +74,10 @@ public class PowerNode extends PowerBlock{
NodeEntity entity = tile.entity(); NodeEntity entity = tile.entity();
entity.links.removeValue(other.packedPosition()); entity.power.links.removeValue(other.packedPosition());
if(other.block() instanceof PowerNode){ if(other.block() instanceof PowerNode){
NodeEntity oe = other.entity(); other.entity.power.links.removeValue(tile.packedPosition());
oe.links.removeValue(tile.packedPosition());
} }
//clear all graph data first //clear all graph data first
@@ -138,7 +129,7 @@ public class PowerNode extends PowerBlock{
if(linkValid(tile, other)){ if(linkValid(tile, other)){
if(linked(tile, other)){ if(linked(tile, other)){
threads.run(() -> Call.unlinkPowerNodes(null, tile, result)); threads.run(() -> Call.unlinkPowerNodes(null, tile, result));
}else if(entity.links.size < maxNodes){ }else if(entity.power.links.size < maxNodes){
threads.run(() -> Call.linkPowerNodes(null, tile, result)); threads.run(() -> Call.linkPowerNodes(null, tile, result));
} }
return false; return false;
@@ -186,7 +177,7 @@ public class PowerNode extends PowerBlock{
Lines.square(link.drawx(), link.drawy(), Lines.square(link.drawx(), link.drawy(),
link.block().size * tilesize / 2f + 1f + (linked ? 0f : Mathf.absin(Timers.time(), 4f, 1f))); link.block().size * tilesize / 2f + 1f + (linked ? 0f : Mathf.absin(Timers.time(), 4f, 1f)));
if((entity.links.size >= maxNodes || (link.block() instanceof PowerNode && ((NodeEntity) link.entity).links.size >= ((PowerNode) link.block()).maxNodes)) && !linked){ if((entity.power.links.size >= maxNodes || (link.block() instanceof PowerNode && ((NodeEntity) link.entity).power.links.size >= ((PowerNode) link.block()).maxNodes)) && !linked){
Draw.color(); Draw.color();
Draw.rect("cross-" + link.block().size, link.drawx(), link.drawy()); Draw.rect("cross-" + link.block().size, link.drawx(), link.drawy());
} }
@@ -215,28 +206,16 @@ public class PowerNode extends PowerBlock{
Draw.color(Palette.powerLaserFrom, Palette.powerLaserTo, 0f * (1f - flashScl) + Mathf.sin(Timers.time(), 1.7f, flashScl)); Draw.color(Palette.powerLaserFrom, Palette.powerLaserTo, 0f * (1f - flashScl) + Mathf.sin(Timers.time(), 1.7f, flashScl));
for(int i = 0; i < entity.links.size; i++){ for(int i = 0; i < entity.power.links.size; i++){
Tile link = world.tile(entity.links.get(i)); Tile link = world.tile(entity.power.links.get(i));
if(linkValid(tile, link)) drawLaser(tile, link); if(linkValid(tile, link)) drawLaser(tile, link);
} }
Draw.color(); Draw.color();
} }
@Override
public Array<Tile> getPowerConnections(Tile tile, Array<Tile> out){
super.getPowerConnections(tile, out);
NodeEntity entity = tile.entity();
for(int i = 0; i < entity.links.size; i++){
Tile link = world.tile(entity.links.get(i));
if(linkValid(tile, link)) out.add(link);
}
return out;
}
protected boolean linked(Tile tile, Tile other){ protected boolean linked(Tile tile, Tile other){
return tile.<NodeEntity>entity().links.contains(other.packedPosition()); return tile.<NodeEntity>entity().power.links.contains(other.packedPosition());
} }
protected boolean linkValid(Tile tile, Tile link){ protected boolean linkValid(Tile tile, Tile link){
@@ -252,7 +231,7 @@ public class PowerNode extends PowerBlock{
return Vector2.dst(tile.drawx(), tile.drawy(), link.drawx(), link.drawy()) <= Math.max(laserRange * tilesize, return Vector2.dst(tile.drawx(), tile.drawy(), link.drawx(), link.drawy()) <= Math.max(laserRange * tilesize,
((PowerNode) link.block()).laserRange * tilesize) - tilesize / 2f ((PowerNode) link.block()).laserRange * tilesize) - tilesize / 2f
+ (link.block().size - 1) * tilesize / 2f + (tile.block().size - 1) * tilesize / 2f && + (link.block().size - 1) * tilesize / 2f + (tile.block().size - 1) * tilesize / 2f &&
(!checkMaxNodes || (oe.links.size < ((PowerNode) link.block()).maxNodes || oe.links.contains(tile.packedPosition()))); (!checkMaxNodes || (oe.power.links.size < ((PowerNode) link.block()).maxNodes || oe.power.links.contains(tile.packedPosition())));
}else{ }else{
return Vector2.dst(tile.drawx(), tile.drawy(), link.drawx(), link.drawy()) return Vector2.dst(tile.drawx(), tile.drawy(), link.drawx(), link.drawy())
<= laserRange * tilesize - tilesize / 2f + (link.block().size - 1) * tilesize; <= laserRange * tilesize - tilesize / 2f + (link.block().size - 1) * tilesize;
@@ -274,28 +253,12 @@ public class PowerNode extends PowerBlock{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new NodeEntity(); return new NodeEntity();
} }
public static class NodeEntity extends TileEntity{ public static class NodeEntity extends TileEntity{
public IntArray links = new IntArray();
@Override
public void write(DataOutputStream stream) throws IOException{
stream.writeShort(links.size);
for(int i = 0; i < links.size; i++){
stream.writeInt(links.get(i));
}
}
@Override
public void read(DataInputStream stream) throws IOException{
short amount = stream.readShort();
for(int i = 0; i < amount; i++){
links.add(stream.readInt());
}
}
} }
} }

View File

@@ -95,7 +95,7 @@ public class Cultivator extends Drill{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new CultivatorEntity(); return new CultivatorEntity();
} }

View File

@@ -228,7 +228,7 @@ public class Drill extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new DrillEntity(); return new DrillEntity();
} }

View File

@@ -76,7 +76,7 @@ public class Fracker extends SolidPump{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new FrackerEntity(); return new FrackerEntity();
} }

View File

@@ -110,7 +110,7 @@ public class GenericCrafter extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new GenericCrafterEntity(); return new GenericCrafterEntity();
} }

View File

@@ -94,7 +94,7 @@ public class Incinerator extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new IncineratorEntity(); return new IncineratorEntity();
} }

View File

@@ -89,7 +89,7 @@ public class LiquidMixer extends LiquidBlock{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new LiquidMixerEntity(); return new LiquidMixerEntity();
} }

View File

@@ -85,7 +85,7 @@ public class PowerCrafter extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new GenericCrafterEntity(); return new GenericCrafterEntity();
} }
} }

View File

@@ -203,7 +203,7 @@ public class PowerSmelter extends PowerBlock{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new PowerSmelterEntity(); return new PowerSmelterEntity();
} }

View File

@@ -130,7 +130,7 @@ public class Separator extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new GenericCrafterEntity(); return new GenericCrafterEntity();
} }
} }

View File

@@ -194,7 +194,7 @@ public class Smelter extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new SmelterEntity(); return new SmelterEntity();
} }

View File

@@ -112,7 +112,7 @@ public class SolidPump extends Pump{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new SolidPumpEntity(); return new SolidPumpEntity();
} }

View File

@@ -234,7 +234,7 @@ public class CoreBlock extends StorageBlock{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new CoreEntity(); return new CoreEntity();
} }

View File

@@ -67,7 +67,7 @@ public class SortedUnloader extends Unloader implements SelectionTrait{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new SortedUnloaderEntity(); return new SortedUnloaderEntity();
} }

View File

@@ -107,7 +107,7 @@ public class CommandCenter extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new CommandCenterEntity(); return new CommandCenterEntity();
} }

View File

@@ -204,7 +204,7 @@ public class MechPad extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new MechFactoryEntity(); return new MechFactoryEntity();
} }

View File

@@ -299,7 +299,7 @@ public class Reconstructor extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new ReconstructorEntity(); return new ReconstructorEntity();
} }

View File

@@ -113,7 +113,7 @@ public class RepairPoint extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new RepairPointEntity(); return new RepairPointEntity();
} }

View File

@@ -207,7 +207,7 @@ public class UnitFactory extends Block{
} }
@Override @Override
public TileEntity getEntity(){ public TileEntity newEntity(){
return new UnitFactoryEntity(); return new UnitFactoryEntity();
} }

View File

@@ -1,5 +1,6 @@
package io.anuke.mindustry.world.modules; package io.anuke.mindustry.world.modules;
import com.badlogic.gdx.utils.IntArray;
import io.anuke.mindustry.world.blocks.power.PowerGraph; import io.anuke.mindustry.world.blocks.power.PowerGraph;
import java.io.DataInput; import java.io.DataInput;
@@ -11,6 +12,7 @@ public class PowerModule extends BlockModule{
public float capacity = 10f; public float capacity = 10f;
public float voltage = 0.0001f; public float voltage = 0.0001f;
public PowerGraph graph = new PowerGraph(); public PowerGraph graph = new PowerGraph();
public IntArray links = new IntArray();
public boolean acceptsPower(){ public boolean acceptsPower(){
return amount + 0.001f <= capacity; return amount + 0.001f <= capacity;
@@ -30,6 +32,11 @@ public class PowerModule extends BlockModule{
@Override @Override
public void write(DataOutput stream) throws IOException{ public void write(DataOutput stream) throws IOException{
stream.writeFloat(amount); stream.writeFloat(amount);
stream.writeShort(links.size);
for(int i = 0; i < links.size; i++){
stream.writeInt(links.get(i));
}
} }
@Override @Override
@@ -38,5 +45,10 @@ public class PowerModule extends BlockModule{
if(Float.isNaN(amount)){ if(Float.isNaN(amount)){
amount = 0f; amount = 0f;
} }
short amount = stream.readShort();
for(int i = 0; i < amount; i++){
links.add(stream.readInt());
}
} }
} }