private static void CopySlotHandler( Player player, Command cmd )
{
int slotNumber;
if ( cmd.NextInt( out slotNumber ) ) {
if ( cmd.HasNext ) {
CdCopySlot.PrintUsage( player );
return;
}
if ( slotNumber < 1 || slotNumber > player.Info.Rank.CopySlots ) {
player.Message( "CopySlot: Select a number between 1 and {0}", player.Info.Rank.CopySlots );
} else {
player.CopySlot = slotNumber - 1;
CopyState info = player.GetCopyInformation();
if ( info == null ) {
player.Message( "Selected copy slot {0} (unused).", slotNumber );
} else {
player.Message( "Selected copy slot {0}: {1} blocks from {2}, {3} old.",
slotNumber, info.Buffer.Length,
info.OriginWorld, DateTime.UtcNow.Subtract( info.CopyTime ).ToMiniString() );
}
}
} else {
CopyState[] slots = player.CopyInformation;
player.Message( "Using {0} of {1} slots. Selected slot: {2}",
slots.Count( info => info != null ), player.Info.Rank.CopySlots, player.CopySlot + 1 );
for ( int i = 0; i < slots.Length; i++ ) {
if ( slots[i] != null ) {
player.Message( " {0}: {1} blocks from {2}, {3} old",
i + 1, slots[i].Buffer.Length,
slots[i].OriginWorld, DateTime.UtcNow.Subtract( slots[i].CopyTime ).ToMiniString() );
}
}
}
}