public ModButton(string _modName, int _modSafety, ModButtonStates _modState, Action <string> click, Action <string, bool> hover) { Size = new Size(177, 88); Config.Theme(this); state["modName"] = _modName; state["modState"] = _modState; state["modSafety"] = _modSafety; this.click = click; this.hover = hover; Click += (object sender, EventArgs e) => { if (state["btnHover"]) { click(state["modName"]); ContextMenuStrip.Show(Cursor.Position); } }; MouseEnter += (object sender, EventArgs e) => { this.hover(state["modName"], true); state["mouseOver"] = true; }; MouseLeave += (object sender, EventArgs e) => { this.hover(state["modName"], false); state["mouseOver"] = false; }; Timer timer = new Timer(); timer.Interval = 50; timer.Tick += (object sender, EventArgs e) => { Draw(CreateGraphics()); }; timer.Start(); }
public OldModButton(string _modName, int _modSafety, ModButtonStates _modState, Func <string, bool> clickResult) { modName = new MetroLabel(); modSafety = new MetroLabel(); modState = new MetroLabel(); Size = new Size(177, 88); modName.Text = _modName; modName.Parent = this; //modName.BackColor = Color.Transparent; modState.Parent = this; //modState.BackColor = Color.Transparent; BorderStyle = BorderStyle.FixedSingle; modState.UseCustomForeColor = true; switch (_modState) { case ModButtonStates.Available: modState.Text = "Available"; modState.ForeColor = Color.DodgerBlue; break; case ModButtonStates.Disabled: modState.Text = "Disabled"; modState.ForeColor = Color.Red; break; case ModButtonStates.Installed: modState.Text = "Installed"; modState.ForeColor = Color.Green; break; default: break; } Color[] safety = { Color.Gray, Color.Green, Color.Orange, Color.OrangeRed, Color.Red }; switch (_modSafety) { case -1: modSafety.Text = "Mod Loader"; break; case 0: modSafety.Text = "Safe"; break; case 1: modSafety.Text = "Medium"; break; case 2: modSafety.Text = "Unsafe"; break; case 3: modSafety.Text = "Dangerous"; break; default: modSafety.Text = "N/A"; break; } modSafety.Parent = this; modSafety.UseCustomForeColor = true; modSafety.ForeColor = safety[_modSafety + 1]; modName.AutoSize = true; modState.AutoSize = true; modSafety.AutoSize = true; setLocation(new Point(0, 0)); BringToFront(); Controls.AddRange(new Control[] { modName, modSafety, modState }); modName.BringToFront(); modState.BringToFront(); modSafety.BringToFront(); Config.Theme(Controls); Theme = modSafety.Theme; clickR = clickResult; MouseDown += button1_Click;//Why the heck this does not work? (Nothing happens on mouse click) modName.MouseDown += button1_Click; modSafety.MouseDown += button1_Click; modState.MouseDown += button1_Click; }
public ModButton(string _modName, int _modSafety, ModButtonStates _modState, Action <string> clickResult, Action <string> hoverResult) { modNameColor = Color.FromArgb(170, 170, 170); Size = new Size(177, 88); modName = _modName; BorderStyle = BorderStyle.FixedSingle; switch (_modState) { case ModButtonStates.Available: modState = "Available"; modStateColor = Color.DodgerBlue; break; case ModButtonStates.Disabled: modState = "Disabled"; modStateColor = Color.Red; break; case ModButtonStates.Installed: modState = "Installed"; modStateColor = Color.Green; break; default: break; } switch (_modSafety) { case -1: modSafety = "Inapplicable"; modSafetyColor = Color.FromArgb(170, 170, 170); break; case 0: modSafety = "Safe"; modSafetyColor = Color.Green; break; case 1: modSafety = "Medium"; modSafetyColor = Color.Orange; break; case 2: modSafety = "Unsafe"; modSafetyColor = Color.OrangeRed; break; case 3: modSafety = "Dangerous"; modSafetyColor = Color.Red; break; default: modSafety = "N/A"; modSafetyColor = Color.FromArgb(170, 170, 170); break; } setLocation(new Point(0, 0)); BringToFront(); clickR = clickResult; hoverR = hoverResult; MouseDown += button1_Click; MouseHover += MouseHover_; //BackColorChanged += ColorChanged; State = _modState; }