Esempio n. 1
0
 private void OnLevelDataUpdate(LevelDataEventArgs e)
 {
     if (LevelDataUpdate != null)
     {
         LevelDataUpdate(this, e);
     }
 }
Esempio n. 2
0
        public void UpdateLevelData(object sender, LevelDataEventArgs e)
        {
            // Собственно говоря, этот код лучше не трогать, потому что он пока что идеально работает.
            // Здесь (достаточно криво) реализуется часть паттерна "наблюдатель", который, в общем-то, здесь почти и
            // не нужен (ObservableCollection все делает за нас), но более простого способа обновить байндинги я
            // так и не нашел.

            if (e.NeedsReload)
            {
                levelData = e.Data;
                if (levelData != null)
                {
                    levelData.LevelResize += HandleLevelResize;
                }
                CurrentSelectionObject = null;

                NotifyPropertyChanged("IsFileOpened");
                NotifyPropertyChanged("SpawnPosition");
                NotifyPropertyChanged("SpawnPositionVisibility");
                NotifyPropertyChanged("SpawnBig");
            }

            if (e.NeedsResize)
            {
                NotifyPropertyChanged("LevelWidth");
                NotifyPropertyChanged("LevelHeight");
                NotifyPropertyChanged("GridWidth");
                NotifyPropertyChanged("GridHeight");
            }

            // Возможность обновлять слои по-отдельности, вероятно, пригодится в дальнейшем.
            if (e.ObjectsToUpdate != null)
            {
                foreach (string objectToUpdate in e.ObjectsToUpdate)
                {
                    NotifyPropertyChanged(objectToUpdate);
                }
            }

            NotifyPropertyChanged("LevelObjects");
            NotifyPropertyChanged("CurrentSelectionObject");
        }