/// <see cref="ICommandService.SendFastCommandOnMinimap"/> public void SendFastCommandOnMinimap(RCIntVector position) { /// TODO: This is a PROTOTYPE CODE! if (this.scenarioManager.ActiveScenario == null) { throw new InvalidOperationException("No active scenario!"); } if (this.selectionManager.LocalPlayer == PlayerEnum.Neutral) { return; } RCIntVector minimapPixelCoords = position - this.mapWindowBC.Minimap.MinimapPosition.Location; minimapPixelCoords = new RCIntVector(Math.Min(this.mapWindowBC.Minimap.MinimapPosition.Width - 1, Math.Max(0, minimapPixelCoords.X)), Math.Min(this.mapWindowBC.Minimap.MinimapPosition.Height - 1, Math.Max(0, minimapPixelCoords.Y))); IMinimapPixel minimapPixel = this.mapWindowBC.Minimap.GetMinimapPixel(minimapPixelCoords); RCNumVector pixelCenterOnMap = minimapPixel.CoveredArea.Location + minimapPixel.CoveredArea.Size / 2; if (this.selectionManager.CurrentSelection.Count != 0) { this.multiplayerService.PostCommand(new RCCommand(null, this.selectionManager.CurrentSelection.ToArray(), pixelCenterOnMap, -1, null)); } }
/// <summary> /// Adds the given entity informations to the minimap pixels. /// </summary> /// <param name="quadraticPosition">The quadratic position of the entity.</param> /// <param name="owner">The owner of the entity.</param> /// <param name="attackSignal">A flag indicating that the corresponding pixels shall contain attack indication signal.</param> /// <param name="pixelInfos">The 2D array of the minimap pixels.</param> private void AddEntityInfo(RCIntRectangle quadraticPosition, PlayerEnum owner, bool attackSignal, MinimapPixelInfo[,] pixelInfos) { for (int quadTileY = quadraticPosition.Top; quadTileY < quadraticPosition.Bottom; quadTileY++) { for (int quadTileX = quadraticPosition.Left; quadTileX < quadraticPosition.Right; quadTileX++) { IMinimapPixel pixelAtQuadTile = this.MapWindowBC.Minimap.GetMinimapPixelAtQuadTile(new RCIntVector(quadTileX, quadTileY)); if (this.selectionManagerBC.LocalPlayer != PlayerEnum.Neutral && owner == this.selectionManagerBC.LocalPlayer) { pixelInfos[pixelAtQuadTile.PixelCoords.X, pixelAtQuadTile.PixelCoords.Y].EntityIndicatorType = attackSignal ? MinimapPixelInfo.EntityIndicatorTypeEnum.AttackedFriendly : MinimapPixelInfo.EntityIndicatorTypeEnum.Friendly; } else { pixelInfos[pixelAtQuadTile.PixelCoords.X, pixelAtQuadTile.PixelCoords.Y].EntityIndicatorType = MinimapPixelInfo.EntityIndicatorTypeEnum.NonFriendly; } pixelInfos[pixelAtQuadTile.PixelCoords.X, pixelAtQuadTile.PixelCoords.Y].EntityOwner = owner; } } }
/// <see cref="ICommandService.SelectTargetPositionOnMinimap"/> public void SelectTargetPositionOnMinimap(RCIntVector position) { if (this.scenarioManager.ActiveScenario == null) { throw new InvalidOperationException("No active scenario!"); } if (position == RCIntVector.Undefined) { throw new ArgumentNullException("position"); } RCIntVector minimapPixelCoords = position - this.mapWindowBC.Minimap.MinimapPosition.Location; minimapPixelCoords = new RCIntVector(Math.Min(this.mapWindowBC.Minimap.MinimapPosition.Width - 1, Math.Max(0, minimapPixelCoords.X)), Math.Min(this.mapWindowBC.Minimap.MinimapPosition.Height - 1, Math.Max(0, minimapPixelCoords.Y))); IMinimapPixel minimapPixel = this.mapWindowBC.Minimap.GetMinimapPixel(minimapPixelCoords); RCNumVector pixelCenterOnMap = minimapPixel.CoveredArea.Location + minimapPixel.CoveredArea.Size / 2; this.commandManager.SelectTargetPosition(pixelCenterOnMap); }
/// <see cref="IScrollService.ScrollToMinimapPosition"/> public void ScrollToMinimapPosition(RCIntVector position) { if (this.mapWindowBC.Minimap == null) { throw new InvalidOperationException("Minimap has not yet been attached!"); } if (position == RCIntVector.Undefined) { throw new ArgumentNullException("position"); } RCIntVector minimapPixelCoords = position - this.mapWindowBC.Minimap.MinimapPosition.Location; minimapPixelCoords = new RCIntVector(Math.Min(this.mapWindowBC.Minimap.MinimapPosition.Width - 1, Math.Max(0, minimapPixelCoords.X)), Math.Min(this.mapWindowBC.Minimap.MinimapPosition.Height - 1, Math.Max(0, minimapPixelCoords.Y))); IMinimapPixel minimapPixel = this.mapWindowBC.Minimap.GetMinimapPixel(minimapPixelCoords); RCNumVector pixelCenterOnMap = minimapPixel.CoveredArea.Location + minimapPixel.CoveredArea.Size / 2; this.mapWindowBC.ScrollTo(pixelCenterOnMap); }