From f1df1aeebb40500dfd6acfcff3ebbcf73f5e6355 Mon Sep 17 00:00:00 2001 From: tiera3 <87589219+tiera3@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:48:02 +1000 Subject: [PATCH] Add files via upload --- .../src/main/java/mage/collation/CardRun.java | 38 ++++++------------- .../src/main/java/mage/collation/Rotater.java | 21 +++++----- 2 files changed, 23 insertions(+), 36 deletions(-) diff --git a/Mage/src/main/java/mage/collation/CardRun.java b/Mage/src/main/java/mage/collation/CardRun.java index ac713f38aa4..b2589dd1c28 100644 --- a/Mage/src/main/java/mage/collation/CardRun.java +++ b/Mage/src/main/java/mage/collation/CardRun.java @@ -6,8 +6,7 @@ import mage.util.RandomUtil; * @author TheElk801 */ public class CardRun extends Rotater { - private int cardPos,stripeLen=0,stripeWidth,stripeDepth; - // cardPos is used in place of private super.position for Striped Collation + private int stripeLen=0,stripeWidth,stripeDepth; public CardRun(boolean keepOrder, String... numbers) { super(keepOrder, numbers); @@ -15,11 +14,9 @@ public class CardRun extends Rotater { public CardRun(int sLen, String... numbers) { super(true, numbers); - cardPos= RandomUtil.nextInt( this.numItems() ); + stripeLen= sLen; stripeWidth= nextWidth(); stripeDepth= 1+ RandomUtil.nextInt( stripeWidth ); - // assert sLen >0; - // assert this.numItems() % sLen == 0; } // randomly choose a stripe width between 2 & 5 (inclusive) @@ -31,28 +28,15 @@ public class CardRun extends Rotater { public int iterate() { if( stripeLen ==0 ){ return super.iterate(); - }else{ - int i = cardPos; - if( stripeDepth < stripeWidth ){ - ++stripeDepth; - cardPos -= 10; - if (cardPos <0 ){ - cardPos += this.numItems(); - } - }else{ - stripeDepth= 1; - if( (cardPos % stripeLen) >0 ){ - cardPos += stripeLen * (stripeWidth-1); - cardPos %= this.numItems(); - }else{ - this.stripeWidth= this.nextWidth(); - } - cardPos -= 1; - if (cardPos <0 ){ - cardPos += this.numItems(); - } - } - return i; + if( stripeDepth < stripeWidth ){ + ++stripeDepth; + return super.iterate(-stripeLen); } + stripeDepth= 1; + if this.isEdge(stripeLen){ + this.stripeWidth= this.nextWidth(); + return super.iterate(-1); + } + return super.iterate((stripeLen * (stripeWidth-1)) -1); } } diff --git a/Mage/src/main/java/mage/collation/Rotater.java b/Mage/src/main/java/mage/collation/Rotater.java index 04379dfdb5f..42f75c1ba50 100644 --- a/Mage/src/main/java/mage/collation/Rotater.java +++ b/Mage/src/main/java/mage/collation/Rotater.java @@ -37,19 +37,22 @@ public class Rotater { } } - public int numItems() { - return items.size(); + public boolean isEdge(int rowLen) { + return (position % rowLen)==0; } - - public String getItem(int i) { - return items.get(i); + + public int iterate(int offset) { + int i = position; + position += offset; + while (position <0) { + position += items.size(); + } + position %= items.size(); + return i; } public int iterate() { - int i = position; - position++; - position %= items.size(); - return i; + return iterate(1)' } public T getNext() {