diff --git a/android/Klooni-v0.3.apk b/android/Klooni-v0.3.apk new file mode 100644 index 0000000..6c39b39 Binary files /dev/null and b/android/Klooni-v0.3.apk differ diff --git a/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java b/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java index 5e9da10..712fbd1 100644 --- a/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java +++ b/core/src/io/github/lonamiwebs/klooni/game/BaseScorer.java @@ -48,13 +48,11 @@ public abstract class BaseScorer implements BinSerializable { //region Private methods - protected abstract int addScore(int score); - // The original game seems to work as follows: // If < 1 were cleared, score = 0 // If = 1 was cleared, score = cells cleared // If > 1 were cleared, score = cells cleared + score(cleared - 1) - private int calculateClearScore(int stripsCleared, int boardSize) { + protected final int calculateClearScore(int stripsCleared, int boardSize) { if (stripsCleared < 1) return 0; if (stripsCleared == 1) return boardSize; else return boardSize * stripsCleared + calculateClearScore(stripsCleared - 1, boardSize); @@ -65,14 +63,10 @@ public abstract class BaseScorer implements BinSerializable { //region Public methods // Adds the score a given piece would give - public final int addPieceScore(int areaPut) { - return addScore(areaPut); - } + public abstract int addPieceScore(int areaPut); // Adds the score given by the board, this is, the count of cleared strips - public final int addBoardScore(int stripsCleared, int boardSize) { - return addScore(calculateClearScore(stripsCleared, boardSize)); - } + public abstract int addBoardScore(int stripsCleared, int boardSize); public void pause() { } public void resume() { } diff --git a/core/src/io/github/lonamiwebs/klooni/game/Scorer.java b/core/src/io/github/lonamiwebs/klooni/game/Scorer.java index 03dab8b..1204efa 100644 --- a/core/src/io/github/lonamiwebs/klooni/game/Scorer.java +++ b/core/src/io/github/lonamiwebs/klooni/game/Scorer.java @@ -37,18 +37,21 @@ public class Scorer extends BaseScorer implements BinSerializable { //endregion - //region Private methods + //region Public methods @Override - protected int addScore(int score) { + public int addPieceScore(int areaPut) { + currentScore += areaPut; + return areaPut; + } + + @Override + public int addBoardScore(int stripsCleared, int boardSize) { + int score = calculateClearScore(stripsCleared, boardSize); currentScore += score; return score; } - //endregion - - //region Public methods - public int getCurrentScore() { return currentScore; } diff --git a/core/src/io/github/lonamiwebs/klooni/game/TimeScorer.java b/core/src/io/github/lonamiwebs/klooni/game/TimeScorer.java index 9cfa86d..f061c34 100644 --- a/core/src/io/github/lonamiwebs/klooni/game/TimeScorer.java +++ b/core/src/io/github/lonamiwebs/klooni/game/TimeScorer.java @@ -57,8 +57,7 @@ public class TimeScorer extends BaseScorer implements BinSerializable { //region Private methods - @Override - protected int addScore(int score) { + private int addScore(int score) { int scoreBefore = getCurrentScore(); deadTime += scoreToNanos(score); return getCurrentScore() - scoreBefore; @@ -81,6 +80,16 @@ public class TimeScorer extends BaseScorer implements BinSerializable { //region Public methods + @Override + public int addPieceScore(int areaPut) { + return addScore(areaPut); + } + + @Override + public int addBoardScore(int stripsCleared, int boardSize) { + return addScore(calculateClearScore(stripsCleared, boardSize)); + } + @Override public int getCurrentScore() { return nanosToSeconds(deadTime - startTime);