当前位置: 首页>>代码示例>>C#>>正文


C# Group.OnShuffled方法代码示例

本文整理汇总了C#中Group.OnShuffled方法的典型用法代码示例。如果您正苦于以下问题:C# Group.OnShuffled方法的具体用法?C# Group.OnShuffled怎么用?C# Group.OnShuffled使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Group的用法示例。


在下文中一共展示了Group.OnShuffled方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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();
 }
开发者ID:karlnp,项目名称:OCTGN,代码行数:76,代码来源:ClientHandler.cs

示例2: Shuffled

 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;
     }
     group.FilledShuffleSlots += card.Length;
     if (group.FilledShuffleSlots > group.Count)
     {
         Program.TraceWarning("[Shuffled] Too many card positions received.");
         return;
     }
     // If it's the first packet we receive for this shuffle, clear all Types
     if (!group.HasReceivedFirstShuffledMessage)
         foreach (Card c in group) c.Type = null;
     group.HasReceivedFirstShuffledMessage = true;
     // Check that the server didn't change our positions
     if (card[0] >> 16 == Player.LocalPlayer.Id && group.MyShufflePos != null)
     {
         if (pos.Where((t, i) => t != @group.MyShufflePos[i]).Any())
         {
             Program.TraceWarning("[Shuffled] The server has changed the order of the cards.");
         }
         group.MyShufflePos = null;
     }
     // 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;
         group[i].SetVisibility(ci.Visible ? DataNew.Entities.GroupVisibility.Everybody : DataNew.Entities.GroupVisibility.Nobody, null);
     }
     if (group.FilledShuffleSlots == group.Count)
         group.OnShuffled();
 }
开发者ID:Kamalisk,项目名称:OCTGN,代码行数:49,代码来源:ClientHandler.cs

示例3: 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();
        }
开发者ID:vanzeeaj,项目名称:OCTGN,代码行数:75,代码来源:ClientHandler.cs


注:本文中的Group.OnShuffled方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。