Exemple #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Globals.Player != null)
        {
            var fact = Globals.Galaxy.GetFaction(Globals.MyFaction);

            int shift = 0;
            int.TryParse(Request["shift"], out shift);
            int           cnt = 0;
            StringBuilder sb  = new StringBuilder();

            sb.AppendFormat("<h2>#{0} channel chat history</h2>", Globals.MyFaction);

            string pnline = HtmlRenderingExtensions.GetPrevNext(fact.ChatEvents.Count, shift, DisplayLines);

            sb.Append("<table style='border:0; ' cellspacing='0' cellpadding='0' border='0'>");
            sb.Append(pnline);

            for (int i = Math.Max(0, fact.ChatEvents.Count - DisplayLines - shift); i < fact.ChatEvents.Count && cnt < DisplayLines; i++, cnt++)
            {
                var c = fact.ChatEvents[i];
                sb.AppendFormat("<tr><td>{0}</td><td>&lt;<span style='color:aqua;'>{1}</span>&gt;</td><td>&nbsp;{2}</td></tr>", c.Time, Server.HtmlEncode(c.Name), Server.HtmlEncode(c.Text));
            }
            sb.Append(pnline);
            sb.Append("</table>");

            litChat.Text = sb.ToString();
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        displayedPlayer = Globals.Galaxy.GetPlayer(Request["name"]);
        if (displayedPlayer == null)
        {
            return;
        }

        isOwner  = false;
        isAllied = false;
        if (Globals.Player != null)
        {
            if (Globals.Player.Name == displayedPlayer.Name)
            {
                isOwner = true;
            }
            if (Globals.Player.FactionName == displayedPlayer.FactionName)
            {
                isAllied = true;
            }
        }

        if (IsPostBack)
        {
            if (isOwner)
            {
                PurchaseUpgradeCheck();
                Globals.ResetGalaxy();
                displayedPlayer = Globals.Galaxy.GetPlayer(Request["name"]);
            }
        }
        else
        {
            if (!isOwner && isAllied)
            {
                lbSendBp.Visible    = true;
                tbBpAmmount.Visible = true;
                btnSendBp.Visible   = true;
            }
            var planet = Globals.Galaxy.GetPlanet(displayedPlayer.Name);
            lbPlanet.Text  = planet.ToHtml();
            lbFaction.Text = HtmlRenderingExtensions.GetFactionLink(displayedPlayer.FactionName);
        }

        imgRank.ImageUrl = displayedPlayer.Rank.GetImageUrl();
        lbName.Text      = displayedPlayer.Name + HtmlRenderingExtensions.GetFactionImage(displayedPlayer.FactionName);
        lbRankName.Text  = displayedPlayer.RankText;

        DisplayAwards(displayedPlayer);


        DisplayEvents();
        DisplayBuildPowerTable(displayedPlayer);
        DisplayUpgrades(displayedPlayer, isOwner);
    }
	protected void Page_Load(object sender, EventArgs e)
	{
	    const int MaxLines = 50;
        
	    int shift = 0;
	    int.TryParse(Request["shift"], out shift);

	    string nline = HtmlRenderingExtensions.GetPrevNext(int.MaxValue, shift, MaxLines);
        var sb = new StringBuilder();
        //typeof(Event)
	    var allowedTypes = new List<Type>();
        foreach (var t in Assembly.GetAssembly(typeof(Event)).GetTypes()) {
            if (t.IsSubclassOf(typeof (Event))) {
                string nam = t.Name.Remove(t.Name.Length-5,5);
				bool blocked = Request[nam] != null;
                sb.AppendFormat(
                    "<input type='checkbox' name='{0}' value='{0}' {1}>{0}&nbsp;&nbsp;",
                    nam,
                     blocked ? "checked" : "");
                if (blocked) allowedTypes.Add(t);
            }
        }
	    sb.Append("<input type='submit' value='Filter'/>");

	    sb.Append("<table style='border:0'>\n");
        sb.Append(nline);

        var p = Globals.Player;
        foreach (var ev in Globals.Galaxy.Events.Where(x => allowedTypes.Count == 0 || allowedTypes.Contains(x.GetType()) && !x.IsHiddenFrom(Globals.MyFaction)).Reverse().Skip(shift).Take(MaxLines)) {
            sb.AppendFormat(
                "<tr><td>{0}</td><td>{1}</td><td>{2}</td></tr>\n", ev.TimeOffset(p), ev.Turn, ev.ToHtml());
	    }
	    sb.Append(nline);
        
	    sb.Append("</table>");

	    litEvents.Text = sb.ToString();
        litEvents.EnableViewState = false;

	}
    protected void Page_Load(object sender, EventArgs e)
    {
        string factName = Request["name"];

        if (!IsPostBack)
        {
            Label1.Text = factName + " commanders";
        }

        const int MaxLines = 100;

        int shift = 0;

        int.TryParse(Request["shift"], out shift);

        int maxim = Globals.Galaxy.Players.Where(x => x.FactionName == factName).Count();

        string nline = HtmlRenderingExtensions.GetPrevNext(maxim, shift, MaxLines, "name=" + factName + "&");
        var    sb    = new StringBuilder();

        sb.Append("<table style='border:0px solid;' border='0' cellspacing='0' cellpadding=0'>\n");
        sb.Append(nline);
        sb.AppendLine(
            "<tr><th>Name</th><th>Rank points (wins-defeats)&nbsp;</th><th>Credits (used)&nbsp;</th><th>Credits sent - recieved&nbsp;</th><th>Clout</th><th>Skill (1v1)</th></tr>\n");
        int cnt = 0;

        foreach (var p in Globals.Galaxy.Players.Where(x => x.FactionName == factName).OrderBy(x => x.RankOrder).Skip(shift).Take(MaxLines))
        {
            sb.AppendFormat(
                "<tr><td><span style='color:aqua'/>{11}. </span>{0}</td><td>{1:F1} ({2}-{3})</td><td>{4} ({5})</td><td>{6} - {7}</td><td>{8}</td><td>{9:f0} ({10:f0})</td></tr>\n", p.ToHtml(), p.RankPoints, p.Victories, p.Defeats, p.MetalAvail, p.MetalSpent, p.SentMetal, p.RecievedMetal, p.Clout, p.Elo, p.Elo1v1, 1 + cnt++);
        }
        sb.Append(nline);

        sb.Append("</table>");
        litPlayers.Text = sb.ToString();
    }
