public LevelObject GetObjectAtCurrentPosition(bool searchAreas = true) { foreach (Listener listener in LevelObjects) { BitmapImage resource = LevelObjectTypeConverter.GetObjectResource(listener.ObjectType); bool isHorizontal = listener.Direction == "left" || listener.Direction == "right"; double objectWidth = (isHorizontal ? resource.PixelHeight : resource.PixelWidth) / LevelObjectSizeConverter.BLOCK_PIXEL_SIZE; double objectHeight = (isHorizontal ? resource.PixelWidth : resource.PixelHeight) / LevelObjectSizeConverter.BLOCK_PIXEL_SIZE; if (currentPosition.X >= listener.X && currentPosition.X <= listener.X + objectWidth && currentPosition.Y >= listener.Y && currentPosition.Y <= listener.Y + objectHeight) { return(listener); } } if (searchAreas) { foreach (Area area in levelData.Areas) { if (currentPosition.X >= area.X && currentPosition.X <= area.X + area.Width && currentPosition.Y >= area.Y && currentPosition.Y <= area.Y + area.Height) { return(area); } } } return(null); }
private void ConstructButtons() { for (int i = 0; i < BlockConverter.MAX_ID; i++) { string blockName = BlockConverter.GetBlockName(i); if (blockName != null) { // Блин, как-то коряво выглядит. Можно, конечно, было передавать только ID, но вариант с // двукратным получением имени блока мне кажется еще хуже. ToggleButton button = ConstructBlockButton(i, blockName); blockButtons[i] = button; ButtonPanel.Children.Add(button); } } ConstructSeparator(); foreach (string objectType in LevelObjectTypeConverter.GetAllListeners()) { ToggleButton button = ConstructListenerButton(objectType); listenerButtons[objectType] = button; ButtonPanel.Children.Add(button); } ConstructSeparator(); foreach (string objectType in LevelObjectTypeConverter.GetAllEntities()) { ToggleButton button = ConstructListenerButton(objectType); listenerButtons[objectType] = button; ButtonPanel.Children.Add(button); } }
private ToggleButton ConstructListenerButton(string objectType) { LevelObjectTypeConverter objectTypeConverter = new LevelObjectTypeConverter(); BitmapImage backgroundImage = objectTypeConverter.Convert(objectType, typeof(BitmapImage), null, CultureInfo.CurrentCulture) as BitmapImage; ToggleButton button = ConstructButton(backgroundImage, objectType, ListenerButton_Click); button.ToolTip = objectType; return(button); }
private void PropertiesPanel_Loaded(object sender, RoutedEventArgs e) { var typeConverter = new LevelObjectTypeConverter(); ObjectIcon.Source = typeConverter.Convert(levelObject.ObjectType, typeof(BitmapImage), "IgnoreExceptions", CultureInfo.InvariantCulture) as BitmapImage; ObjectName.Content = levelObject.ObjectType; foreach (var editableProperty in levelObject.GetEditableProperties()) { string value = levelObject.GetType().GetProperty(editableProperty.Name).GetValue(levelObject).ToString(); propertyList.Add(new PropertyListEntry { Name = editableProperty.Name, Value = value }); } PropertyList.ItemsSource = propertyList; }