本文整理汇总了C#中Group.Remove方法的典型用法代码示例。如果您正苦于以下问题:C# Group.Remove方法的具体用法?C# Group.Remove怎么用?C# Group.Remove使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Group
的用法示例。
在下文中一共展示了Group.Remove方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Shuffled
/// <summary>Part of a shuffle process.</summary>
/// <param name="group">The group being shuffled.</param>
/// <param name="card">An array containing the CardIdentity ids to shuffle.</param>
//public void Shuffle(Group group, int[] card)
//{
// // Array to hold the new aliases (sent to CreateAlias)
// ulong[] aliases = new ulong[card.Length];
// // Intialize the group shuffle
// group.FilledShuffleSlots = 0;
// group.HasReceivedFirstShuffledMessage = false;
// group.MyShufflePos = new short[card.Length];
// // Check if we received enough cards
// if (Player.Count - 1 <= 0) return;
// if (card.Length < group.Count / (Player.Count - 1))
// Program.Trace.TraceEvent(TraceEventType.Warning, EventIds.Event, "[Shuffle] Too few cards received.");
// // Do the shuffling
// var rnd = new CryptoRandom();
// for (int i = card.Length - 1; i >= 0; i--)
// {
// int r = rnd.Next(i + 1);
// int tc = card[r];
// card[r] = card[i];
// // Create a new alias, if the card is not face up
// CardIdentity ci = CardIdentity.Find(tc);
// if (group.FindByCardIdentity(ci) != null)
// {
// card[i] = tc; aliases[i] = ulong.MaxValue;
// ci.Visible = true;
// }
// else
// {
// ci = new CardIdentity(ExtensionMethods.GenerateCardId());
// ci.MySecret = ci.Alias = true;
// ci.Key = ((ulong)Crypto.PositiveRandom()) << 32 | (uint)tc;
// card[i] = ci.Id; aliases[i] = Crypto.ModExp(ci.Key);
// ci.Visible = false;
// }
// // Give a random position to the card
// group.MyShufflePos[i] = (short)Crypto.Random(group.Count);
// }
// // Send the results
// Program.Client.Rpc.CreateAlias(card, aliases);
// Program.Client.Rpc.Shuffled(group, card, group.MyShufflePos);
//}
public void Shuffled(Group group, int[] card, short[] pos)
{
// Check the args
if (card.Length != pos.Length)
{
Program.TraceWarning("[Shuffled] Cards and positions lengths don't match.");
return;
}
// Insert the cards
for (int j = 0; j < card.Length; j++)
{
// Get the wished position
int i = pos[j];
// Get the card
CardIdentity ci = CardIdentity.Find(card[j]);
if (ci == null)
{
Program.TraceWarning("[Shuffled] Card not found.");
continue;
}
// Check if the slot is free, otherwise choose the first free one
//if (i >= group.Count || group[i].Type != null) i = group.FindNextFreeSlot(i);
//if (i >= group.Count) continue;
// Set the type
//group[i].Type = ci;
var mcard = group[j];
group.Remove(group[j]);
group.AddAt(mcard, i);
group[i].SetVisibility(ci.Visible ? DataNew.Entities.GroupVisibility.Everybody : DataNew.Entities.GroupVisibility.Nobody, null);
}
group.OnShuffled();
}
示例2: Shuffled
/// <summary>Part of a shuffle process.</summary>
/// <param name="group">The group being shuffled.</param>
/// <param name="card">An array containing the CardIdentity ids to shuffle.</param>
//public void Shuffle(Group group, int[] card)
//{
// // Array to hold the new aliases (sent to CreateAlias)
// ulong[] aliases = new ulong[card.Length];
// // Intialize the group shuffle
// group.FilledShuffleSlots = 0;
// group.HasReceivedFirstShuffledMessage = false;
// group.MyShufflePos = new short[card.Length];
// // Check if we received enough cards
// if (Player.Count - 1 <= 0) return;
// if (card.Length < group.Count / (Player.Count - 1))
// Program.Trace.TraceEvent(TraceEventType.Warning, EventIds.Event, "[Shuffle] Too few cards received.");
// // Do the shuffling
// var rnd = new CryptoRandom();
// for (int i = card.Length - 1; i >= 0; i--)
// {
// int r = rnd.Next(i + 1);
// int tc = card[r];
// card[r] = card[i];
// // Create a new alias, if the card is not face up
// CardIdentity ci = CardIdentity.Find(tc);
// if (group.FindByCardIdentity(ci) != null)
// {
// card[i] = tc; aliases[i] = ulong.MaxValue;
// ci.Visible = true;
// }
// else
// {
// ci = new CardIdentity(ExtensionMethods.GenerateCardId());
// ci.MySecret = ci.Alias = true;
// ci.Key = ((ulong)Crypto.PositiveRandom()) << 32 | (uint)tc;
// card[i] = ci.Id; aliases[i] = Crypto.ModExp(ci.Key);
// ci.Visible = false;
// }
// // Give a random position to the card
// group.MyShufflePos[i] = (short)Crypto.Random(group.Count);
// }
// // Send the results
// Program.Client.Rpc.CreateAlias(card, aliases);
// Program.Client.Rpc.Shuffled(group, card, group.MyShufflePos);
//}
public void Shuffled(Group group, int[] card, short[] pos)
{
// Check the args
if (card.Length != pos.Length)
{
Program.TraceWarning("[Shuffled] Cards and positions lengths don't match.");
return;
}
//Build the Dict. of new locations
var shuffled = new Dictionary<int, Card>();
for (int i = 0; i < card.Length; i++)
{
shuffled.Add(pos[i],group[i]);
// Get the card
CardIdentity ci = CardIdentity.Find(card[i]);
if (ci == null)
{
Program.TraceWarning("[Shuffled] Card not found.");
continue;
}
group[i].SetVisibility(ci.Visible ? DataNew.Entities.GroupVisibility.Everybody : DataNew.Entities.GroupVisibility.Nobody, null);
}
//Move cards to their new indexes
for (int i = 0; i < card.Length; i++)
{
group.Remove(shuffled[i]);
group.AddAt(shuffled[i], i);
}
group.OnShuffled();
}