AdvancedLogParser.ServerView.ServerView C# (CSharp) Method

ServerView() public method

public ServerView ( Server server ) : System
server Server
return System
        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);
        }