Exemple #5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        var js = new StringBuilder();
        var t  = new StringBuilder();

        GeneratePlanetLinks(t);

        js.Append("PW.init();\n");
        js.Append("PW.graphics.SetStroke(1);\n");
        js.Append("PW.graphics.SetColor('#89fecd')\n");

        var springieStates = Globals.Server.GetSpringieStates();

        var hide = Globals.Galaxy.Planets.Where(x => x.FactionName == null).Select(x => x.ID);

        if (hide.Count() > 0)
        {
            hide = hide.Except(Globals.Galaxy.GetClaimablePlanets().Select(x => x.ID));
        }

        var planetAttacked = new Dictionary <int, string>();
        int cnt            = 0;

        foreach (var state in springieStates)
        {
            int num = cnt % 3;
            if (state.Value.ReminderEvent == ReminderEvent.OnBattleStarted)
            {
                planetAttacked[state.Value.GameStartedStatus.PlanetID] = "img/planetstatus/attacking" + num + ".png";
            }
            else
            {
                planetAttacked[state.Value.PlanetID] = "img/planetstatus/preparing" + num + ".png";
            }
            cnt++;
        }

        var planetBattles = new Dictionary <int, IEnumerable <BattleEvent> >();

        foreach (var b in Globals.Galaxy.Events.OfType <BattleEvent>().GroupBy(x => x.PlanetID))
        {
            planetBattles.Add(b.Key, b);
        }



        var planetOrbits = new Dictionary <int, List <SpaceFleet> >();
        var fleetIcon    = Utils.GetImageDimensionsCached("img/fleets/Arm.png");

        foreach (var fleet in Globals.Galaxy.Fleets)
        {
            PointF curpos;
            if (fleet.GetCurrentPosition(out curpos, Globals.Galaxy.Turn))
            {
                List <SpaceFleet> fleets;
                if (!planetOrbits.TryGetValue(fleet.TargetPlanetID, out fleets))
                {
                    fleets = new List <SpaceFleet>();
                }
                fleets.Add(fleet);
                planetOrbits[fleet.TargetPlanetID] = fleets;
            }
            else
            {
                RenderFleet(fleet, ToScreenX(curpos.X) - fleetIcon.X / 2, ToScreenY(curpos.Y) - fleetIcon.Y / 2, t, js);
            }
        }

        foreach (var planet in Globals.Galaxy.Planets)
        {
            if (hide.Contains(planet.ID))
            {
                continue;
            }
            bool isMy = (Globals.Player != null && planet.OwnerName == Globals.Player.Name);

            var player = planet.OwnerName != null?Globals.Galaxy.GetPlayer(planet.OwnerName) : null;

            string planetImage = string.Format("planets/{0}.png", player == null ? "neutral" : player.FactionName.ToLower());
            // planet.ID % 15

            var imgSize = Utils.GetImageDimensionsCached(planetImage);


            string divid = "p" + planet.ID;


            // currently selected marker
            string overlay;
            if (planetAttacked.TryGetValue(planet.ID, out overlay))
            {
                t.AppendFormat(
                    "<a href='planet.aspx?name={5}' id='{6}'><img src='{4}' style='position:absolute; z-index:3; left:{0}px; top: {1}px;width:{2}px; height:{3}px'></a>",
                    GetPlanetX(planet) - (imgSize.X + 10) / 2,
                    GetPlanetY(planet) - (imgSize.Y + 10) / 2,
                    imgSize.X + 10,
                    imgSize.Y + 10,
                    overlay,
                    Uri.EscapeDataString(planet.Name),
                    divid);
            }

            // main image + text
            t.AppendFormat(
                "<a href='planet.aspx?name={3}' id='{5}' class='mapplanet' style='left:{0}px;top:{1}px;{4}'><img src='{2}'></a>",
                GetPlanetX(planet) - imgSize.X / 2,
                GetPlanetY(planet) - imgSize.Y / 2,
                planetImage,
                Uri.EscapeDataString(planet.Name),
                isMy ? "text-decoration: overline;" : "", overlay == null ?divid :"");

            t.AppendFormat(
                "<span class='mapowner' style='left:{0}px;top:{1}px;{3}'>{2}</span>",
                GetPlanetX(planet) + imgSize.X / 2,
                GetPlanetY(planet) - imgSize.Y / 2 - 5,
                planet.ToHtml(),
                isMy ? "text-decoration: overline;" : "");

            t.AppendFormat(
                "<span class='mapowner' style='left:{0}px;top:{1}px;{3}'>{2}</span>",
                GetPlanetX(planet) + imgSize.X / 2,
                GetPlanetY(planet) - imgSize.Y / 2 + 10,
                player.ToHtml(),
                isMy ? "text-decoration: overline;" : "");



            // past battles
            IEnumerable <BattleEvent> battles;
            if (planetBattles.TryGetValue(planet.ID, out battles))
            {
                int       battleCount = battles.Count();
                var       iconSize    = Utils.GetImageDimensionsCached("img/battles/Arm.png");
                const int maxLine     = 5;
                int       offsetY     = -imgSize.Y / 2 - (((battleCount - 1) / maxLine) + 1) * iconSize.Y;
                int       offsetX     = -iconSize.X * Math.Min(maxLine, battleCount) / 2;

                int i = 0;
                foreach (var battle in battles)
                {
                    var factionPlayers = from p in battle.EndGameInfos
                                         where !p.Spectator
                                         group p by p.Side
                                         into grouped
                                         select new { factionName = grouped.Key, factionCount = grouped.Count() };

                    string sideStrength = "";

                    foreach (var fp in factionPlayers)
                    {
                        sideStrength += string.Format("{0} {1} armies<br/>", fp.factionName, fp.factionCount);
                    }


                    string iconName = string.Format(
                        "img/battles/{0}{1}.png", battle.Victor, battle.Attacker == battle.Victor ? "" : "def");
                    t.AppendFormat(
                        "<a href='battle.aspx?turn={0}' id='b{0}'><img id='b{0}' src='{3}' style='position:absolute;z-index:4;left:{1}px;top:{2}px;'></a>",
                        battle.Turn,
                        GetPlanetX(planet) + offsetX + (i % maxLine) * iconSize.X,
                        GetPlanetY(planet) + offsetY + (i / maxLine) * iconSize.Y, iconName);
                    js.AppendFormat(
                        "PW.AddTooltip('b{0}', '<div class=\"popup\">{1} The {2} have {3} {4}.<br/>{5}</div>', null);\n",
                        battle.Turn,
                        HtmlRenderingExtensions.GetFactionImage(battle.Victor),
                        battle.Victor,
                        battle.Attacker == battle.Victor ? "invaded" : "protected",
                        planet.Name,
                        sideStrength);
                    i++;
                }
            }

            List <SpaceFleet> fleets;
            if (planetOrbits.TryGetValue(planet.ID, out fleets))
            {
                int       count    = fleets.Count;
                var       iconSize = Utils.GetImageDimensionsCached("img/fleets/Arm.png");
                const int maxLine  = 5;
                int       offsetY  = imgSize.Y / 2;
                int       offsetX  = -iconSize.X * Math.Min(maxLine, count) / 2;

                int i = 0;
                foreach (var fleet in fleets)
                {
                    RenderFleet(
                        fleet,
                        GetPlanetX(planet) + offsetX + (i % maxLine) * iconSize.X,
                        GetPlanetY(planet) + offsetY + (i / maxLine) * iconSize.Y,
                        t,
                        js);
                    i++;
                }
            }

            string htmltext =
                String.Format(
                    "<div class=\"popup\"><b>Name:</b> {0}<br /><b>Owner:</b> {1}<br /><b>Map:</b> {2}<br/><img src=\"{3}\" style=\"max-width: 200px\"><br/>{4}</div>",
                    planet.Name,
                    planet.OwnerName ?? "Unknown",
                    Path.GetFileNameWithoutExtension(planet.MapName ?? "Uncharted"),
                    HtmlRenderingExtensions.GetMinimapUrl(planet.MapName),
                    PlanetPage.GetMapInfoTable(planet.MapName, player != null ? player.Description : null));

            js.AppendFormat("PW.AddTooltip('{0}', '{1}', {2});\n", divid, htmltext, "null");
        }

        js.Append("PW.graphics.Paint();\n");
        litPlanets.Text += t.ToString();
        litJs.Text       = "<script language=\"javascript\">\nfunction doStuff() {" + js +
                           "\n}\naddLoadEvent(doStuff);</script>";
    }
