using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; using System.Drawing.Imaging; namespace m { /// /// Summary description for GobPanel. /// public class GobPanel : System.Windows.Forms.UserControl { private System.Windows.Forms.ComboBox comboSide; private FlowPanel flowPanel; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; public GobPanel() { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); // Populate sides combo string[] astr = Helper.GetDisplayNames(typeof(Side)); comboSide.Items.AddRange(astr); comboSide.SelectedIndex = 0; // comboSide.DataSource = Enum.GetNames(typeof(Side)); // Fill FillGobPanel(); } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Component Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.comboSide = new System.Windows.Forms.ComboBox(); this.flowPanel = new m.FlowPanel(); this.SuspendLayout(); // // comboSide // this.comboSide.Dock = System.Windows.Forms.DockStyle.Top; this.comboSide.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboSide.Name = "comboSide"; this.comboSide.Size = new System.Drawing.Size(208, 21); this.comboSide.TabIndex = 0; this.comboSide.SelectedIndexChanged += new System.EventHandler(this.comboSide_SelectedIndexChanged); // // flowPanel // this.flowPanel.BackColor = System.Drawing.Color.DarkKhaki; this.flowPanel.Dock = System.Windows.Forms.DockStyle.Fill; this.flowPanel.Location = new System.Drawing.Point(0, 21); this.flowPanel.Name = "flowPanel"; this.flowPanel.Size = new System.Drawing.Size(208, 451); this.flowPanel.TabIndex = 1; // // GobPanel // this.AutoScroll = true; this.BackColor = System.Drawing.Color.Black; this.Controls.AddRange(new System.Windows.Forms.Control[] { this.flowPanel, this.comboSide}); this.Name = "GobPanel"; this.Size = new System.Drawing.Size(208, 472); this.ResumeLayout(false); } #endregion private void ChangeSide(Control ctl, Side side) { if (!(ctl is PictureBox)) return; PictureBox picb = (PictureBox)ctl; Unit unit = picb.Tag as Unit; if (unit == null) return; unit.Side = side; picb.Image = unit.GetBitmap(new Size(16, 16), null); } void FillGobPanel() { flowPanel.SuspendLayout(); flowPanel.Controls.Clear(); // If no plugins are enabled then add the default (HT) MapItems if (Globals.Plugins.Count == 0) { flowPanel.Controls.Add(CreatePictureBox(new Headquarters(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Radar(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new ResearchCenter(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new VehicleTransportStation(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Reactor(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new HumanResourceCenter(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Processor(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Warehouse(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new MachineGunTower(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new RocketTower(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new MobileHeadquarters(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new GalaxMiner(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new LightTank(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new MediumTank(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new MachineGunVehicle(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new RocketVehicle(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Artillery(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new ShortRangeInfantry(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new LongRangeInfantry(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new TakeoverSpecialist(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Andy(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Fox(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Galaxite(0, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Galaxite(1, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Galaxite(2, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Galaxite(3, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Galaxite(4, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Galaxite(5, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Galaxite(6, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Galaxite(7, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Galaxite(8, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Area(2, 2))); flowPanel.Controls.Add(CreatePictureBox(new Wall(15))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("RocketArtifact", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Tree", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Tree1", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Tree2", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Tree3", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Tree4", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Tree5", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Tree6", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Tree7", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Plant", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Plant1", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Plant2", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Plant3", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Plant4", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Plant5", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Scenery("Rocks", 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Replicator(Side.sideNeutral, 0, 0))); flowPanel.Controls.Add(CreatePictureBox(new Activator (Side.sideNeutral, 0, 0))); // Otherwise let the plugins add their own MapItems } else { foreach (IPlugin plug in Globals.Plugins) { IMapItem[] ami = plug.GetMapItems(); foreach (IMapItem mi in ami) { flowPanel.Controls.Add(CreatePictureBox(mi)); } } } flowPanel.ResumeLayout(); } PictureBox CreatePictureBox(IMapItem mi) { PictureBox picb = new PictureBox(); picb.Image = mi.GetBitmap(new Size(16, 16), null); picb.SizeMode = PictureBoxSizeMode.AutoSize; picb.Tag = (Object)mi; picb.MouseDown += new MouseEventHandler(PictureBox_MouseDown); return picb; } private void comboSide_SelectedIndexChanged(object sender, System.EventArgs e) { Side side = (Side)comboSide.SelectedIndex; #if false if (m_ctlSelected != null) { ChangeSide(m_ctlSelected, side); OnMapItemSelectionChanged((IMapItem)m_ctlSelected.Tag); } #endif foreach (PictureBox picb in flowPanel.Controls) { ChangeSide(picb, side); } } private void PictureBox_MouseDown(Object sender, MouseEventArgs e) { Control ctlSelected = (Control)sender; // Start drag drop LevelData ldat = new LevelData(); IMapItem mi = (IMapItem)ctlSelected.Tag; ldat.ami = new IMapItem[] { mi }; ldat.txMouse = e.X / 16.0; ldat.tyMouse = e.Y / 16.0; ldat.Grid.Width = mi.Grid.Width; ldat.Grid.Height = mi.Grid.Height; DoDragDrop(ldat, DragDropEffects.Copy); } } }