fix: 出牌记录玩家名错位bug,改为从消息字符串解析玩家名

This commit is contained in:
flykhan 2026-04-26 21:28:41 +08:00
parent cdfcce357d
commit 570d96c5c0

View File

@ -160,8 +160,6 @@ fun LocalGameScreen(
var pendingDrawStateForWild by remember { mutableStateOf<GameState?>(null) }
var pendingDrawCardIdxForWild by remember { mutableIntStateOf(-1) }
var gameLog by remember { mutableStateOf(listOf<String>()) }
// 记录每条日志对应的玩家名,用于行着色
var gameLogPlayers by remember { mutableStateOf(listOf<String>()) }
var showLogDialog by remember { mutableStateOf(false) }
var showSwapTargetPicker by remember { mutableStateOf(false) }
var pendingSwapState by remember { mutableStateOf<GameState?>(null) }
@ -177,8 +175,6 @@ fun LocalGameScreen(
if (state.message.isNotEmpty()) {
// 倒序插入,最新在上
gameLog = listOf(state.message) + gameLog
// 记录该消息对应的操作玩家(消息格式: "玩家名 出了..." 或 "玩家名 摸了..."
gameLogPlayers = listOf(state.currentPlayer.name) + gameLogPlayers
}
if (state.isGameOver) {
isGameOver = true
@ -420,7 +416,7 @@ fun LocalGameScreen(
modifier = Modifier.fillMaxSize()
) {
itemsIndexed(gameLog) { index, msg ->
val playerName = gameLogPlayers.getOrElse(index) { parsePlayerName(msg) }
val playerName = parsePlayerName(msg)
val avatar = getBotAvatar(playerName)
val colorText = parseColorText(msg)
val cardColor = cardColorMap[colorText]