예제 #1
0
        /// <summary>
        /// Finishes the item setup, adds it to the item databases, adds an encounter trackable
        /// blah, blah, blah
        /// </summary>
        public static void SetupItem(this PickupObject item, string shortDesc, string longDesc, string idPool = "psm")
        {
            try
            {
                item.encounterTrackable = null;

                ETGMod.Databases.Items.SetupItem(item, item.name);
                SpriteBuilder.AddToAmmonomicon(item.sprite.GetCurrentSpriteDef());
                item.encounterTrackable.journalData.AmmonomiconSprite = item.sprite.GetCurrentSpriteDef().name;

                item.SetName(item.name);
                item.SetShortDescription(shortDesc);
                item.SetLongDescription(longDesc);

                if (item is PlayerItem)
                {
                    (item as PlayerItem).consumable = false;
                }
                Gungeon.Game.Items.Add(idPool + ":" + item.name.ToLower().Replace(" ", "_"), item);
                AddedItems.Add(item);
                ETGMod.Databases.Items.Add(item);
            }
            catch (Exception e)
            {
                ETGModConsole.Log(e.Message);
                ETGModConsole.Log(e.StackTrace);
            }
        }
예제 #2
0
 private void CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
 {
     if (e.NewItems != null)
     {
         if (AddedItems == null)
         {
             AddedItems = new List <object>(e.NewItems.Count);
         }
         foreach (var item in e.NewItems)
         {
             AddedItems.Add(item);
         }
     }
     if (e.OldItems != null)
     {
         if (RemovedItems == null)
         {
             RemovedItems = new List <object>(e.OldItems.Count);
         }
         foreach (var item in e.OldItems)
         {
             RemovedItems.Add(item);
         }
     }
 }
예제 #3
0
        private void RaiseLanguageAddInteractionRequest()
        {
            var item = new GeneralLanguage();

            if (RaiseLanguageEditInteractionRequest(item, "Create Language".Localize()))
            {
                AddedItems.Add(item);
                InnerItems.Add(item);
            }
        }
예제 #4
0
        /// <summary>
        /// Rebuild the binding chain to establish property change monitoring,
        /// additionally setting up collection change event listening on the
        /// source object (if it is a collection)
        /// </summary>
        public override void RefreshBinding()
        {
            base.RefreshBinding();

            object newValue = GetBoundValue();

            if (newValue != _Collection)
            {
                // Remove collectionchanged event watcher:
                if (_Collection != null)
                {
                    _Collection.CollectionChanged -= CollectionChanged;
                    if (_Collection is IEnumerable)
                    {
                        // Remove items from the old collection:
                        var enumerable = (IEnumerable)_Collection;
                        if (RemovedItems == null)
                        {
                            RemovedItems = new List <object>();
                        }
                        foreach (var item in enumerable)
                        {
                            RemovedItems.Add(item);
                        }
                    }
                }

                // Add collectionchanged event watcher:
                if (newValue != null && newValue is INotifyCollectionChanged)
                {
                    var newCollection = (INotifyCollectionChanged)newValue;
                    newCollection.CollectionChanged += CollectionChanged;
                    _Collection = newCollection;
                    if (newCollection is IEnumerable)
                    {
                        // Add items from the new collection:
                        var enumerable = (IEnumerable)newCollection;
                        if (AddedItems == null)
                        {
                            AddedItems = new List <object>();
                        }
                        foreach (var item in enumerable)
                        {
                            AddedItems.Add(item);
                        }
                    }
                }
                else
                {
                    _Collection = null;
                }
            }
        }
예제 #5
0
 public void Add(T item)
 {
     item.PropertyChanged += OnPropertyChanged;
     AddedItems.Add(item);
     InnerItems.Add(item);
 }