Exemple #6
0
 protected void ddMap_SelectedIndexChanged(object sender, EventArgs e)
 {
     imgMap.ImageUrl    = HtmlRenderingExtensions.GetMinimapUrl(ddMap.SelectedValue);
     litPlanetInfo.Text = GetMapInfoTable(ddMap.SelectedValue, planetOwner != null ? planetOwner.Description : null);
 }
Exemple #7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string pname = Request["name"];
            lbName.Text     = pname;
            displayedPlanet = Globals.Galaxy.Planets.SingleOrDefault(p => p.Name == pname);
            if (displayedPlanet == null)
            {
                return;
            }

            lbName.Text    += HtmlRenderingExtensions.GetFactionImage(displayedPlanet.FactionName);
            imgMap.ImageUrl = HtmlRenderingExtensions.GetMinimapUrl(displayedPlanet.MapName);
            if (Globals.Player != null && Globals.Player.Name == displayedPlanet.OwnerName)
            {
                lbRename.Visible  = true;
                tbName.Visible    = true;
                tbName.Text       = displayedPlanet.Name;
                btnSubmit.Visible = true;

                if (Globals.Player.HasChangedMap)
                {
                    ddMap.Visible = false;
                }
                else
                {
                    ddMap.Visible = true;
                    var items = Globals.Galaxy.GetAvailableMaps().OrderBy(x => x);
                    foreach (var c in items)
                    {
                        ddMap.Items.Add(c);
                    }
                    ddMap.SelectedValue = displayedPlanet.MapName;
                }
            }

            if (Globals.Player != null)
            {
                var fleet = Globals.Galaxy.Fleets.SingleOrDefault(f => f.OwnerName == Globals.MyPlayerName);
                if (fleet != null)
                {
                    btnSendFleet.Visible = true;
                    btnSendFleet.Text    = string.Format("Send blockade fleet to {0} ({1} turns)", displayedPlanet.Name, fleet.EtaToPlanet(displayedPlanet.ID, Globals.Galaxy));
                }
            }


            // events
            var sb = new StringBuilder();
            Globals.Galaxy.Events.Where(
                x => x.IsPlanetRelated(displayedPlanet.ID) && !x.IsHiddenFrom(Globals.MyFaction)).
            Reverse().ForEach(
                x => sb.AppendFormat("{0}: {1}<br/>\n", x.TimeOffset(Globals.Player), x.ToHtml()));

            litEvents.Text = sb.ToString();


            lbFaction.Text = HtmlRenderingExtensions.GetFactionLink(displayedPlanet.FactionName);
            planetOwner    = Globals.Galaxy.GetOwner(displayedPlanet.ID);
            if (planetOwner != null)
            {
                bool isOwner = false;
                if (Globals.Player != null)
                {
                    if (Globals.Player.Name == planetOwner.Name)
                    {
                        isOwner = true;
                    }
                }


                lbOwner.Text = planetOwner.ToHtml();
                if (planetOwner.FactionName != displayedPlanet.FactionName)
                {
                    lbFaction.Text += " <span style='color:red;'>(Occupied)</span>";
                }

                if (isOwner)
                {
                    tbDesciption.Text        = planetOwner.Description + "";
                    tbDesciption.Visible     = true;
                    btnSetDesciption.Visible = true;
                }

                DisplayPlanetStructures(displayedPlanet);
            }
            else
            {
                lbOwner.Text = "uncolonized";
            }

            litPlanetInfo.Text  = GetMapInfoTable(displayedPlanet.MapName, planetOwner != null ? planetOwner.Description : null);
            litPlanetInfo.Text += string.Format("<a href='heightmaps/{0}.jpg' target='_new'>Topological scan</a><br/><a target='_new' href='metalmaps/{0}.png'>Mineral scan</a>", displayedPlanet.MapName);
        }
    }
