@@ -15,13 +15,15 @@ import com.reco1l.andengine.shape.*
1515import com.reco1l.andengine.sprite.UISprite
1616import com.reco1l.andengine.text.UIText
1717import com.reco1l.andengine.theme.Colors
18+ import com.reco1l.andengine.theme.FontSize
1819import com.reco1l.andengine.theme.Size
1920import com.reco1l.andengine.theme.pct
2021import com.reco1l.andengine.theme.rem
2122import com.reco1l.andengine.theme.srem
2223import com.reco1l.andengine.ui.*
2324import com.reco1l.framework.*
2425import com.reco1l.framework.math.*
26+ import ru.nsu.ccfit.zuev.osu.Config
2527import ru.nsu.ccfit.zuev.osu.ResourceManager
2628import ru.nsu.ccfit.zuev.osu.helper.StringTable
2729import ru.nsu.ccfit.zuev.osuplus.R
@@ -41,7 +43,7 @@ class RoomPlayerCard : UILinearContainer() {
4143 style = {
4244 width = 0.025f .pct
4345 height = Size .Full
44- cornerRadius = 2f .rem
46+ radius = 2f .rem
4547 }
4648 }
4749
@@ -70,9 +72,11 @@ class RoomPlayerCard : UILinearContainer() {
7072 private class RoomPlayerButton : UIButton () {
7173
7274 private lateinit var nameText: UIText
73- private lateinit var modsIndicator: ModsIndicator
7475 private lateinit var missingIndicator: UISprite
7576
77+ private val innerContainer: UILinearContainer
78+ private var modDisplay: UIComponent ? = null
79+
7680
7781 init {
7882 width = Size .Full
@@ -86,7 +90,7 @@ class RoomPlayerCard : UILinearContainer() {
8690 backgroundColor = Theme .current.accentColor * 0.1f
8791 }
8892
89- linearContainer {
93+ innerContainer = linearContainer {
9094 orientation = Orientation .Vertical
9195 inheritAncestorsColor = false
9296
@@ -105,12 +109,6 @@ class RoomPlayerCard : UILinearContainer() {
105109 size = Vec2 (18f )
106110 }
107111 }
108-
109- + ModsIndicator ().apply {
110- minHeight = 18f // Force to take space even if no mods are enabled
111- iconSize = 18f
112- modsIndicator = this
113- }
114112 }
115113
116114 }
@@ -125,7 +123,37 @@ class RoomPlayerCard : UILinearContainer() {
125123
126124 nameText.text = player.name
127125 missingIndicator.isVisible = player.status == MissingBeatmap
128- modsIndicator.mods = if (room.gameplaySettings.isFreeMod) player.mods.values else null
126+
127+ if (Config .isPreferModAcronymInMultiplayer()) {
128+ if (modDisplay !is UIText ) {
129+ modDisplay?.detachSelf()
130+
131+ modDisplay = UIText ().apply {
132+ minHeight = 18f // Force to take space even if no mods are enabled
133+ style + = {
134+ fontSize = FontSize .XS
135+ color = it.accentColor * 0.8f
136+ }
137+ }
138+
139+ innerContainer + = modDisplay!!
140+ }
141+
142+ (modDisplay as UIText ).text = player.mods.toDisplayModString()
143+ } else {
144+ if (modDisplay !is ModsIndicator ) {
145+ modDisplay?.detachSelf()
146+
147+ modDisplay = ModsIndicator ().apply {
148+ minHeight = 18f // Force to take space even if no mods are enabled
149+ iconSize = 18f
150+ }
151+
152+ innerContainer + = modDisplay!!
153+ }
154+
155+ (modDisplay as ModsIndicator ).mods = if (room.gameplaySettings.isFreeMod) player.mods.values else null
156+ }
129157
130158 onActionLongPress = {
131159 UIDropdown (this @RoomPlayerButton).apply dropdown@{
0 commit comments