public void RemoveClickHandler(Object sender, EventArgs e, int playerIndex, CurrentGameData currentGameData) { PlayerData player = currentGameData.players[playerIndex]; int i = 0; int index = this.List.IndexOf(((Button)sender).Parent); if (currentGameData.State == State.NotStarted) { currentGameData.players.RemoveAt(playerIndex); Remove(sender); PlayersLeft--; } else if (((Button)sender).Text == "Undo") { PlayersLeft++; lblPlace[playerIndex].Text = ""; player.Eliminated = false; player.Place = 0; ((Button)sender).Text = "Remove"; // Loop through players to the player with the last bounty foreach (PlayerData playerData in currentGameData.players) { if (playerData.Name == lastPlayerWithBounty) { playerData.Bounties--; lblBounties[i].Text = playerData.Bounties.ToString(); } i++; } } else { ((Panel)((TableLayoutPanel)((Button)sender).Parent).Parent).AutoScrollPosition = new Point(0, 0); ((Button)sender).Text = "Undo"; // Set place label switch (PlayersLeft) { case 1: lblPlace[index].Text = "1st"; break; case 2: lblPlace[index].Text = "2nd"; break; case 3: lblPlace[index].Text = "3rd"; break; default: lblPlace[index].Text = PlayersLeft + "th"; break; } player.Eliminated = true; player.Place = PlayersLeft; #if DEBUG // Output isEliminated to console for easy debugging Console.Write("Eliminated:\n"); foreach (PlayerData playerData in currentGameData.players) { Console.Write(playerData.Name + ": " + playerData.Eliminated + "\n"); } Console.Write("--------\n"); #endif i = 0; int j = 0; foreach (Control c in this) { if (c != (TableLayoutPanel)((Button)sender).Parent) { if (lblPlace[j].Text.Length == 0) { i++; c.Top = i * 67; } else { btnRemove[j].Enabled = false; //Convert.ToInt32(c.Tag) - 1 } } j++; } // Reposition Panel to last panel ((TableLayoutPanel)((Button)sender).Parent).Top = PlayersLeft * 67; PlayersLeft--; if (!Equals(settings[Settings.Default.IniSection]["Bounties"], "0")) { if (PlayersLeft > 0) { AddBounty(player, index, false, sender, currentGameData); } } if (PlayersLeft == 1) { DisableButtons(); frmMain.EndOfGame(lblPlace); } } currentGameData.UpdateCurrentGameData(PlayersLeft); }