using System; using System.Windows.Forms; using System.Drawing; using System.Threading; namespace FINN { public class frmMain : Form { private System.Windows.Forms.PictureBox imgButton_next; private System.Windows.Forms.PictureBox imgButton_cancel; private udpServer udp; private Thread rec; private System.Windows.Forms.Timer Clock; private bool alreadyFired =false; public frmMain() { //color representing the main block of background text's color Color backColor = ColorTranslator.FromHtml("#FE00BE"); //setup window components this.BackgroundImage = new Bitmap("Graphics/exclude/wave.bmp"); this.Size = new System.Drawing.Size(597,296); this.FormBorderStyle = FormBorderStyle.None; // <=- Annoying whilst debugging this.Text = "TOK's FINN"; this.StartPosition=FormStartPosition.CenterScreen; //imgButton_next Setup imgButton_next = new PictureBox(); imgButton_next.Width = 103; imgButton_next.Height = 47; imgButton_next.Top = 247; imgButton_next.Left = 10; imgButton_next.Image = new Bitmap("Graphics/exclude/next.bmp"); imgButton_next.Click += new EventHandler(imgButton_next_click); imgButton_next.MouseDown += new MouseEventHandler(imgButton_next_MouseDown); imgButton_next.MouseUp += new MouseEventHandler(imgButton_next_MouseUp); this.Controls.Add(imgButton_next); //imgButton_cancel Setup imgButton_cancel = new PictureBox(); imgButton_cancel.Width = 103; imgButton_cancel.Height = 47; imgButton_cancel.Top = 247; imgButton_cancel.Left = 480; imgButton_cancel.Image = new Bitmap("Graphics/exclude/cancel.bmp"); imgButton_cancel.Click += new EventHandler(imgButton_cancel_click); imgButton_cancel.MouseDown += new MouseEventHandler(imgButton_cancel_MouseDown); imgButton_cancel.MouseUp += new MouseEventHandler(imgButton_cancel_MouseUp); this.Controls.Add(imgButton_cancel); //lblNexus setup Label lblNexus = new Label(); lblNexus.BackColor = backColor; lblNexus.Text = "\"Hi! I'm TOK, and I'll be your guide around\nTree Of Knowledge's Fun Interactive Network Nexus (FINN)..."; lblNexus.Font = new Font("Arial", 14); lblNexus.ForeColor = Color.White; lblNexus.Top = 25; lblNexus.Left = 25; lblNexus.Width = 370; lblNexus.Height = 60; this.Controls.Add(lblNexus); //lblMain setup Label lblMain = new Label(); lblMain.BackColor = backColor; lblMain.ForeColor = Color.White; lblMain.Font = new Font("Arial", 14); lblMain.Text += "When you click 'Next', I'll look"; lblMain.Text += "\naround to see if there are any"; lblMain.Text += "\nother games going on near you.\""; lblMain.Top = 95; lblMain.Left = 25; lblMain.Width = 270; lblMain.Height = 80; this.Controls.Add(lblMain); } //make our images behave like buttons private void imgButton_cancel_MouseDown(object sender, MouseEventArgs e) { if(e.Button == MouseButtons.Left) { imgButton_cancel.Image = new Bitmap("Graphics/exclude/cancel_down.bmp"); } } private void imgButton_cancel_MouseUp(object sender, MouseEventArgs e) { if(e.Button == MouseButtons.Left) { imgButton_cancel.Image = new Bitmap("Graphics/exclude/cancel.bmp"); } } private void imgButton_next_MouseDown(object sender, MouseEventArgs e) { if(e.Button == MouseButtons.Left) { imgButton_next.Image = new Bitmap("Graphics/exclude/next_down.bmp"); } } private void imgButton_next_MouseUp(object sender, MouseEventArgs e) { if(e.Button == MouseButtons.Left) { imgButton_next.Image = new Bitmap("Graphics/exclude/next.bmp"); } } //acctually do something when we are clicked private void imgButton_cancel_click(object sender, EventArgs e) { Application.Exit(); } private void imgButton_next_click(object sender, EventArgs e) { Console.WriteLine("imgButton next clicked"); try { udp = new udpServer(); udp.broadcast("?|games", 9090); udp.CancelTimer += new udpServer.CancelTimerHandler(udp_CancelTimer); Clock = new System.Windows.Forms.Timer(); Clock.Interval = 1000; Clock.Start(); Clock.Tick += new EventHandler(Timer_Tick); rec = new Thread(new ThreadStart(udp.recData)); rec.IsBackground = true; rec.Start(); this.Visible = false; //Stop thread and show form in timer Clock } catch(Exception ex) { MessageBox.Show( ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Console.WriteLine(ex.Message); } } private void udp_CancelTimer(object sender, EventArgs e) { Console.WriteLine("CancelTimer Fired"); //open the tokbox! if(!alreadyFired) { Console.WriteLine("Trying to show form"); alreadyFired = true; handleTimer(); } } private void handleTimer() { try { Clock.Stop(); tokbox myTokBox = new tokbox(1, "network game found", "I found a network game going on.... \nwould you like to connect to it?", udp.gameip); //it's the displaying of these forms that fails. if(myTokBox.ShowDialog(this) == DialogResult.Cancel) { frmNetChoose frmNetChooser = new frmNetChoose(); frmNetChooser.Show(); } else { frmAvatar AvatarForm = new frmAvatar(); AvatarForm.Show(); AvatarForm.setip(udp.gameip); } udp.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private void Timer_Tick(object sender, EventArgs e) { Console.WriteLine("Timer_Tick fired"); try { this.Hide(); frmNetChoose frmNetChooser = new frmNetChoose(); frmNetChooser.Show(); Clock.Stop(); } catch(Exception ex) { Console.WriteLine(ex.Message + ex.InnerException + ex.StackTrace); MessageBox.Show( ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } Console.WriteLine("End of timer tick"); } } }