private void lbl_sneeze_display_MouseMove(object sender, MouseEventArgs e) { int sneezeIndex; SneezeRecord record = GetSneezeAtLocation(lbl_sneeze_display.PointToClient(MousePosition), out sneezeIndex); if (record == null) { toolTip.ToolTipTitle = ""; toolTip.SetToolTip(lbl_sneeze_display, null); lastHoveredSneeze = null; return; } if (record == lastHoveredSneeze) { return; } lastHoveredSneeze = record; SneezeDatabase database = SneezeClientListener.Database; string toolTipText = $"Username: {database.IdToUser[record.UserId].Name}\n" + $"Date: {record.Date.ToLocalTime():g}"; if (!String.IsNullOrEmpty(record.Comment)) { toolTipText += "\n\n" + record.Comment; } toolTip.ToolTipTitle = "Sneeze " + (database.CountdownStart - sneezeIndex); toolTip.SetToolTip(lbl_sneeze_display, toolTipText); }
private static void TellClientToRemoveSneeze(SneezeRecord sneeze) { string serializedSneeze = sneeze.SerializeToString(); foreach (ConnectionInfo info in NetworkComms.AllConnectionInfo()) { TCPConnection.GetConnection(info).SendObject(Messages.SneezeRemoved, serializedSneeze); } }
private static void HandlePersonSneezed(PacketHeader header, Connection connection, string serializedSneeze) { SneezeRecord sneeze; lock (dbSync) { sneeze = new SneezeRecord(); sneeze.DeserializeFromString(serializedSneeze); Database?.Sneezes.Add(sneeze); } PersonSneezed?.Invoke(sneeze); }
private void SneezeClientListener_PersonSneezed(SneezeRecord sneeze) { BeginInvoke(new Action(() => { lbl_sneeze_display.Invalidate(); if (sneeze.UserId != CurrentUser?.UserGuid) { string userName = SneezeClientListener.Database.IdToUser[sneeze.UserId].Name; notifyIcon?.ShowBalloonTip(2000, "Sneeze Countdown", $"{userName} sneezed!", ToolTipIcon.None); } CalculateApocalypse(); })); }
/// <summary> /// Writes the provided sneeze to the console window /// </summary> private static void HandleSneeze(PacketHeader header, Connection connection, string serializedSneeze) { SneezeRecord sneeze = new SneezeRecord(); sneeze.DeserializeFromString(serializedSneeze); database.Sneezes.Add(sneeze); database.Save(); foreach (ConnectionInfo info in NetworkComms.AllConnectionInfo()) { TCPConnection.GetConnection(info).SendObject(Messages.PersonSneezed, serializedSneeze); } }
private static void HandleUpdateSneeze(PacketHeader header, Connection connection, string serializedSneeze) { SneezeRecord sneeze = new SneezeRecord(); sneeze.DeserializeFromString(serializedSneeze); int sneezeIndex = database.Sneezes.FindIndex(s => s.Date == sneeze.Date); if (sneezeIndex == -1) { return; // This should never happen, but just in case... } database.Sneezes[sneezeIndex] = sneeze; database.Save(); TellClientToUpdateSneeze(sneeze); }
private static void HandleRemoveSneeze(PacketHeader header, Connection connection, string serializedSneeze) { SneezeRecord sneeze = new SneezeRecord(); sneeze.DeserializeFromString(serializedSneeze); var sneezeRecord = database.Sneezes.Find(s => s.Date == sneeze.Date); if (sneezeRecord != null) { database.Sneezes.Remove(sneezeRecord); database.Save(); //We could send the entire database, but let's try to avoid that if possible. TellClientToRemoveSneeze(sneeze); } }
private void lbl_sneeze_display_MouseClick(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Left) != 0) { return; } int sneezeIndex; SneezeRecord sneeze = GetSneezeAtLocation(lbl_sneeze_display.PointToClient(MousePosition), out sneezeIndex); if (sneeze == null) { return; } if (sneeze.UserId != CurrentUser?.UserGuid) { return; } ContextMenuStrip strip = new ContextMenuStrip(); strip.Items.Add("Edit sneeze...", null, (s, a) => { using (SneezeCommentEditorForm form = new SneezeCommentEditorForm(sneeze.Comment)) { if (form.ShowDialog(this) == DialogResult.OK) { sneeze.Comment = form.UpdatedText; SneezeClientListener.UpdateSneeze(sneeze); } } }); strip.Items.Add("Remove sneeze...", null, (s, a) => { if (DialogResult.Yes == MessageBox.Show(this, "Are you sure you want to delete this sneeze?", "Delete Sneeze", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { SneezeClientListener.RemoveSneeze(sneeze); } }); strip.Show(MousePosition); }
private static void HandleSneezeRemoved(PacketHeader header, Connection connection, string serializedSneeze) { lock (dbSync) { if (database == null) { return; } SneezeRecord sneeze = new SneezeRecord(); sneeze.DeserializeFromString(serializedSneeze); var sneezeRecord = database.Sneezes.Find(s => s.Date == sneeze.Date); if (sneezeRecord != null) { database.Sneezes.Remove(sneezeRecord); SneezeRemoved?.Invoke(); } } }
private static void HandleSneezeUpdated(PacketHeader header, Connection connection, string serializedSneeze) { lock (dbSync) { if (database == null) { return; } SneezeRecord sneeze = new SneezeRecord(); sneeze.DeserializeFromString(serializedSneeze); int sneezeIndex = database.Sneezes.FindIndex(s => s.Date == sneeze.Date); if (sneezeIndex == -1) { return; // This should never happen, but just in case... } database.Sneezes[sneezeIndex] = sneeze; } SneezeUpdated?.Invoke(); }
public static void UpdateSneeze(SneezeRecord sneeze) { SendToServer(Messages.UpdateSneeze, sneeze); }
public static void RemoveSneeze(SneezeRecord sneeze) { SendToServer(Messages.RemoveSneeze, sneeze); }
private void lbl_sneeze_display_MouseLeave(object sender, EventArgs e) { toolTip.ToolTipTitle = ""; lastHoveredSneeze = null; }
private void lbl_sneeze_display_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.Clear(Settings.Default.BoardBackColor); Font font = lbl_sneeze_display.Font; SneezeDatabase database = SneezeClientListener.Database; if (database == null) { if (failedToConnect) { DrawTextCentered("Failed to connect to server at specified IP.", g, font, Color.Red); } else if (dbError != DatabaseErrorType.None) { if (dbError == DatabaseErrorType.VersionNumberConflict) { DrawTextCentered("Database version number does not match.\nPlease update your client to the latest version.", g, font, Color.Red); } } else if (connectionClosed) { DrawTextCentered("Connection to server was lost.", g, font, Color.Red); } else if (connectionOpening) { DrawTextCentered("Connecting...", g, font, Color.Blue); } else { DrawTextCentered("Not connected to server.", g, font, Color.Black); } return; } if (database.Sneezes.Count == 0) { DrawTextCentered("No recorded sneezes.", g, font, Color.Black); return; } int viewLeftEdge = scroll_horizontal.Value; int maxSneezesPerColumn = lbl_sneeze_display.Height / font.Height; string maxWidthNumber = new string('9', database.CountdownStart.ToString().Length); Size numberSize = TextRenderer.MeasureText(g, maxWidthNumber, font); int startingIndex = Math.Min(viewLeftEdge / (numberSize.Width + numberPadding) * maxSneezesPerColumn, database.Sneezes.Count - 1); int endingIndex = Math.Min((viewLeftEdge + lbl_sneeze_display.Width + numberSize.Width) / (numberSize.Width + numberPadding) * maxSneezesPerColumn, database.Sneezes.Count - 1); for (int i = startingIndex; i <= endingIndex; i++) { int sneezeNum = database.CountdownStart - i; //DO NOT DELETE! May need this later. //if (sneezeNum < 26359) // sneezeNum -= 5; //if (sneezeNum < 24423) // sneezeNum += 2; int columnNum = i / maxSneezesPerColumn; int rowNum = i % maxSneezesPerColumn; Point textLoc = new Point(columnNum * (numberSize.Width + numberPadding) - viewLeftEdge, rowNum * font.Height); SneezeRecord sneeze = database.Sneezes[i]; if (!string.IsNullOrEmpty(sneeze.Comment)) { using (Pen p = new Pen(Color.Goldenrod)) g.DrawRectangle(p, textLoc.X, textLoc.Y, numberSize.Width, numberSize.Height); } UserInfo userInfo; Color sneezeColor = Color.Black; if (database.IdToUser.TryGetValue(sneeze.UserId, out userInfo)) { sneezeColor = userInfo.Color; } TextRenderer.DrawText(g, sneezeNum.ToString(), font, textLoc, sneezeColor); } }