123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- //
- // Copyright 2020 Electronic Arts Inc.
- //
- // The Command & Conquer Map Editor and corresponding source code is free
- // software: you can redistribute it and/or modify it under the terms of
- // the GNU General Public License as published by the Free Software Foundation,
- // either version 3 of the License, or (at your option) any later version.
- // The Command & Conquer Map Editor and corresponding source code is distributed
- // in the hope that it will be useful, but with permitted additional restrictions
- // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
- // distributed with this program. You should have received a copy of the
- // GNU General Public License along with permitted additional restrictions
- // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
- using MobiusEditor.Interface;
- using MobiusEditor.Model;
- using MobiusEditor.Utility;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Linq;
- using System.Windows.Forms;
- namespace MobiusEditor.Controls
- {
- public partial class TerrainProperties : UserControl
- {
- private bool isMockObject;
- public IGamePlugin Plugin { get; private set; }
- private Terrain terrain;
- public Terrain Terrain
- {
- get => terrain;
- set
- {
- if (terrain != value)
- {
- terrain = value;
- Rebind();
- }
- }
- }
- public TerrainProperties()
- {
- InitializeComponent();
- }
- public void Initialize(IGamePlugin plugin, bool isMockObject)
- {
- this.isMockObject = isMockObject;
- Plugin = plugin;
- plugin.Map.Triggers.CollectionChanged += Triggers_CollectionChanged;
- UpdateDataSource();
- Disposed += (sender, e) =>
- {
- Terrain = null;
- plugin.Map.Triggers.CollectionChanged -= Triggers_CollectionChanged;
- };
- }
- private void Triggers_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
- {
- UpdateDataSource();
- }
- private void UpdateDataSource()
- {
- triggerComboBox.DataSource = Trigger.None.Yield().Concat(Plugin.Map.Triggers.Select(t => t.Name).Distinct()).ToArray();
- }
- private void Rebind()
- {
- triggerComboBox.DataBindings.Clear();
- if (terrain == null)
- {
- return;
- }
- triggerComboBox.DataBindings.Add("SelectedItem", terrain, "Trigger");
- }
- private void Obj_PropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- switch (e.PropertyName)
- {
- case "Type":
- {
- Rebind();
- }
- break;
- }
- if (!isMockObject)
- {
- Plugin.Dirty = true;
- }
- }
- private void comboBox_SelectedValueChanged(object sender, EventArgs e)
- {
- foreach (Binding binding in (sender as ComboBox).DataBindings)
- {
- binding.WriteValue();
- }
- }
- private void nud_ValueChanged(object sender, EventArgs e)
- {
- foreach (Binding binding in (sender as NumericUpDown).DataBindings)
- {
- binding.WriteValue();
- }
- }
- }
- public class TerrainPropertiesPopup : ToolStripDropDown
- {
- private readonly ToolStripControlHost host;
- public TerrainProperties TerrainProperties { get; private set; }
- public TerrainPropertiesPopup(IGamePlugin plugin, Terrain terrain)
- {
- TerrainProperties = new TerrainProperties();
- TerrainProperties.Initialize(plugin, false);
- TerrainProperties.Terrain = terrain;
- host = new ToolStripControlHost(TerrainProperties);
- Padding = Margin = host.Padding = host.Margin = Padding.Empty;
- MinimumSize = TerrainProperties.MinimumSize;
- TerrainProperties.MinimumSize = TerrainProperties.Size;
- MaximumSize = TerrainProperties.MaximumSize;
- TerrainProperties.MaximumSize = TerrainProperties.Size;
- Size = TerrainProperties.Size;
- Items.Add(host);
- TerrainProperties.Disposed += (sender, e) =>
- {
- TerrainProperties = null;
- Dispose(true);
- };
- }
- protected override void OnClosed(ToolStripDropDownClosedEventArgs e)
- {
- base.OnClosed(e);
- TerrainProperties.Terrain = null;
- }
- }
- }
|