public MapPainter(Map map, ScreenForm s) { Screen = s; Map = map; DrawSize = Screen.Size; Loader = new TileLoader(); Av = new List <Point>(); SwitchMap(map); }
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); } }
public ShopPanel(Hero hero, ScreenForm form, Rectangle borders) { GetOptionsWidth = () => Width * 2 / 10; GetChoosingWidth = () => Width * 3 / 10; GetInfoWidth = () => Width * 5 / 10; Items = new List <Item>(); Customer = hero; Shop = hero.S; ChosenItem = Shop.Items[0]; Bounds = borders; OptionsPanel = new TableLayoutPanel() { Location = new Point(0, 0), BackColor = Color.Black, }; OptionsPanel.Size = new Size(GetOptionsWidth(), Height); OptionsPanel.RowCount = 8; OptionsPanel.ColumnCount = 2; for (int t = 0; t <= 3; ++t) { var tier = t; var b = new Button() { Size = new Size(GetOptionsWidth() / OptionsPanel.ColumnCount, Height / OptionsPanel.RowCount), Margin = new Padding(0), Padding = new Padding(0), Text = "T" + (tier).ToString(), Font = new Font(FontFamily.GenericSansSerif, 36), ForeColor = Colors.ItemTierColors[tier] }; b.Click += (sender, args) => { Items = Shop.GetItemsWithTier(tier); UpdateItems(); }; OptionsPanel.Controls.Add(b); } for (var r = (int)StatType.MaxHP; r < (int)StatType.STOP; ++r) { var stat = r; var b = new Button() { Size = new Size(GetOptionsWidth() / OptionsPanel.ColumnCount, Height / OptionsPanel.RowCount), Margin = new Padding(0), Padding = new Padding(0), //Text = "+" + ((StatType)stat).ToString(), Image = IconLoader.GetIcon((StatType)r, new Size(64, 64)), }; b.Click += (sender, args) => { Items = Shop.GetItemsWithSortedStat((StatType)stat); UpdateItems(); }; OptionsPanel.Controls.Add(b); } ItemChoosingPanel = new FlowLayoutPanel() { Location = new Point(GetOptionsWidth(), 0), FlowDirection = FlowDirection.LeftToRight, AutoScroll = true, }; ItemChoosingPanel.Size = new Size(GetChoosingWidth(), Height); InfoPanel = new FlowLayoutPanel() { Location = new Point(GetOptionsWidth() + GetChoosingWidth(), 0), BackColor = Color.Black }; InfoPanel.Size = new Size(GetInfoWidth(), Height - 128); BuyButton = new Button() { Font = new Font(FontFamily.GenericSansSerif, 32), }; BuyButton.Size = new Size(GetInfoWidth(), 128); BuyButton.Location = new Point(GetOptionsWidth() + GetChoosingWidth(), Height - 128); BuyButton.Click += (sender, args) => { Customer.BuyItem(ChosenItem); form.StatPanelUpdate(); form.PlayerPanelUpdate(); }; ExplanationPanel = new FlowLayoutPanel(); ExplanationPanel.BackColor = Color.Black; ExplanationPanel.MinimumSize = new Size(GetInfoWidth(), 36); ExplanationPanel.AutoSize = true; RecipePanel = new TableLayoutPanel() { RowStyles = { new RowStyle(SizeType.AutoSize) } }; RecipePanel.Size = new Size(GetInfoWidth() / 2, 64); UpgradePanel = new TableLayoutPanel() { RowStyles = { new RowStyle(SizeType.AutoSize) } }; UpgradePanel.Size = new Size(GetInfoWidth() / 2, 64); Controls.Add(OptionsPanel); Controls.Add(ItemChoosingPanel); Controls.Add(InfoPanel); Controls.Add(BuyButton); UpdateInfo(); /* * SizeChanged += (sender, args) => * { * RecipePanel.Size = new Size(Width * 3 / 10, 64); * ExplanationPanel.Size = new Size(Width * 3 / 10, 36); * ItemChoosingPanel.Size = new Size(Width * 7 / 10, Height); * BuyButton.Size = new Size(Width * 3 / 10, 128); * UpdateInfo(); * }; */ }