Skip to content

Commit 9c37813

Browse files
committed
feat(sdk): add proper toString methods for GameResult & its dependencies
# Conflicts: # server/src/sc/server/Lobby.kt # server/src/sc/server/network/ClientManager.java # server/src/sc/server/network/NewClientListener.java
1 parent 079a0c8 commit 9c37813

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

socha-sdk/src/framework/sc/shared/GameResult.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,7 @@ data class GameResult(
1818
get() = scores.all { it.cause == ScoreCause.REGULAR }
1919

2020
override fun toString(): String {
21-
val builder = StringBuilder("Winner: ").append(winners)
22-
scores.forEachIndexed { playerIndex, score ->
23-
builder.appendln().append("Player ").append(playerIndex).append(": ")
24-
val scoreParts = score.toStrings()
25-
builder.append(scoreParts.indices.joinToString("; ") { i -> "${definition[i].name}=${scoreParts[i]}" })
26-
}
27-
return builder.toString()
21+
return "GameResult(winner=$winners, scores=[${(0..scores.lastIndex).joinToString { i -> "Player${i+1}${scores[i].toString(definition).removePrefix("PlayerScore")}" }}])"
2822
}
2923

3024
}

socha-sdk/src/framework/sc/shared/PlayerScore.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package sc.shared
33
import com.thoughtworks.xstream.annotations.XStreamAlias
44
import com.thoughtworks.xstream.annotations.XStreamAsAttribute
55
import com.thoughtworks.xstream.annotations.XStreamImplicit
6+
import java.lang.IllegalArgumentException
67
import java.math.BigDecimal
78

89
@XStreamAlias(value = "score")
@@ -20,9 +21,6 @@ data class PlayerScore(
2021

2122
fun size(): Int = parts.size
2223

23-
fun toStrings(): Array<String> =
24-
parts.map { it.toString() }.toTypedArray()
25-
2624
val values: List<BigDecimal>
2725
get() = parts.asList()
2826

@@ -42,6 +40,12 @@ data class PlayerScore(
4240
return result
4341
}
4442

43+
fun toString(definition: ScoreDefinition): String {
44+
if(!matches(definition))
45+
throw IllegalArgumentException("$definition does not match $this")
46+
return "PlayerScore(cause=$cause, reason='$reason', parts=[${(0..parts.lastIndex).joinToString { i -> "${definition.get(i).name}=${parts[i]}" }}])"
47+
}
48+
4549
override fun toString(): String {
4650
return "PlayerScore(cause=$cause, reason='$reason', parts=${parts.contentToString()})"
4751
}

socha-sdk/src/framework/sc/shared/ScoreDefinition.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ public Iterator<ScoreFragment> iterator() {
3737
return this.fragments.iterator();
3838
}
3939

40+
@Override
41+
public String toString() {
42+
return "ScoreDefinition(fragments=" + fragments + ')';
43+
}
44+
4045
@Override
4146
public boolean equals(Object o) {
4247
if (o instanceof ScoreDefinition) {

0 commit comments

Comments
 (0)