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