public virtual int GetMaxRegionSize() { return(m_localService.GetMaxRegionSize()); }
public byte[] MapAPIRequest(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { byte[] response = MainServer.BlankResponse; string var = httpRequest.Query["var"].ToString(); string requestType = path.Substring(0, path.IndexOf("?")); if (requestType == "/MapAPI/get-region-coords-by-name") { string resp = "var {0} = {\"x\":{1},\"y\":{2}};"; string sim_name = httpRequest.Query["sim_name"].ToString(); var region = m_gridService.GetRegionByName(null, sim_name); if (region == null) { resp = "var " + var + " = {error: true};"; } else { resp = "var " + var + " = {\"x\":" + region.RegionLocX + ",\"y\":" + region.RegionLocY + "};"; } response = System.Text.Encoding.UTF8.GetBytes(resp); httpResponse.ContentType = "text/javascript"; } else if (requestType == "/MapAPI/get-region-name-by-coords") { string resp = "var {0} = \"{1}\";"; int grid_x = int.Parse(httpRequest.Query["grid_x"].ToString()); int grid_y = int.Parse(httpRequest.Query["grid_y"].ToString()); var region = m_gridService.GetRegionByPosition(null, grid_x * Constants.RegionSize, grid_y * Constants.RegionSize); if (region == null) { List <GridRegion> regions = m_gridService.GetRegionRange(null, (grid_x * Constants.RegionSize) - (m_gridService.GetMaxRegionSize()), (grid_x * Constants.RegionSize), (grid_y * Constants.RegionSize) - (m_gridService.GetMaxRegionSize()), (grid_y * Constants.RegionSize)); bool found = false; foreach (var r in regions) { if (r.PointIsInRegion(grid_x * Constants.RegionSize, grid_y * Constants.RegionSize)) { resp = string.Format(resp, var, r.RegionName); found = true; break; } } if (!found) { resp = "var " + var + " = {error: true};"; } } else { resp = string.Format(resp, var, region.RegionName); } response = System.Text.Encoding.UTF8.GetBytes(resp); httpResponse.ContentType = "text/javascript"; } return(response); }
public byte [] MapAPIRequest(string path, Stream request, OSHttpRequest httpRequest, OSHttpResponse httpResponse) { byte [] response = MainServer.BlankResponse; var resp = "var {0} = {{regionName:\"{1}\",xloc:\"{2}\",yloc:\"{3}\",xsize:\"{4}\",ysize:\"{5}\"}};"; var varName = httpRequest.Query ["var"].ToString(); var requestType = path.Substring(0, path.IndexOf("?", StringComparison.Ordinal)); if (requestType == "/MapAPI/get-region-coords-by-name") { string sim_name = httpRequest.Query ["sim_name"].ToString(); var region = m_gridService.GetRegionByName(null, sim_name); if (region == null) { resp = "var " + varName + "={error: true};"; } else { resp = string.Format(resp, varName, region.RegionName, region.RegionLocX / Constants.RegionSize, region.RegionLocY / Constants.RegionSize, region.RegionSizeX, region.RegionSizeY); } response = System.Text.Encoding.UTF8.GetBytes(resp); httpResponse.ContentType = "text/javascript"; } else if (requestType == "/MapAPI/get-region-name-by-coords") { int grid_x = int.Parse(httpRequest.Query ["grid_x"].ToString()); int grid_y = int.Parse(httpRequest.Query ["grid_y"].ToString()); var region = m_gridService.GetRegionByPosition(null, grid_x * Constants.RegionSize, grid_y * Constants.RegionSize); if (region == null) { var maxRegionSize = m_gridService.GetMaxRegionSize(); List <GridRegion> regions = m_gridService.GetRegionRange(null, (grid_x * Constants.RegionSize) - maxRegionSize, (grid_x * Constants.RegionSize) + maxRegionSize, (grid_y * Constants.RegionSize) - maxRegionSize, (grid_y * Constants.RegionSize) + maxRegionSize); bool found = false; foreach (var r in regions) { if (r.PointIsInRegion(grid_x * Constants.RegionSize, grid_y * Constants.RegionSize)) { resp = string.Format(resp, varName, r.RegionName, r.RegionLocX / Constants.RegionSize, r.RegionLocY / Constants.RegionSize, r.RegionSizeX, r.RegionSizeY); found = true; break; } } if (!found) { resp = "var " + varName + "={error: true};"; } } else { resp = string.Format(resp, varName, region.RegionName, region.RegionLocX / Constants.RegionSize, region.RegionLocY / Constants.RegionSize, region.RegionSizeX, region.RegionSizeY); } response = System.Text.Encoding.UTF8.GetBytes(resp); httpResponse.ContentType = "text/javascript"; } return(response); }