public MapOverlay(Cell cell) { CellID = cell.ID; // Set cell overlay options cellPolygonOptions = new PolygonOptions(); cellPolygonOptions.Add(new LatLng((double)cell.Latitude, (double)cell.Longitude)); //first rectangle point cellPolygonOptions.Add(new LatLng((double)cell.Latitude, (double)cell.Longitude + (double)GameModel.FrontierInterval)); cellPolygonOptions.Add(new LatLng((double)cell.Latitude + (double)GameModel.FrontierInterval, (double)cell.Longitude + (double)GameModel.FrontierInterval)); cellPolygonOptions.Add(new LatLng((double)cell.Latitude + (double)GameModel.FrontierInterval, (double)cell.Longitude)); //automatically connects last two points cellPolygonOptions.InvokeZIndex(100); // Set mine overlay options LatLng circleCenter = new LatLng((double)cell.Latitude + ((double)GameModel.FrontierInterval / 2), (double)cell.Longitude + ((double)GameModel.FrontierInterval / 2)); mineCircleOptions = new CircleOptions(); mineCircleOptions.InvokeCenter(circleCenter); mineCircleOptions.InvokeRadius(3); mineCircleOptions.InvokeStrokeWidth(6); mineCircleOptions.InvokeStrokeColor(Color.White); mineCircleOptions.InvokeZIndex(200); // Set antimine overlay options antiMineTriangleOptions = new PolygonOptions(); antiMineTriangleOptions.Add(new LatLng(((double)cell.Latitude + ((double)GameModel.FrontierInterval) * .75), ((double)cell.Longitude + (double)GameModel.FrontierInterval / 2))); antiMineTriangleOptions.Add(new LatLng(((double)cell.Latitude + ((double)GameModel.FrontierInterval) * .25), ((double)cell.Longitude + (double)GameModel.FrontierInterval * .25))); antiMineTriangleOptions.Add(new LatLng(((double)cell.Latitude + ((double)GameModel.FrontierInterval) * .25), ((double)cell.Longitude + (double)GameModel.FrontierInterval * .75))); antiMineTriangleOptions.InvokeStrokeWidth(6); antiMineTriangleOptions.InvokeStrokeColor(Color.White); antiMineTriangleOptions.InvokeZIndex(200); UpdateColor(cell.HoldStrength, cell.TeamID); cellPolygonOptions.InvokeStrokeWidth(0); if (cell.TeamID == GameModel.Player.Team.ID) { MapOverlayClickHandler = new FriendlyOverlayClickHandler(); } else { MapOverlayClickHandler = new EnemyOverlayClickHandler(); } }
public void UpdateColor(int holdStrength, int teamID) { if (teamID != GameModel.Player.Team.ID && MapOverlayClickHandler is FriendlyOverlayClickHandler) { MapOverlayClickHandler = new EnemyOverlayClickHandler(); } else if (teamID == GameModel.Player.Team.ID && MapOverlayClickHandler is EnemyOverlayClickHandler) { MapOverlayClickHandler = new FriendlyOverlayClickHandler(); } byte alpha = Convert.ToByte((int)(((float)holdStrength / GameModel.maxHoldStrength) * 255)); if (alpha > 255) { alpha = 255; } Color overlayColor = ColorCode.TeamColor(teamID); overlayColor.A = alpha; SetColor(overlayColor); }