public static Server MakeMegaServer() { Server retVal = new Server(); foreach (Server srv in Servers.List.Values) { foreach (Character ch in srv.RecentCharacters) { if (!retVal.RecentCharacters.Contains(ch)) { retVal.RecentCharacters.Add(ch); } } foreach (Player pl in srv.RecentPlayers) { if (!retVal.RecentPlayers.Contains(pl)) { retVal.RecentPlayers.Add(pl); } } foreach (Player dm in srv.RecentDMs) { if (!retVal.RecentDMs.Contains(dm)) { retVal.RecentDMs.Add(dm); } } } return retVal; }
public ServerView(Server server) { this.Paint += new PaintEventHandler(ServerView_Paint); Dictionary<uint, Log> serverEnforcementLogs = new Dictionary<uint, Log>(); Dictionary<uint, Log> serverAdvancementLogs = new Dictionary<uint, Log>(); Dictionary<uint, Log> serverDeathLogs = new Dictionary<uint, Log>(); if (server == null) { server = MakeMegaServer(); serverEnforcementLogs = Logs.EnforcementAlerts; serverAdvancementLogs = Logs.AdvancementAlerts; serverDeathLogs = Logs.DeathAlerts; this.Name = String.Format("All ALFA ({0} Characters, {1} DMs, {2} Alerts)", server.RecentCharacters.Count, server.RecentDMs.Count, serverEnforcementLogs.Count + serverAdvancementLogs.Count + serverDeathLogs.Count); this.Text = this.Name; } else { foreach (Log log in Logs.EnforcementAlerts.Values) { if (log.ServerId == server.ServerId) { serverEnforcementLogs.Add(log.Id, log); } } foreach (Log log in Logs.AdvancementAlerts.Values) { if (log.ServerId == server.ServerId) { serverAdvancementLogs.Add(log.Id, log); } } foreach (Log log in Logs.DeathAlerts.Values) { if (log.ServerId == server.ServerId) { serverDeathLogs.Add(log.Id, log); } } this.Name = String.Format("ALFA{0:000} ({1} Characters, {2} DMs, {3} Alerts)", server.ServerId, server.RecentCharacters.Count, server.RecentDMs.Count, serverEnforcementLogs.Count + serverAdvancementLogs.Count + serverDeathLogs.Count); this.Text = this.Name; } savedServer = server; characterListLabel.Text = "Characters Played in the Last 30 Days"; characterListLabel.Size = characterListLabel.PreferredSize; characterListLabel.Location = new Point(0, 0); characterList.View = View.Details; dmList.View = View.Details; enforcementList.View = View.Details; advancementList.View = View.Details; deathList.View = View.Details; characterList.FullRowSelect = true; dmList.FullRowSelect = true; enforcementList.FullRowSelect = true; advancementList.FullRowSelect = true; deathList.FullRowSelect = true; characterList.DoubleClick += DoubleClickCharacterList; dmList.DoubleClick += DoubleClickDMList; enforcementList.DoubleClick += DoubleClickEnforcementList; advancementList.DoubleClick += DoubleClickAdvancementList; deathList.DoubleClick += DoubleClickDeathList; characterList.ColumnClick += ColumnSort; dmList.ColumnClick += ColumnSort; enforcementList.ColumnClick += ColumnSort; advancementList.ColumnClick += ColumnSort; deathList.ColumnClick += ColumnSort; characterList.Width = 550; characterList.Height = 440; characterList.Columns.Add("Character"); characterList.Columns.Add("Player"); characterList.Columns.Add("Class"); characterList.Columns.Add("DMtime"); characterList.Columns.Add("Alerts"); characterList.Location = new Point(0, characterListLabel.Location.Y + characterListLabel.Height); foreach (Character currentChar in server.RecentCharacters) { if (currentChar.IsPlayable == false) { continue; } if ((currentChar.Status & 0x001) == 0x001) // dead { continue; } string charClass = PlayerDetails.ClassToAbbreviation(currentChar.Class1) + currentChar.Level1; if (currentChar.Class2 < 255) { charClass += "/" + PlayerDetails.ClassToAbbreviation(currentChar.Class2) + currentChar.Level2; } if (currentChar.Class3 < 255) { charClass += "/" + PlayerDetails.ClassToAbbreviation(currentChar.Class3) + currentChar.Level3; } string alerts = ""; WealthLevel currentWeath = InfoGather.GetWealthLevel(currentChar); if (currentWeath == WealthLevel.VeryPoor) { alerts += "Poor!"; } else if (currentWeath == WealthLevel.VeryRich) { alerts += "Rich!"; } else if (currentWeath == WealthLevel.Cutoff) { alerts += "CUTOFF WEALTH!"; } string aliases = ""; try { foreach (string alias in Players.ListByPlayerId[currentChar.PlayerId].CommunityIds) { if (aliases == "") { aliases = alias; } else { aliases += "/ " + alias; } } } catch { aliases = "Unknown player"; } characterList.Items.Add(new ListViewItem(new string[] { currentChar.Name, aliases, charClass, String.Format("{0:N1}", currentChar.DMTime), alerts, currentChar.Id.ToString() })); } characterList.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); characterList.Columns[1].Width = 150; characterList.Columns[2].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); characterList.Columns[3].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); characterList.Columns[4].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); dmListLabel.Text = "DMs Logging in During the Last 30 Days"; dmListLabel.Size = dmListLabel.PreferredSize; dmListLabel.Location = new Point(0, characterList.Location.Y + characterList.Height + 10); dmList.Width = characterList.Width; dmList.Height = 250; dmList.Location = new Point(0, dmListLabel.Location.Y + dmListLabel.Height); dmList.Columns.Add("DM Community Ids"); dmList.Columns[0].Width = 400; foreach (Player dm in server.RecentDMs) { string name = ""; foreach (string gsid in dm.CommunityIds) { if (name == "") { name = gsid; } else { name += "/ " + gsid; } } dmList.Items.Add(new ListViewItem(new string[] { name, dm.playerIds[0].ToString() })); } dmList.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); enforcementListLabel.Text = "Enforcement Alerts"; enforcementListLabel.Size = enforcementListLabel.PreferredSize; enforcementListLabel.Location = new Point(characterList.Width + 10, 0); enforcementList.Width = 340; enforcementList.Height = 200; enforcementList.Location = new Point(characterList.Width + 10, enforcementListLabel.Location.Y + enforcementListLabel.Height); enforcementList.Columns.Add("Character"); enforcementList.Columns.Add("Time"); enforcementList.Columns.Add("Event"); foreach (Log log in serverEnforcementLogs.Values) { string character = "Unknown Character"; if (log.CharacterId > 0 && Characters.List.Keys.Contains(log.CharacterId)) character = Characters.List[log.CharacterId].Name; enforcementList.Items.Add(new ListViewItem(new string[] { character, String.Format("{0}/{1}/{2}", log.Time.Year, log.Time.Month, log.Time.Day), log.Event, log.Id.ToString() })); } enforcementList.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); enforcementList.Columns[1].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); enforcementList.Columns[2].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); advancementListLabel.Text = "Advancement Alerts"; advancementListLabel.Size = advancementListLabel.PreferredSize; advancementListLabel.Location = new Point(characterList.Width + 10, enforcementList.Location.Y + enforcementList.Height + 10); advancementList.Width = 340; advancementList.Height = 230; advancementList.Location = new Point(characterList.Width + 10, advancementListLabel.Location.Y + advancementListLabel.Height); advancementList.Columns.Add("Character"); advancementList.Columns.Add("Time"); advancementList.Columns.Add("Event"); foreach (Log log in serverAdvancementLogs.Values) { string character = "Unknown Character"; if(log.CharacterId > 0 && Characters.List.Keys.Contains(log.CharacterId)) character = Characters.List[log.CharacterId].Name; advancementList.Items.Add(new ListViewItem(new string[] { character, String.Format("{0}/{1}/{2}", log.Time.Year, log.Time.Month, log.Time.Day), log.Event, log.Id.ToString() })); } advancementList.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); advancementList.Columns[1].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); advancementList.Columns[2].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); deathListLabel.Text = "Death Alerts"; deathListLabel.Size = deathListLabel.PreferredSize; deathListLabel.Location = new Point(characterList.Width + 10, advancementList.Location.Y + advancementList.Height + 10); deathList.Width = 340; deathList.Height = 230; deathList.Location = new Point(characterList.Width + 10, deathListLabel.Location.Y + deathListLabel.Height); deathList.Columns.Add("Character"); deathList.Columns.Add("Time"); deathList.Columns.Add("Event"); foreach (Log log in serverDeathLogs.Values) { string character = "Unknown Character"; try { if (log.CharacterId > 0) character = Characters.List[log.CharacterId].Name; } catch { } deathList.Items.Add(new ListViewItem(new string[] { character, String.Format("{0}/{1}/{2}", log.Time.Year, log.Time.Month, log.Time.Day), log.Event, log.Id.ToString() })); } deathList.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); deathList.Columns[1].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); deathList.Columns[2].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); alignmentPieLabel.Text = "Wealth Distribution"; alignmentPieLabel.Size = alignmentPieLabel.PreferredSize; alignmentPieLabel.Location = new Point(enforcementList.Location.X + enforcementList.Width + 10, 0); alignmentPieLabel.Click += PieLabel_Click; alignmentPie.Size = new Size(350, 350); alignmentPie.Location = new Point(alignmentPieLabel.Location.X, alignmentPieLabel.Location.Y + alignmentPieLabel.Height); dmTimePieLabel.Text = "DM Coverage"; dmTimePieLabel.Size = dmTimePieLabel.PreferredSize; dmTimePieLabel.Location = new Point(alignmentPie.Location.X, alignmentPie.Location.Y + alignmentPie.Height + 10); dmTimePieLabel.Click += PieLabel_Click; dmTimePie.Size = new Size(350, 350); dmTimePie.Location = new Point(alignmentPieLabel.Location.X, dmTimePieLabel.Location.Y + dmTimePieLabel.Height); legendLabel.Text = "Very Poor\n\nPoor\n\nTarget\n\nRich\n\nVery Rich\n\nCutoff Wealth"; legendLabel.Size = legendLabel.PreferredSize; legendLabel.Location = new Point(alignmentPie.Location.X + alignmentPie.Width + 50, alignmentPieLabel.Location.Y + alignmentPieLabel.Height); legendLabelTwo.Text = "DMed\n\nUn-DMed"; legendLabelTwo.Size = legendLabelTwo.PreferredSize; legendLabelTwo.Location = new Point(dmTimePie.Location.X + dmTimePie.Width + 50, dmTimePieLabel.Location.Y + dmTimePieLabel.Height); this.Width = dmTimePie.Width + dmTimePie.Location.X + 210; this.Height = dmTimePie.Height + dmTimePie.Location.Y + 30; this.Controls.Add(characterListLabel); this.Controls.Add(characterList); this.Controls.Add(dmListLabel); this.Controls.Add(dmList); this.Controls.Add(enforcementListLabel); this.Controls.Add(enforcementList); this.Controls.Add(advancementListLabel); this.Controls.Add(advancementList); this.Controls.Add(deathListLabel); this.Controls.Add(deathList); this.Controls.Add(alignmentPieLabel); this.Controls.Add(dmTimePieLabel); this.Controls.Add(legendLabel); this.Controls.Add(legendLabelTwo); }
public static void IdentifyLogins() { currentLoader.status.Text = "Identifying players..."; Application.DoEvents(); foreach (Log thisLog in Logs.RecentLogins.Values) { try { if (!Servers.List.Keys.Contains(thisLog.ServerId)) { Server srv = new Server() { ServerId = thisLog.ServerId }; Servers.List.Add(thisLog.ServerId, srv); } Server currentServer = Servers.List[thisLog.ServerId]; if (thisLog.EventDescription.Contains("Dungeon Master:")) { Player dm = Players.ListByPlayerId[Characters.List[thisLog.CharacterId].PlayerId]; Characters.List[thisLog.CharacterId].IsDMAvatar = true; if (!currentServer.RecentDMs.Contains(dm)) { currentServer.RecentDMs.Add(dm); } } else { Character character = Characters.List[thisLog.CharacterId]; if (!currentServer.RecentCharacters.Contains(character)) { currentServer.RecentCharacters.Add(character); } Player player = Players.ListByPlayerId[Characters.List[thisLog.CharacterId].PlayerId]; if (!currentServer.RecentPlayers.Contains(player)) { currentServer.RecentPlayers.Add(player); } } } catch { } } foreach (Server server in Servers.List.Values) { foreach (Character ch in server.RecentCharacters) { if (ch.IsDMAvatar) { server.RecentCharacters.Remove(ch); } } } }