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);
    }
Exemple #2
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 #3
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>";
    }
    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();
    }