Skip to content

Commit bce4f97

Browse files
committed
Spread out item inputs
1 parent 9284225 commit bce4f97

File tree

1 file changed

+33
-9
lines changed

1 file changed

+33
-9
lines changed

src/progressed/world/blocks/defence/turret/payload/modular/ModularTurret.java

+33-9
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public ModularTurret(String name){
4545

4646
acceptsPayload = true;
4747
outputsPayload = false;
48+
hasItems = true; //To allow stack acceptance
4849
hasLiquids = true;
4950
hasPower = true;
5051
outputsLiquid = false;
@@ -173,6 +174,7 @@ public boolean canBreak(Tile tile){
173174
public class ModularTurretBuild extends PayloadBlockBuild<BuildPayload> implements ControlBlock{
174175
public Seq<TurretModuleBuild> modules = new Seq<>();
175176
public BlockUnitc unit = (BlockUnitc)UnitTypes.block.create(team);
177+
public int itemTarget;
176178
protected int selNum;
177179

178180
@Override
@@ -464,10 +466,11 @@ public boolean acceptItem(Building source, Item item){
464466

465467
@Override
466468
public int acceptStack(Item item, int amount, Teamc source){
467-
TurretModuleBuild mount = modules.find(m -> m.build().acceptStack(item, amount, this) > 0);
468-
469-
if(mount == null) return 0;
470-
return mount.build().acceptStack(item, amount, this);
469+
int[] total = {0};
470+
modules.each(m -> {
471+
total[0] += m.build().acceptStack(item, amount, this);
472+
});
473+
return Math.min(total[0], amount);
471474
}
472475

473476
@Override
@@ -486,21 +489,42 @@ public boolean acceptPayload(Building source, Payload payload){
486489

487490
@Override
488491
public void handleItem(Building source, Item item){
489-
TurretModuleBuild mount = modules.find(m -> m.build().acceptItem(this, item));
492+
TurretModuleBuild mount = handleItemTarget(source, item);
490493
mount.build().handleItem(this, item);
491494
}
492495

496+
public TurretModuleBuild handleItemTarget(Building source, Item item){
497+
if(itemTarget >= modules.size) itemTarget = 0;
498+
499+
if(modules.get(itemTarget).build().acceptItem(source, item)){
500+
itemTarget++;
501+
if(itemTarget == modules.size) itemTarget = 0;
502+
return modules.get(itemTarget);
503+
}else{
504+
for(int i = 0; i < modules.size; i++){
505+
itemTarget++;
506+
if(itemTarget == modules.size) itemTarget = 0;
507+
TurretModuleBuild m = modules.get(itemTarget);
508+
if(m.build().acceptItem(source, item)){
509+
return m;
510+
}
511+
}
512+
return null; //Shouldn't be possible.
513+
}
514+
}
515+
493516
@Override
494517
public int removeStack(Item item, int amount){
495-
//Cannot remove items
518+
//Cannot remove items, nothing to remove
496519
return 0;
497520
}
498521

499522
@Override
500523
public void handleStack(Item item, int amount, Teamc source){
501-
TurretModuleBuild mount = modules.find(m -> m.build().acceptStack(item, amount, this) > 0);
502-
503-
if(mount != null) mount.build().handleStack(item, amount, this);
524+
Log.info("HUZZAH");
525+
for(int i = 0; i < amount; i++){
526+
handleItem(this, item);
527+
}
504528
}
505529

506530
@Override

0 commit comments

Comments
 (0)