public CurrentHeroPanel(Hero h, ScreenForm f) { Hero = h; ParentForm = f; AutoSize = true; Padding = new Padding(2); //BackColor = Color.AliceBlue; var b = new Button() { Image = Hero.GetImage(), Dock = DockStyle.Bottom, AutoSize = false, BackColor = Colors.PlayerDarkColors[h.P.Game.Players.IndexOf(h.P) % Colors.count], Margin = new Padding(4), Size = new Size(128, 128), }; b.Click += (sender, args) => { h.P.Game.ChosenHero = h; ParentForm.CenterOnPoint(h.M.UnitPositions[h]); ParentForm.ControlPanelUpdate(); ParentForm.StatPanelUpdate(); }; Controls.Add(b); ItemsPanel = new TableLayoutPanel() { Padding = new Padding(0, 2, 0, 0), RowCount = 4, RowStyles = { new RowStyle(SizeType.AutoSize) }, Dock = DockStyle.Top, Size = new Size(128, 0), AutoSize = true, MaximumSize = new Size(128, 1000), }; Controls.Add(ItemsPanel); UpdateItems(); }
public HeroSkillPanel(Game g, Hero h, ScreenForm form, int width) { Game = g; Hero = h; Skills = new Dictionary <Skill, Panel>(); AutoSize = true; AutoSizeMode = AutoSizeMode.GrowOnly; Width = width - 6; FlowDirection = FlowDirection.TopDown; foreach (var skill in Hero.Skills) { var panel = new Panel(); panel.Width = width - 12; panel.BackColor = (Game.CurrentHero == Hero && skill.Availiable(Hero)) ? Color.Black : Color.DarkSlateGray; var skillName = new Label() { Dock = DockStyle.Top, Text = skill.Name, TextAlign = ContentAlignment.MiddleLeft, ForeColor = Color.Aquamarine, Font = new Font(FontFamily.GenericSerif, 24), Width = width - 12, BorderStyle = BorderStyle.None, AutoSize = true, }; var skillExp = new Label() { Dock = DockStyle.Top, Text = skill.Explanation(), TextAlign = ContentAlignment.MiddleLeft, ForeColor = Color.White, BorderStyle = BorderStyle.None, MaximumSize = new Size(width - 12, 1000), AutoSize = true, }; panel.Controls.Add(skillExp); panel.Controls.Add(skillName); if (skill.Timer > 0) { panel.Controls.Add(new PictureBox { Size = new Size(32, 32), Image = resources.IconLoader.GetIcons(new Size(32, 32))["CDR"], Dock = DockStyle.Right, }); panel.Controls.Add(new Label { Text = skill.Timer.ToString(), AutoSize = true, Dock = DockStyle.Right, Font = new Font(FontFamily.GenericSansSerif, 24), ForeColor = Color.Yellow, }); } panel.Height = skillName.Height + skillExp.Height; panel.BringToFront(); if (Game.CurrentHero == Hero) { void OnPanelOnClick(object sender, EventArgs args) { Hero.UseSkill(Hero.Skills.IndexOf(skill)); form.ControlPanelUpdate(); form.StatPanelUpdate(); form.MapUpdate(); form.PlayerPanelUpdate(); } panel.Click += OnPanelOnClick; skillName.Click += OnPanelOnClick; skillExp.Click += OnPanelOnClick; } Controls.Add(panel); Skills.Add(skill, panel); } }