From 5634e0787f8be9cfeb7a6d86e5e4cbe8f01ed9d6 Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 26 Dec 2023 15:53:14 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A3=B0=EB=A0=9B=20=EC=B5=9C=EB=8C=80=20?= =?UTF-8?q?=EA=B0=9C=EC=88=98=20=EC=88=98=EC=A0=95=20AS-IS=20:=20=EC=B5=9C?= =?UTF-8?q?=EB=8C=80=206=EA=B0=9C=20TO-BE=20:=20=EC=B5=9C=EB=8C=80=2010?= =?UTF-8?q?=EA=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 룰렛 확률 수정 AS-IS : 소수점 없음 TO-BE : 소수점 2자리 --- .../kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt | 4 +++- .../kr/co/vividnext/sodalive/live/roulette/RouletteView.kt | 4 ++++ .../sodalive/live/roulette/config/RouletteOption.kt | 2 +- .../live/roulette/config/RouletteSettingsViewModel.kt | 6 ++++-- app/src/main/res/layout/fragment_roulette_settings.xml | 2 +- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt index a481736..f597165 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt @@ -34,6 +34,7 @@ import okhttp3.MultipartBody import okhttp3.RequestBody.Companion.asRequestBody import okhttp3.RequestBody.Companion.toRequestBody import java.io.File +import kotlin.math.floor class LiveRoomViewModel( private val repository: LiveRepository, @@ -922,9 +923,10 @@ class LiveRoomViewModel( private fun calculatePercentages(options: List): List { val totalWeight = options.sumOf { it.weight } val updatedOptions = options.asSequence().map { option -> + val percent = floor(option.weight.toDouble() / totalWeight * 10000) / 100 RoulettePreviewItem( title = option.title, - percent = "${(option.weight.toDouble() / totalWeight * 100).toInt()}%" + percent = "${String.format("%.2f", percent)}%" ) }.toList() diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/RouletteView.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/RouletteView.kt index 471e227..ae7cbec 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/RouletteView.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/RouletteView.kt @@ -33,6 +33,10 @@ class RouletteView @JvmOverloads constructor( Color.parseColor("#8FCEEA"), Color.parseColor("#CD5880"), Color.parseColor("#C2C85E"), + Color.parseColor("#000000"), + Color.parseColor("#888888"), + Color.parseColor("#FFFFFF"), + Color.parseColor("#000080"), ) init { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteOption.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteOption.kt index 4e89fec..9c4059a 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteOption.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteOption.kt @@ -1,3 +1,3 @@ package kr.co.vividnext.sodalive.live.roulette.config -data class RouletteOption(var title: String, var weight: Int, var percentage: Int = 50) +data class RouletteOption(var title: String, var weight: Int, var percentage: String = "50.00") diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt index 9676641..c23fb09 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt @@ -11,6 +11,7 @@ import kr.co.vividnext.sodalive.live.roulette.RouletteItem import kr.co.vividnext.sodalive.live.roulette.RoulettePreview import kr.co.vividnext.sodalive.live.roulette.RoulettePreviewItem import kr.co.vividnext.sodalive.live.roulette.RouletteRepository +import kotlin.math.floor class RouletteSettingsViewModel(private val repository: RouletteRepository) : BaseViewModel() { @@ -57,7 +58,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba } fun addOption(newOption: RouletteOption) { - if (options.size >= 6) return + if (options.size >= 10) return options.add(newOption) recalculatePercentages(options) @@ -77,7 +78,8 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba private fun recalculatePercentages(options: List) { val totalWeight = options.sumOf { it.weight } val updatedOptions = options.asSequence().map { option -> - option.copy(percentage = (option.weight.toDouble() / totalWeight * 100).toInt()) + val percent = floor(option.weight.toDouble() / totalWeight * 10000) / 100 + option.copy(percentage = String.format("%.2f", percent)) }.toList() removeAllAndAddOptions(updatedOptions) diff --git a/app/src/main/res/layout/fragment_roulette_settings.xml b/app/src/main/res/layout/fragment_roulette_settings.xml index 75f1c6b..e32cbf8 100644 --- a/app/src/main/res/layout/fragment_roulette_settings.xml +++ b/app/src/main/res/layout/fragment_roulette_settings.xml @@ -112,7 +112,7 @@ android:layout_alignParentStart="true" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_medium" - android:text="※ 룰렛 옵션은 최소 2개,\n최대 6개까지 설정할 수 있습니다." + android:text="※ 룰렛 옵션은 최소 2개,\n최대 10개까지 설정할 수 있습니다." android:textColor="@color/color_ff5c49" android:textSize="13.3sp" />