Exemplo n.º 1
0
 //Register new item to our list, this method is purely used to avoid duplicates in our list
 public void RegisterNewItem(Handlable item)
 {
     lock (RegisteredItems)
     {
         if (RegisteredItems.Contains <Handlable>(item))
         {
             throw new Exception("Item with the same name and type already registered.");
         }
         AssingHandle(item);
         RegisteredItems.Add(item);
         item.Init(this);
     }
 }
Exemplo n.º 2
0
        //Double checks internal handles to reduce Steam work
        private void AssingHandle(Handlable item)
        {
            Random rnd = new Random();

            do
            {
                item.Handle = (ulong)rnd.Next();

                lock (RegisteredItems)
                {
                    foreach (Handlable hd in RegisteredItems)
                    {
                        if (hd.Handle == item.Handle)
                        {
                            item.Handle = 0;
                            break;
                        }
                    }
                }
            } while (item.Handle == 0);
        }