Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
meikpiep committed Feb 27, 2025
1 parent cac6b94 commit 9f0fde9
Show file tree
Hide file tree
Showing 28 changed files with 443 additions and 282 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class MainApplication : Application() {
val applicationPreferences = ApplicationPreferencesImpl(this)
val preferenceMigrations = ApplicationPreferencesMigrations(applicationPreferences)
preferenceMigrations.migrateThemeToNightModeIfNecessary()
preferenceMigrations.migrateDifficultySettingIfNecessary()

val options =
DynamicColorsOptions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,14 +130,14 @@ class ApplicationPreferencesImpl(
}
}

override var difficultySetting: DifficultySetting
override var difficultiesSetting: Set<DifficultySetting>
get() {
val usage = preferences.getString("difficulty", DifficultySetting.ANY.name)!!
return enumValueOf(usage)
val difficulties = preferences.getStringSet("difficulties", setOf(DifficultySetting.EASY.name))!!
return difficulties.map { enumValueOf<DifficultySetting>(it) }.toSet()
}
set(difficultySetting) {
set(difficultiesSetting) {
preferences.edit {
putString("difficulty", difficultySetting.name)
putStringSet("difficulties", difficultiesSetting.map { it.name }.toSet())
}
}

Expand Down Expand Up @@ -227,7 +227,7 @@ class ApplicationPreferencesImpl(
showOperators(),
operations,
digitSetting,
difficultySetting,
difficultiesSetting,
singleCageUsage,
numeralSystem,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import com.skydoves.balloon.ArrowPositionRules
import com.skydoves.balloon.BalloonAnimation
import com.skydoves.balloon.BalloonSizeSpec
import com.skydoves.balloon.createBalloon
import org.piepmeyer.gauguin.difficulty.GameDifficulty
import org.piepmeyer.gauguin.options.DifficultySetting
import org.piepmeyer.gauguin.options.GameVariant

class MainGameDifficultyLevelBalloon(
private val difficulty: GameDifficulty?,
private val difficulty: DifficultySetting?,
private val variant: GameVariant,
) {
fun showBalloon(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ import com.google.android.material.textview.MaterialTextView
import org.piepmeyer.gauguin.R
import org.piepmeyer.gauguin.databinding.FragmentGameDifficultyLevelBinding
import org.piepmeyer.gauguin.difficulty.DisplayableGameDifficultyThreshold
import org.piepmeyer.gauguin.difficulty.GameDifficulty
import org.piepmeyer.gauguin.difficulty.GameDifficultyRater
import org.piepmeyer.gauguin.difficulty.GameDifficultyRating
import org.piepmeyer.gauguin.options.DifficultySetting
import org.piepmeyer.gauguin.options.GameVariant
import java.math.BigDecimal
import java.text.DecimalFormat

class MainGameDifficultyLevelFragment(
private val difficulty: GameDifficulty?,
private val difficulty: DifficultySetting?,
private val variant: GameVariant,
) : Fragment(R.layout.fragment_game_difficulty_level) {
private lateinit var binding: FragmentGameDifficultyLevelBinding
Expand Down Expand Up @@ -71,34 +71,39 @@ class MainGameDifficultyLevelFragment(
private fun layoutWithRating(rating: GameDifficultyRating) {
val uiRating = DisplayableGameDifficultyThreshold(rating)

binding.veryEasyMaximumValue.text = formatDifficulty(uiRating.thresholdText(GameDifficulty.EASY))
binding.easyMinimumValue.text = formatDifficulty(uiRating.thresholdText(GameDifficulty.EASY))
binding.easyMaximumValue.text = formatDifficulty(uiRating.thresholdText(GameDifficulty.MEDIUM))
binding.mediumMinimumValue.text = formatDifficulty(uiRating.thresholdText(GameDifficulty.MEDIUM))
binding.mediumMaximumValue.text = formatDifficulty(uiRating.thresholdText(GameDifficulty.HARD))
binding.hardMinimumValue.text = formatDifficulty(uiRating.thresholdText(GameDifficulty.HARD))
binding.hardMaximumValue.text = formatDifficulty(uiRating.thresholdText(GameDifficulty.EXTREME))
binding.extremeMinimumValue.text = formatDifficulty(uiRating.thresholdText(GameDifficulty.EXTREME))
binding.veryEasyMaximumValue.text =
formatDifficulty(
uiRating.thresholdText(
DifficultySetting.EASY,
),
)
binding.easyMinimumValue.text = formatDifficulty(uiRating.thresholdText(DifficultySetting.EASY))
binding.easyMaximumValue.text = formatDifficulty(uiRating.thresholdText(DifficultySetting.MEDIUM))
binding.mediumMinimumValue.text = formatDifficulty(uiRating.thresholdText(DifficultySetting.MEDIUM))
binding.mediumMaximumValue.text = formatDifficulty(uiRating.thresholdText(DifficultySetting.HARD))
binding.hardMinimumValue.text = formatDifficulty(uiRating.thresholdText(DifficultySetting.HARD))
binding.hardMaximumValue.text = formatDifficulty(uiRating.thresholdText(DifficultySetting.EXTREME))
binding.extremeMinimumValue.text = formatDifficulty(uiRating.thresholdText(DifficultySetting.EXTREME))
}

private fun layoutWithDifficulty(
difficulty: GameDifficulty,
difficulty: DifficultySetting,
parent: ViewGroup?,
) {
val referenceId =
when (difficulty) {
GameDifficulty.VERY_EASY -> R.id.veryEasy
GameDifficulty.EASY -> R.id.easy
GameDifficulty.MEDIUM -> R.id.medium
GameDifficulty.HARD -> R.id.hard
GameDifficulty.EXTREME -> R.id.extreme
DifficultySetting.VERY_EASY -> R.id.veryEasy
DifficultySetting.EASY -> R.id.easy
DifficultySetting.MEDIUM -> R.id.medium
DifficultySetting.HARD -> R.id.hard
DifficultySetting.EXTREME -> R.id.extreme
}

setHighlighterConstraintsToMatch(difficulty, referenceId, parent)
}

private fun setHighlighterConstraintsToMatch(
difficulty: GameDifficulty?,
difficulty: DifficultySetting?,
referenceId: Int,
parent: ViewGroup?,
) {
Expand Down Expand Up @@ -141,46 +146,46 @@ class MainGameDifficultyLevelFragment(
constraintSet.applyTo(binding.mainGameDifficultyLevelConstaintLayout)
}

private fun hightlightedTextViews(difficulty: GameDifficulty): List<MaterialTextView> =
private fun hightlightedTextViews(difficulty: DifficultySetting): List<MaterialTextView> =
when (difficulty) {
GameDifficulty.VERY_EASY -> listOf(binding.veryEasy, binding.veryEasyMinimumValue, binding.veryEasyMaximumValue)
GameDifficulty.EASY -> listOf(binding.easy, binding.easyMinimumValue, binding.easyMaximumValue)
GameDifficulty.MEDIUM -> listOf(binding.medium, binding.mediumMinimumValue, binding.mediumMaximumValue)
GameDifficulty.HARD -> listOf(binding.hard, binding.hardMinimumValue, binding.hardMaximumValue)
GameDifficulty.EXTREME -> listOf(binding.extreme, binding.extremeMinimumValue, binding.extremeMaximumValue)
DifficultySetting.VERY_EASY -> listOf(binding.veryEasy, binding.veryEasyMinimumValue, binding.veryEasyMaximumValue)
DifficultySetting.EASY -> listOf(binding.easy, binding.easyMinimumValue, binding.easyMaximumValue)
DifficultySetting.MEDIUM -> listOf(binding.medium, binding.mediumMinimumValue, binding.mediumMaximumValue)
DifficultySetting.HARD -> listOf(binding.hard, binding.hardMinimumValue, binding.hardMaximumValue)
DifficultySetting.EXTREME -> listOf(binding.extreme, binding.extremeMinimumValue, binding.extremeMaximumValue)
}

private fun hightlightedImageViews(difficulty: GameDifficulty): List<ImageView> =
private fun hightlightedImageViews(difficulty: DifficultySetting): List<ImageView> =
when (difficulty) {
GameDifficulty.VERY_EASY ->
DifficultySetting.VERY_EASY ->
listOf(
binding.ratingStarVeryEasyOne,
binding.ratingStarVeryEasyTwo,
binding.ratingStarVeryEasyThree,
binding.ratingStarVeryEasyFour,
)
GameDifficulty.EASY ->
DifficultySetting.EASY ->
listOf(
binding.ratingStarEasyOne,
binding.ratingStarEasyTwo,
binding.ratingStarEasyThree,
binding.ratingStarEasyFour,
)
GameDifficulty.MEDIUM ->
DifficultySetting.MEDIUM ->
listOf(
binding.ratingStarMediumOne,
binding.ratingStarMediumTwo,
binding.ratingStarMediumThree,
binding.ratingStarMediumFour,
)
GameDifficulty.HARD ->
DifficultySetting.HARD ->
listOf(
binding.ratingStarHardOne,
binding.ratingStarHardTwo,
binding.ratingStarHardThree,
binding.ratingStarHardFour,
)
GameDifficulty.EXTREME ->
DifficultySetting.EXTREME ->
listOf(
binding.ratingStarExtremeOne,
binding.ratingStarExtremeTwo,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ import org.piepmeyer.gauguin.R
import org.piepmeyer.gauguin.Utils
import org.piepmeyer.gauguin.databinding.FragmentMainGameTopBinding
import org.piepmeyer.gauguin.difficulty.DisplayableGameDifficulty
import org.piepmeyer.gauguin.difficulty.GameDifficulty
import org.piepmeyer.gauguin.difficulty.GameDifficultyRater
import org.piepmeyer.gauguin.difficulty.human.HumanDifficultyCalculator
import org.piepmeyer.gauguin.game.Game
import org.piepmeyer.gauguin.game.GameLifecycle
import org.piepmeyer.gauguin.game.PlayTimeListener
import org.piepmeyer.gauguin.options.DifficultySetting
import org.piepmeyer.gauguin.preferences.ApplicationPreferences
import org.piepmeyer.gauguin.ui.difficulty.MainGameDifficultyLevelBalloon
import org.piepmeyer.gauguin.ui.difficulty.MainGameDifficultyLevelFragment
Expand Down Expand Up @@ -172,35 +172,35 @@ class GameTopFragment :
}
}

private fun setStarsByDifficulty(difficulty: GameDifficulty?) {
private fun setStarsByDifficulty(difficulty: DifficultySetting?) {
if (difficulty == null) return

setStarByDifficulty(
binding.ratingStarOne,
difficulty,
GameDifficulty.EASY,
DifficultySetting.EASY,
)
setStarByDifficulty(
binding.ratingStarTwo,
difficulty,
GameDifficulty.MEDIUM,
DifficultySetting.MEDIUM,
)
setStarByDifficulty(
binding.ratingStarThree,
difficulty,
GameDifficulty.HARD,
DifficultySetting.HARD,
)
setStarByDifficulty(
binding.ratingStarFour,
difficulty,
GameDifficulty.EXTREME,
DifficultySetting.EXTREME,
)
}

private fun setStarByDifficulty(
view: ImageView,
difficulty: GameDifficulty,
minimumDifficulty: GameDifficulty,
difficulty: DifficultySetting,
minimumDifficulty: DifficultySetting,
) {
if (difficulty >= minimumDifficulty) {
view.setImageResource(R.drawable.filled_star_20)
Expand Down
Loading

0 comments on commit 9f0fde9

Please sign in to comment.