Exemple #8
0
    void DisplayPlanetStructures(Planet planet)
    {
        if (planet == null)
        {
            return;
        }
        var sb     = new StringBuilder();
        var mi     = Utils.GetMapInfoCached(planet.MapName);
        var imgDim = Utils.GetImageDimensionsCached(HtmlRenderingExtensions.GetMinimapUrl(planet.MapName));

        if (Globals.Server.UpgradeData == null)
        {
            return;
        }


        // array with coordiantes
        var coords = new StringBuilder();

        coords.Append("<script type='text/javascript'>\nvar tpos = Array(");

        var js = new StringBuilder();

        js.Append("<script type='text/javascript'>\nfunction AddHovers() {\n");


        int cnt = 0;

        foreach (var up in Globals.Server.UpgradeData)
        {
            bool isAlly = Globals.Galaxy.GetPlayer(up.Key).FactionName == Globals.MyFaction;
            bool isSelf = up.Key == Globals.MyPlayerName;
            foreach (var upd in up.Value.Where(x => x.QuantityDeployed > 0 && x.IsBuilding))
            {
                foreach (var dep in upd.DeployLocations.Where(x => x.PlanetID == planet.ID))
                {
                    string icon = "static_enemy";
                    if (isSelf)
                    {
                        icon = "static_self";
                    }
                    else if (isAlly)
                    {
                        icon = "static_ally";
                    }

                    // images
                    sb.AppendFormat(
                        "<img src='uniticons/{1}.png' style='position:absolute;z-index:2;top:0;left:0;' id='img{0}'/></a>",
                        cnt, icon);


                    // array with coordiantes
                    if (cnt > 0)
                    {
                        coords.Append(",");
                    }
                    int posx = (int)(((double)dep.X / mi.Width) * imgDim.X) - 5;
                    int posy = (int)(((double)dep.Z / mi.Height) * imgDim.Y) - 5;
                    coords.AppendFormat("{0},{1}", posx, posy);

                    // js tooltips
                    string htmltext =
                        String.Format(
                            "<div class=\"popup\"><img src=\"unitpics/{0}.png\"><br/>{1}<br/>",
                            upd.UnitChoice,
                            up.Key);
                    js.AppendFormat("PW.AddTooltip('img{0}', '{1}', null);\n", cnt, htmltext);


                    cnt++;
                }
            }
        }



        coords.Append(");\n");
        coords.AppendFormat("var firefoxFix = {0};", imgDim.Y);
        coords.Append("</script>\n");


        litPlanetStructures.Text = sb.ToString() + coords.ToString();

        js.Append("\n}\naddLoadEvent(AddHovers);\n");
        js.Append("</script>\n");
        litPopupLinks.Text = js.ToString();
    }
    void RenderLeftBar()
    {
        var sb = new StringBuilder();

        var planetCounts = from p in Globals.Galaxy.Planets
                           where p.FactionName != null
                           group p by p.FactionName
                           into g orderby g.Key select new { Faction = g.Key, Count = g.Count() };

        int totalCount = 0;

        foreach (var ts in planetCounts)
        {
            totalCount += ts.Count;
        }

        sb.AppendFormat("<table cellpadding='0' cellspacing='0'><tr width='200' style='color:white;'>");
        var colorTable = new[] { "Blue", "Red" };
        int cnt        = 0;

        foreach (var pk in planetCounts)
        {
            sb.AppendFormat(
                "<td style='width:{0}px;height:20px;text-align:center;background-color:{3}'>{2}{1}</td>",
                pk.Count * 200 / totalCount,
                pk.Count,
                HtmlRenderingExtensions.GetFactionImage(pk.Faction),
                colorTable[cnt++ % colorTable.Length]);
        }
        sb.AppendFormat("</tr></table>\n");

        foreach (var faction in Globals.Galaxy.Factions)
        {
            var plList = Globals.Galaxy.Players.Where(p => p.FactionName == faction.Name);
            var list   = plList.ToList();

            sb.AppendFormat("<hr/>{0}<hr/>\n", HtmlRenderingExtensions.GetFactionLink(faction.Name));
            list.Sort(Player.CompareTo);
            for (int i = 1; i <= Math.Min(10, list.Count); i++)
            {
                var pl = list[list.Count - i];
                sb.AppendFormat("{0}. {1} ({2:f1})<br/>\n", i, pl.ToHtml(), pl.RankPoints);
            }
        }

        sb.AppendFormat("<hr/><a href='awardhall.aspx'>Awards Hall of Fame</a>\n");

        sb.AppendFormat("<hr/><a href='events.aspx'>Last events</a><hr/>\n");

        Globals.Galaxy.Events.Where(x => !x.IsHiddenFrom(Globals.MyFaction)).Reverse().Take(10).ForEach(
            x => sb.AppendFormat("{0}: <span style='color: white;'>{1}</span><br/>\n", x.TimeOffset(Globals.Player, true), x.ToHtml()));

        if (Globals.Player != null)
        {
            sb.AppendFormat(
                "<hr/><span style='color:white;'><a href='chat.aspx'>#{0} channel log</a></span><hr/>\n<span style='color:white;font-size:xx-small;'>",
                Globals.MyFaction);
            var chatEvents = Globals.Galaxy.GetFaction(Globals.MyFaction).ChatEvents;
            for (int i = Math.Max(chatEvents.Count - 100, 0); i < chatEvents.Count; i++)
            {
                var ce = chatEvents[i];
                sb.AppendFormat(
                    "<span style='color:aqua'>{0}</span>&nbsp;{1}<br/>\n",
                    Server.HtmlEncode(ce.Name),
                    Server.HtmlEncode(ce.Text));
            }
            sb.Append("</span>");
        }

        litPlayers.Text = sb.ToString();
    }
 void SetGeneralGalaxyInfo()
 {
     lbTurn.Text    = Globals.Galaxy.Turn.ToString();
     lbAttacks.Text = HtmlRenderingExtensions.GetFactionLink(Globals.Galaxy.OffensiveFaction.Name);
 }
