Skip to content

Instantly share code, notes, and snippets.

object DatasetVisualiser : SquareDecoration {
@Composable
override fun render(properties: SquareRenderProperties) {
ActiveDatasetVisualisation.current.let { viz ->
val datapoint = viz.dataPointAt(
properties.position,
properties.boardProperties.toState
)
@Parcelize
object KnightsMoveCount : DatasetVisualisation {
override val name = R.string.viz_knight_move_count
override val minValue: Int = 2
override val maxValue: Int = 8
override fun dataPointAt(position: Position, state: GameSnapshotState): Datapoint {
override fun dataPointAt(position: Position, state: GameSnapshotState): Datapoint? =
valueAt(position, state)?.let { value ->
Datapoint(
value = value,
label = null,
colorScale = when (value) {
0 -> Color.Red.copy(alpha = 0.35f) to Color.Unspecified
else -> Color.Unspecified to Color.Unspecified
},
)
data class SquareRenderProperties(
val position: Position,
val isHighlighted: Boolean,
val clickable: Boolean,
val onClick: () -> Unit,
val isPossibleMoveWithoutCapture: Boolean,
val isPossibleCapture: Boolean,
val boardProperties: BoardRenderProperties
)
interface SquareDecoration {
@Composable
fun render(properties: SquareRenderProperties)
}
interface BoardDecoration {
@Composable
fun render(properties: BoardRenderProperties)
interface SquareRenderer {
val decorations: List<SquareDecoration>
}
interface BoardRenderer {
val decorations: List<BoardDecoration>
}
object DefaultSquareRenderer : SquareRenderer {
override val decorations: List<SquareDecoration> =
listOf(
DefaultSquareBackground,
DefaultHighlightSquare,
DefaultSquarePositionLabel,
DatasetVisualiser,
TargetMarks
)
@Composable
fun Board(
fromState: GameSnapshotState,
toState: GameSnapshotState,
uiState: UiState,
isFlipped: Boolean = false,
onClick: (Position) -> Unit,
) {
BoxWithConstraints(
modifier = Modifier
@Composable
override fun render(properties: SquareRenderProperties) {
ActiveDatasetVisualisation.current.let { viz ->
val datapoint = viz.dataPointAt(
properties.position,
properties.boardProperties.toState
)
//...
}
val datapoint = remember(viz, properties) {
viz.dataPointAt(
properties.position,
properties.boardProperties.toState
)
}