コード例 #1
0
        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();
        }
コード例 #2
0
        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);
            }
        }