public ActionResult <PlayfieldInfo[]> Playfields()
        {
            if (PlayfieldManager.Playfields == null)
            {
                PlayfieldManager.ReadPlayfields();
            }

            if (UserService.CurrentUser.Role == Role.VIP)
            {
                var CurrentPlayer = PlayerManager.CurrentPlayer;
                var Faction       = CurrentPlayer?.FactionId;
                if (Faction == 0)
                {
                    return new PlayfieldInfo[] { }
                }
                ;

                var FactionOnPlanets = new List <string>();
                PlayerManager.QueryPlayer(
                    PlayerDB => PlayerDB.Players.Where(P => P.FactionId == Faction),
                    P => FactionOnPlanets.Add(P.Playfield));

                return(PlayfieldManager.Playfields.Where(P => FactionOnPlanets.Contains(P.name)).ToArray());
            }

            return(PlayfieldManager.Playfields);
        }
        public IActionResult GetPlayfieldMap(string aPlayfieldname)
        {
            if (!Directory.Exists(MapsPath))
            {
                return(NotFound());
            }
            if (PlayfieldManager.Playfields == null)
            {
                PlayfieldManager.ReadPlayfields();
            }

            var PlayfieldMap = Path.Combine(
                EmpyrionConfiguration.SaveGameModPath,
                "EWA",
                "Maps",
                aPlayfieldname,
                "map.png");

            if (!System.IO.File.Exists(PlayfieldMap) && PlayfieldManager.Playfields == null)
            {
                return(NotFound());
            }

            var CurrentPlayfield = PlayfieldManager.Playfields.FirstOrDefault(P => P.name == aPlayfieldname);

            if (!System.IO.File.Exists(PlayfieldMap) && (CurrentPlayfield == null || CurrentPlayfield.isPlanet))
            {
                return(NotFound());
            }

            if (!CurrentPlayfield.isPlanet &&
                (!System.IO.File.Exists(PlayfieldMap) || (DateTime.Now - System.IO.File.GetLastWriteTime(PlayfieldMap)).TotalDays > 1))
            {
                try { ReadFromHubbleImages(PlayfieldMap); }
                catch (Exception Error)
                {
                    Logger.LogError(Error, "LoadSpace: {0} to {1}", aPlayfieldname, PlayfieldMap);
                    PlayfieldMap = Path.Combine(EmpyrionConfiguration.ModPath, @"EWALoader\EWA\ClientApp\dist\ClientApp\empty.png");
                }
            }

            DateTimeOffset?LastModified = new DateTimeOffset(System.IO.File.GetLastWriteTime(PlayfieldMap));

            return(PhysicalFile(
                       PlayfieldMap,
                       "image/png",
                       aPlayfieldname + ".png",
                       LastModified,
                       new Microsoft.Net.Http.Headers.EntityTagHeaderValue("\"" + ETagGenerator.GetETag(PlayfieldMap, System.IO.File.ReadAllBytes(PlayfieldMap)) + "\""),
                       true
                       ));
        }
 public IActionResult ResetPlayfield([FromQuery] string Playfield)
 {
     PlayfieldManager.ResetPlayfield(Playfield);
     return(Ok());
 }
 public IActionResult Wipe([FromQuery] string Playfield, [FromQuery] string WipeType)
 {
     PlayfieldManager.Wipe(new[] { Playfield }, WipeType);
     return(Ok());
 }