private void bDeleteRank_Click( object sender, EventArgs e )
{
if ( vRanks.SelectedItem != null ) {
selectedRank = null;
int index = vRanks.SelectedIndex;
Rank deletedRank = RankManager.FindRank( index );
if ( deletedRank == null )
return;
string messages = "";
// Ask for substitute rank
DeleteRankPopup popup = new DeleteRankPopup( deletedRank );
if ( popup.ShowDialog() != DialogResult.OK )
return;
Rank replacementRank = popup.SubstituteRank;
// Update default rank
if ( RankManager.DefaultRank == deletedRank ) {
RankManager.DefaultRank = replacementRank;
messages += "DefaultRank has been changed to \"" + replacementRank.Name + "\"" + Environment.NewLine;
}
// Update defaultbuild rank
if ( RankManager.DefaultBuildRank == deletedRank ) {
RankManager.DefaultBuildRank = replacementRank;
messages += "DefaultBuildRank has been changed to \"" + replacementRank.Name + "\"" + Environment.NewLine;
}
// Update patrolled rank
if ( RankManager.PatrolledRank == deletedRank ) {
RankManager.PatrolledRank = replacementRank;
messages += "PatrolledRank has been changed to \"" + replacementRank.Name + "\"" + Environment.NewLine;
}
// Update patrolled rank
if ( RankManager.BlockDBAutoEnableRank == deletedRank ) {
RankManager.BlockDBAutoEnableRank = replacementRank;
messages += "BlockDBAutoEnableRank has been changed to \"" + replacementRank.Name + "\"" + Environment.NewLine;
}
// Delete rank
if ( RankManager.DeleteRank( deletedRank, replacementRank ) ) {
messages += "Some of the rank limits for kick, ban, promote, and/or demote have been reset." + Environment.NewLine;
}
vRanks.Items.RemoveAt( index );
// Update world permissions
string worldUpdates = "";
foreach ( WorldListEntry world in Worlds ) {
if ( world.AccessPermission == ToComboBoxOption( deletedRank ) ) {
world.AccessPermission = ToComboBoxOption( replacementRank );
worldUpdates += " - " + world.Name + ": access permission changed to " + replacementRank.Name + Environment.NewLine;
}
if ( world.BuildPermission == ToComboBoxOption( deletedRank ) ) {
world.BuildPermission = ToComboBoxOption( replacementRank );
worldUpdates += " - " + world.Name + ": build permission changed to " + replacementRank.Name + Environment.NewLine;
}
}
rankNameList.RemoveAt( index + 1 );
if ( worldUpdates.Length > 0 ) {
messages += "The following worlds were affected:" + Environment.NewLine + worldUpdates;
}
if ( messages.Length > 0 ) {
MessageBox.Show( messages, "Warning" );
}
RebuildRankList();
if ( index < vRanks.Items.Count ) {
vRanks.SelectedIndex = index;
}
}
}