private void Elements_draw(List <string> Elements_selected, List <string> Elements_available, Form Form, FontFamily Dosis_font_family) { this.Controls.Clear(); int i = 0; foreach (string element in Elements_selected) { Color Hover_Color = Color.FromArgb(109, 109, 109); Color Prime_Color; if (i == Selected_index && Selected_left_bool) { Prime_Color = Color.FromArgb(196, 196, 198); } else { Prime_Color = Color.FromArgb(142, 140, 144); } PictureBox PB = new PictureBox(); PB.BackColor = Prime_Color; PB.Location = new Point(10, 15 * i + 30); PB.Size = new Size(101, 15); PB.Cursor = Cursors.Hand; this.Controls.Add(PB); Label PB_label = new Label(); PB_label.Parent = PB; PB_label.Text = element; PB_label.TextAlign = ContentAlignment.TopCenter; PB_label.ForeColor = Color.White; PB_label.Font = new Font(Dosis_font_family, 8, FontStyle.Bold); PB_label.MouseEnter += (object o, EventArgs EA) => { PB.BackColor = Hover_Color; }; PB_label.MouseLeave += (object o, EventArgs EA) => { PB.BackColor = Prime_Color; }; PB_label.Click += (object o, EventArgs EA) => { Selected_index = Elements_selected.IndexOf(element); Selected_left_bool = true; Elements_draw(Elements_selected, Elements_available, Form, Dosis_font_family); }; i++; } int j = 0; foreach (string element in Elements_available) { Color Hover_Color = Color.FromArgb(109, 109, 109); Color Prime_Color; if (j == Selected_index && !Selected_left_bool) { Prime_Color = Color.FromArgb(196, 196, 198); } else { Prime_Color = Color.FromArgb(142, 140, 144); } PictureBox PB = new PictureBox(); PB.BackColor = Prime_Color; PB.Location = new Point(114, 15 * j + 30); PB.Size = new Size(100, 15); PB.Cursor = Cursors.Hand; this.Controls.Add(PB); Label PB_label = new Label(); PB_label.Parent = PB; PB_label.Text = element; PB_label.TextAlign = ContentAlignment.TopCenter; PB_label.ForeColor = Color.White; PB_label.Font = new Font(Dosis_font_family, 8, FontStyle.Bold); PB_label.MouseEnter += (object o, EventArgs EA) => { PB.BackColor = Hover_Color; }; PB_label.MouseLeave += (object o, EventArgs EA) => { PB.BackColor = Prime_Color; }; PB_label.Click += (object o, EventArgs EA) => { Selected_index = Elements_available.IndexOf(element); Selected_left_bool = false; Elements_draw(Elements_selected, Elements_available, Form, Dosis_font_family); }; j++; } CurvedButtons Add = new CurvedButtons(new Size(17, 17), new Point(104, 66), 10, "../../User Interface Recources/Selection_Box_Add.png", Color.FromArgb(255, 255, 255)); Add.Click += (object o, EventArgs EA) => { string name = Interaction.InputBox("Enter Name: ", "Driver", "no name", 100, 100); Elements_selected.Add(name); Elements_draw(Elements_selected, Elements_available, Form, Dosis_font_family); }; this.Controls.Add(Add); Add.BringToFront(); CurvedButtons To_left = new CurvedButtons(new Size(17, 17), new Point(104, 80), 10, "../../User Interface Recources/Selection_Box_To_Left.png", Color.FromArgb(255, 255, 255)); To_left.Click += (object o, EventArgs EA) => { Elements_switch(Elements_selected, Elements_available, Selected_index, Selected_left_bool, Form, Dosis_font_family, 0); }; this.Controls.Add(To_left); To_left.BringToFront(); CurvedButtons To_right = new CurvedButtons(new Size(17, 17), new Point(104, 94), 10, "../../User Interface Recources/Selection_Box_To_Right.png", Color.FromArgb(255, 255, 255)); To_right.Click += (object o, EventArgs EA) => { Elements_switch(Elements_selected, Elements_available, Selected_index, Selected_left_bool, Form, Dosis_font_family, 1); }; this.Controls.Add(To_right); To_right.BringToFront(); }
//Cleaner but General_form should be just form /*public bool Simulation_state_playing = false; * public Simulation_sub_menu(int Sub_menu_width, General_form General_form, FontFamily Dosis_font_family) * { * this.BackColor = Color.FromArgb(255,255,255); * this.Size = new Size(250,General_form.Height); * this.Location = new Point(General_form.Width-Sub_menu_width, General_form.Height); * this.AutoScroll = true; * Initialize(General_form, Sub_menu_width, Dosis_font_family); * General_form.SizeChanged += (object o, EventArgs EA) => { * this.Size = new Size(Sub_menu_width, General_form.Height); * this.Location = new Point(General_form.Width - Sub_menu_width, 0); * this.Controls.Clear(); * Initialize(General_form, Sub_menu_width, Dosis_font_family); * }; * }*/ private void Initialize(Form Form, int Sub_menu_width, FontFamily Dosis_font_family) { Dictionary <string, int> menu = User_Controls.Config.simSubMenu; CurvedButtons Logo = new CurvedButtons(Form, 1); Logo.Location = new Point(User_Controls.Config.standardSubMenu["logoX"], User_Controls.Config.standardSubMenu["logoY"]); this.Controls.Add(Logo); Move_panel Drag_pad = new Move_panel(Form); this.Controls.Add(Drag_pad); CurvedButtons Divider1 = new CurvedButtons(); Divider1.Location = new Point(User_Controls.Config.standardSubMenu["deviderX"], User_Controls.Config.standardSubMenu["logoY"]); this.Controls.Add(Divider1); CurvedButtons Settings_header = new CurvedButtons(new Size(menu["settingsHeaderSizeX"], menu["settingsHeaderSizeY"]), //settingsHeaderSizeX //settingsHeaderSizeY new Point(menu["settingsHeaderX"], menu["settingsHeaderY"]), "../../User Interface Recources/Settings_Header.png"); //settingsHeaderX //settingsHeaderY this.Controls.Add(Settings_header); //ButtonSize //ButtonY int _buttonSize = menu["ButtonSize"]; CurvedButtons Weather = new CurvedButtons(new Size(_buttonSize, _buttonSize), new Point(menu["buttonStart"], menu["ButtonY"]), 30, //weatherX "../../User Interface Recources/Weather_Setting_Button.png", this.BackColor); this.Controls.Add(Weather); Weather.Click += (object obj, EventArgs args) => { General_Form.Main.SimulationScreen.SwitchSubMenus("Weather");; }; CurvedButtons Vehicle = new CurvedButtons(new Size(_buttonSize, _buttonSize), new Point(menu["buttonStart"] + menu["ButtonX"], menu["ButtonY"]), 30, //vehicleX "../../User Interface Recources/Vehicle_Setting_Button.png", this.BackColor); this.Controls.Add(Vehicle); Vehicle.Click += (object obj, EventArgs args) => { General_Form.Main.SimulationScreen.SwitchSubMenus("Vehicle");; }; CurvedButtons Driver = new CurvedButtons(new Size(_buttonSize, _buttonSize), new Point(menu["buttonStart"] + menu["ButtonX"] * 2, menu["ButtonY"]), 30, //driverX "../../User Interface Recources/Driver_Setting_Button.png", this.BackColor); this.Controls.Add(Driver); Driver.Click += (object obj, EventArgs args) => { General_Form.Main.SimulationScreen.SwitchSubMenus("Driver");; }; CurvedButtons Divider2 = new CurvedButtons(); Divider2.Location = new Point(0, menu["devider2"]); //devider2 this.Controls.Add(Divider2); CurvedButtons Divider3 = new CurvedButtons(); Divider3.Location = new Point(0, this.Height - menu["devider3"]); //devider3 this.Controls.Add(Divider3); CurvedButtons Start = new CurvedButtons(new Size(_buttonSize, _buttonSize), //controlsX, controlsY new Point(menu["buttonStart"], Form.Height - menu["controlsY"]), 35, "../../User Interface Recources/Play_Simulation_Button.png", this.BackColor); this.Controls.Add(Start); Start.BringToFront(); CurvedButtons Pause = new CurvedButtons(new Size(60, 60), new Point(20, Form.Height - 80), 35, "../../User Interface Recources/Pause_Button.png", this.BackColor); Pause.Hide(); this.Controls.Add(Pause); Pause.BringToFront(); Pause.Click += (object o, EventArgs EA) => { Pause.Hide(); Start.Show(); General_Form.Main.UserInterface.SimDataM.Stop_timer(); }; Start.Click += (object o, EventArgs EA) => { Start.Hide(); Pause.Show(); General_Form.Main.UserInterface.SimDataM.Start_timer(); }; CurvedButtons Reset = new CurvedButtons(new Size(_buttonSize, _buttonSize), new Point(menu["buttonStart"] + menu["ButtonX"], Form.Height - menu["controlsY"]), 35, "../../User Interface Recources/Reset_Simulation_Button.png", this.BackColor); this.Controls.Add(Reset); CurvedButtons Stop = new CurvedButtons(new Size(_buttonSize, _buttonSize), new Point(menu["buttonStart"] + menu["ButtonX"] * 2, Form.Height - menu["controlsY"]), 35, "../../User Interface Recources/Stop_Simulation_Button.png", this.BackColor); this.Controls.Add(Stop); Stop.Click += (object obj, EventArgs args) => { General_Form.Main.SwitchControllers(General_Form.Main.BuildScreen); General_Form.Main.UserInterface.SimDataM.Reset_timer(); Pause.Hide(); Start.Show(); }; CurvedButtons SimulationSpeed_header = new CurvedButtons(new Size(menu["speedHeaderSizeX"], menu["speedHeaderSizeY"]), //speedHeaderSizeX //speedHeaderSizeY new Point(menu["speedHeaderX"], this.Height - menu["speedHeaderY"]), "../../User Interface Recources/Simulation_Speed_Header.png"); //speedHeaderX //speedHeaderY this.Controls.Add(SimulationSpeed_header); Slider SimulationSpeed = new Slider(new Point(menu["speedX"], this.Height - menu["speedY"]), 0, 100); //speedX //speedY this.Controls.Add(SimulationSpeed); Reset.BringToFront(); Reset.Click += (object o, EventArgs EA) => { if (Pause.Visible) { General_Form.Main.UserInterface.SimDataM.Reset_timer(); Pause.Hide(); Start.Show(); SimulationSpeed.Value = 1; } else if (Start.Visible && General_Form.Main.UserInterface.SimDataM.Stopwatch.Elapsed.ToString() != "00:00:00") { General_Form.Main.UserInterface.SimDataM.Reset_timer(); SimulationSpeed.Value = 1; } }; }