@@ -45,6 +45,7 @@ public ModularTurret(String name){
45
45
46
46
acceptsPayload = true ;
47
47
outputsPayload = false ;
48
+ hasItems = true ; //To allow stack acceptance
48
49
hasLiquids = true ;
49
50
hasPower = true ;
50
51
outputsLiquid = false ;
@@ -173,6 +174,7 @@ public boolean canBreak(Tile tile){
173
174
public class ModularTurretBuild extends PayloadBlockBuild <BuildPayload > implements ControlBlock {
174
175
public Seq <TurretModuleBuild > modules = new Seq <>();
175
176
public BlockUnitc unit = (BlockUnitc )UnitTypes .block .create (team );
177
+ public int itemTarget ;
176
178
protected int selNum ;
177
179
178
180
@ Override
@@ -464,10 +466,11 @@ public boolean acceptItem(Building source, Item item){
464
466
465
467
@ Override
466
468
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 );
471
474
}
472
475
473
476
@ Override
@@ -486,21 +489,42 @@ public boolean acceptPayload(Building source, Payload payload){
486
489
487
490
@ Override
488
491
public void handleItem (Building source , Item item ){
489
- TurretModuleBuild mount = modules . find ( m -> m . build (). acceptItem ( this , item ) );
492
+ TurretModuleBuild mount = handleItemTarget ( source , item );
490
493
mount .build ().handleItem (this , item );
491
494
}
492
495
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
+
493
516
@ Override
494
517
public int removeStack (Item item , int amount ){
495
- //Cannot remove items
518
+ //Cannot remove items, nothing to remove
496
519
return 0 ;
497
520
}
498
521
499
522
@ Override
500
523
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
+ }
504
528
}
505
529
506
530
@ Override
0 commit comments