/// <summary>
/// 刷新所有玩家颜色下拉框 —— 禁用已被其他玩家选中的颜色
/// </summary>
private void RefreshAllPlayerColors()
{
// 收集所有已被占用的颜色ID(排除Random=0)
HashSet<int> usedColorIds = new HashSet<int>();
foreach (var player in Players)
{
if (player.ColorId > 0)
usedColorIds.Add(player.ColorId);
}
// 2. 加入AI玩家已选颜色(新增这一段)
foreach (var aiPlayer in AIPlayers)
{
if (aiPlayer.ColorId > 0)
usedColorIds.Add(aiPlayer.ColorId);
}
// 遍历所有玩家颜色下拉框
for (int i = 0; i < ddPlayerColors.Length; i++)
{
var ddColor = ddPlayerColors;
//var currentPlayerColorId = Players.Count > i ? Players.ColorId : -1;
int currentColorId = -1;
// 判断当前控件对应的是人类玩家还是AI玩家
if (i < Players.Count)
{
currentColorId = Players.ColorId;
}
else if (i < Players.Count + AIPlayers.Count)
{
int aiIndex = i - Players.Count;
currentColorId = AIPlayers[aiIndex].ColorId;
}
// 遍历颜色项(0=Random,永远可选)
for (int c = 0; c < ddColor.Items.Count; c++)
{
bool isRandom = c == 0;
bool isOwnColor = (c == currentColorId);
bool isColorUsed = usedColorIds.Contains(c);