Exemple #11
0
    protected void Page_Load(object sender, EventArgs e)
    {
        int         turn = int.Parse(Request["turn"]);
        BattleEvent b    = null;

        foreach (var ev in Globals.Galaxy.Events)
        {
            if (ev is BattleEvent && ev.Turn == turn)
            {
                b = ev as BattleEvent;
                break;
            }
        }
        if (b == null)
        {
            return;
        }

        var planet         = Globals.Galaxy.GetPlanet(b.PlanetID);
        var loggedInPlayer = Globals.Player;

        lbTitle.Text = "Battle on " + planet.Name + " turn " + b.Turn;
        //lbTime.Text = b.Time.ToString();
        lbTime.Text     = b.TimeOffset(loggedInPlayer);
        lbAttacker.Text = HtmlRenderingExtensions.GetFactionLink(b.Attacker);
        lbWinner.Text   = HtmlRenderingExtensions.GetFactionLink(b.Victor);
        lbPlanet.Text   = planet.ToHtml();

        var sb = new StringBuilder();

        sb.Append("<table style='border:0'>");

        int totalTime = 0;

        foreach (var p in b.EndGameInfos.Where(x => x.Spectator == false).OrderBy(x => x.Side))
        {
            int pTime = 0;
            if (!p.AliveTillEnd)
            {
                if (p.LoseTime > 0)
                {
                    pTime = p.LoseTime;
                }
                else
                if (p.LeaveTime > 0)
                {
                    pTime = p.LeaveTime;
                }
            }
            if (pTime > totalTime)
            {
                totalTime = pTime;
            }

            string awards = "";
            var    player = Globals.Galaxy.GetPlayer(p.Name);
            foreach (var aw in player.Awards.Where(
                         x => x.Turn == b.Turn && x.Round == b.Round))
            {
                awards += aw.Text + "<br/>";
            }
            string fixedFactionName =
                Globals.Galaxy.Factions.Single(x => x.Name.ToLower() == p.Side.ToLower()).Name;

            sb.AppendFormat(
                "<tr><td>{0}</td><td>{1}</td><td></td><td>{2}</td><td>{3}</td></tr>",
                player.ToHtml(),
                HtmlRenderingExtensions.GetFactionLink(fixedFactionName),
                pTime.ToTime(),
                awards);
        }

        lbLength.Text = totalTime.ToTime();
        sb.Append("</table>");
        sb.AppendFormat("<img src='{0}' style='width:200px; margin:4px; border: 1px aqua solid;'><br/>", HtmlRenderingExtensions.GetMinimapUrl(planet.MapName));
        litDetails.Text = sb.ToString();
    }