Esempio n. 1
0
        private void Tick(WorldVars arg, double elapsedTime)
        {
            arg.World.Update();

            arg.UpdateManager.Update_MainThread(elapsedTime);

            Tuple <object, bool> item;

            while (_addRemoves.TryDequeue(out item))
            {
                if (item.Item2)
                {
                    #region Add

                    if (item.Item1 is AddBotArgs)
                    {
                        AddBot((AddBotArgs)item.Item1, arg);
                    }
                    else if (item.Item1 is AddWeaponArgs)
                    {
                        AddWeapon((AddWeaponArgs)item.Item1, arg);
                    }
                    else
                    {
                        throw new ApplicationException("Unknown type of item to add: " + item.Item1.GetType().ToString());
                    }

                    #endregion
                }
                else
                {
                    #region Remove

                    //NOTE: Currently, only token is valid for remove
                    RemoveArgs token = (RemoveArgs)item.Item1;

                    IMapObject mapObject = arg.Map.GetItem_UnknownType(token.Token);

                    if (mapObject != null)
                    {
                        arg.Map.RemoveItem(mapObject, false);
                    }

                    // Call delegate
                    if (token.ItemRemoved != null)
                    {
                        token.ItemRemoved();
                    }

                    #endregion
                }
            }
        }