コード例 #1
0
        public MoveCommand(float x, float y)
        {
            X = x;
            Y = y;

            Position = new Flattiverse.Vector(x, y);
        }
コード例 #2
0
        internal void TempSetup(Flattiverse.Ship ship, Mapping.Units.PlayerShipMapUnit playerShipMapUnit)
        {
            Direction = Position - playerShipMapUnit.PositionInternal;
            Direction = Direction + playerShipMapUnit.MovementInternal;

            Time = (1 + (int)(Direction.Length / ship.WeaponShot.Speed.Limit * 0.99f));

            if (Time > ship.WeaponShot.Time.Limit)
            {
                Time = (int)(ship.WeaponShot.Time.Limit * 0.99f);
            }

            Direction.Length /= Time;

            if (Direction > ship.WeaponShot.Speed.Limit * 0.99f)
            {
                Direction.Length = ship.WeaponShot.Speed.Limit * 0.99f;
            }

            Load         = ship.WeaponShot.Load.Limit * 0.85f;
            DamageHull   = ship.WeaponShot.DamageHull.Limit * 0.95f;
            DamageShield = ship.WeaponShot.DamageShield.Limit * 0.75f;
            DamageEnergy = ship.WeaponShot.DamageEnergy.Limit * 0.75f;
        }
コード例 #3
0
ファイル: Ship.cs プロジェクト: dannyd89/yafbcore
        /// <summary>
        ///
        /// </summary>
        protected override void move()
        {
            try
            {
                if (lastMoveCommand != null && (lastMoveCommand.Position - playerShipMapUnit.PositionInternal) < NeededTileSize)
                {
                    lastMoveCommand.Reached = true;
                }

                lock (syncMoveCommands)
                {
                    if (userMoveCommands.Count > 0)
                    {
                        lastMoveCommand = userMoveCommands.Dequeue();

                        // TODO: Wäre vielleicht besser das direkt in der move Funktion zu machen, dass nicht immer ein neuer Pathfinder erzeugt wird
                        //MapPathfinder = currentMap.GetPathFinder(NeededTileSize);
                        //pathfindingMoveCommands = MapPathfinder.Pathfind(playerShipMapUnit.Position, lastMoveCommand.Position);

                        //lastMoveCommand = null;
                    }

                    if ((lastMoveCommand == null || lastMoveCommand.Reached) && pathfindingMoveCommands != null && pathfindingMoveCommands.Count > 0)
                    {
                        lastMoveCommand = pathfindingMoveCommands.First.Value;
                        pathfindingMoveCommands.RemoveFirst();

                        lastMoveCommand.DontStop = pathfindingMoveCommands.Count > 0;
                    }
                }

                if (lastMoveCommand == null)
                {
                    lastMoveCommand = new MoveCommand(playerShipMapUnit.PositionInternal.X, playerShipMapUnit.PositionInternal.Y);
                }

                movement = lastMoveCommand.Position - playerShipMapUnit.PositionInternal;

                if (movement < 250f && !lastMoveCommand.DontStop)
                {
                    movement.Length = ship.EngineAcceleration.Limit * movement.Length;

                    movement = movement - playerShipMapUnit.MovementInternal;

                    if (movement > ship.EngineAcceleration.Limit * 0.99f)
                    {
                        movement.Length = ship.EngineAcceleration.Limit * 0.99f;
                    }
                }
                else
                {
                    if (expectedPosition != null && (expectedPosition - playerShipMapUnit.PositionInternal) > 1f)
                    {
                        movement = movement + (expectedPosition - playerShipMapUnit.PositionInternal);

                        //if (movement > ship.EngineAcceleration.Limit * 0.99f)
                        //    movement.Length = ship.EngineAcceleration.Limit * 0.99f;
                    }

                    movement.Length = ship.EngineAcceleration.Limit * 0.99f;
                }



                ship.Move(movement);

                expectedPosition = playerShipMapUnit.PositionInternal + movement;
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"{ship.Name}: Move Exception");
                Debug.WriteLine(ex.Message);

                userMoveCommands.Clear();
                lastMoveCommand         = null;
                pathfindingMoveCommands = null;
            }
            finally
            {
                MoveWaiter.Set();
            }
        }
コード例 #4
0
ファイル: Ship.cs プロジェクト: dannyd89/yafbcore
        /// <summary>
        /// Performs a scan with the ship
        /// </summary>
        protected override void scan()
        {
            try
            {
                List <Flattiverse.ScanInfo> scanInfos = new List <Flattiverse.ScanInfo>();

                int scannerCount = ship.ScannerCount;

                if (scanReference != null)
                {
                    // We got a reference point so we scan in that direction with a minimal degree because we know the direction
                    float oneFourthDegree = Math.Min(10f, ship.ScannerDegreePerScan / 4f);

                    scanInfos.Add(new Flattiverse.ScanInfo(scanReference.Angle - oneFourthDegree,
                                                           scanReference.Angle + oneFourthDegree,
                                                           ship.ScannerArea.Limit * 0.80f));

                    --scannerCount;
                }

                if (EfficientLoading)
                {
                    --scannerCount;
                }

                for (int i = 0; i < scannerCount; i++)
                {
                    Flattiverse.ScanInfo scanInfo = new Flattiverse.ScanInfo(currentScanDegree, currentScanDegree + ship.ScannerDegreePerScan, ship.ScannerArea.Limit * 0.90f);

                    currentScanDegree += ship.ScannerDegreePerScan;

                    if (currentScanDegree >= 360f)
                    {
                        currentScanDegree -= 360f;
                    }

                    scanInfos.Add(scanInfo);
                }

                List <Flattiverse.Unit> scannedUnits = ship.Scan(scanInfos);

                scanReference = null;

                // Get the nearest still unit as reference point
                for (int i = 0; i < scannedUnits.Count; i++)
                {
                    if ((scannedUnits[i].Mobility == Flattiverse.Mobility.Still || scannedUnits[i].Mobility == Flattiverse.Mobility.Steady) &&
                        scannedUnits[i].Kind != Flattiverse.UnitKind.Explosion &&
                        (scanReference == null || scannedUnits[i].Position < scanReference))
                    {
                        scanReference = scannedUnits[i].Position;
                    }
                }

                Map map = Map.Create(this, scannedUnits);
                map.Updated += Map_MapUpdated;

                Session.MapManager.Add(map);

                // Let the map manager process all the scanned info
                Session.MapManager.WaitMerge();
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"{ship.Name}: Scan Exception");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine(ex.StackTrace);

                //TryContinue();
            }
            finally
            {
                ScanWaiter.Set();
            }
        }
コード例 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="renderTarget"></param>
        /// <param name="unitList"></param>
        private void drawUnits(WindowRenderTarget renderTarget, List <MapUnit> unitList)
        {
            for (int i = 0; i < unitList.Count; i++)
            {
                MapUnit mapUnit = unitList[i];

                SharpDX.Vector2 position = new SharpDX.Vector2(X[mapUnit.Position.X], Y[mapUnit.Position.Y]);
                float           radius   = Math.Max(X.Prop(mapUnit.Radius), 0.01f);

                switch (mapUnit)
                {
                case AIBaseMapUnit aiBaseMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.AIBase, position, radius);

                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.White, position, X.Prop(mapUnit.Radius - 3f));
                    break;

                case AIDroneMapUnit aiDroneMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.AIDrone, position, radius);

                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.White, position, X.Prop(mapUnit.Radius - 3f));
                    break;

                case AIPlatformMapUnit aiPlatformMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.AIPlatform, position, radius);

                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.White, position, X.Prop(mapUnit.Radius - 2f));
                    break;

                case AIProbeMapUnit aiProbeMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.AIProbe, position, radius);

                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.White, position, X.Prop(mapUnit.Radius - 2f));
                    break;

                case AIShipMapUnit aiShipMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.AIShip, position, radius);

                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.White, position, X.Prop(mapUnit.Radius - 2f));
                    break;

                case AsteroidMapUnit asteroidMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Asteroid, position, radius);
                    break;

                case BlackHoleMapUnit blackHoleMapUnit:
                    for (int c = 0; c < blackHoleMapUnit.GravityWellInfos.Length; c++)
                    {
                        Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.BlueViolet, position, X.Prop(blackHoleMapUnit.GravityWellInfos[c].Radius), 1f, dashedStrokeStyle);
                    }

                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.BlackHole, position, radius);
                    break;

                case BuoyMapUnit buoyMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Buoy, position, radius);
                    break;

                case CloakPowerUpMapUnit cloakPowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.CloakPowerUp, position, radius);
                    break;

                case DoubleDamagePowerUpMapUnit doubleDamagePowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.DoubleDamagePowerUp, position, radius);
                    break;

                case EnergyPowerUpMapUnit energyPowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.EnergyPowerUp, position, radius);
                    break;

                case ExplosionMapUnit explosionMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Explosion, position, radius);
                    break;

                case GateMapUnit gateMapUnit:
                    if (gateMapUnit.Switched)
                    {
                        Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Red, position, radius);
                    }
                    else
                    {
                        Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Green, position, radius, 1f, dashedStrokeStyle);
                    }
                    break;

                case HastePowerUpMapUnit hastePowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.HastePowerUp, position, radius);
                    break;

                case HullPowerUpMapUnit hullPowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.HullPowerUp, position, radius);
                    break;

                case IonsPowerUpMapUnit ionsPowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.IonsPowerUp, position, radius);
                    break;

                case MeteoroidMapUnit meteoroidMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Meteoroid, position, radius);
                    break;

                case MissionTargetMapUnit missionTargetMapUnit:

                    SolidColorBrush solidColorBrush;
                    if (missionTargetMapUnit.Team == null || missionTargetMapUnit.Team.Name == "None")
                    {
                        solidColorBrush = missionTargetMapUnit.IsHit ? Brushes.SolidColorBrushes.LimeGreen : Brushes.SolidColorBrushes.Red;
                    }
                    else
                    {
                        solidColorBrush = Brushes.SolidColorBrushes.TeamColors[missionTargetMapUnit.Team.Name];
                    }

                    Primitives.Circle.Draw(renderTarget, solidColorBrush, position, radius);
                    Primitives.Circle.Draw(renderTarget, solidColorBrush, position, X.Prop(mapUnit.Radius + 3f));

                    if (missionTargetMapUnit.DominationRadius > 0f)
                    {
                        if (missionTargetMapUnit.Team == null)
                        {
                            Primitives.Circle.Draw(renderTarget,
                                                   Brushes.SolidColorBrushes.GreenYellow,
                                                   position,
                                                   X.Prop(missionTargetMapUnit.DominationRadius));
                        }
                        else
                        {
                            Primitives.Circle.Draw(renderTarget,
                                                   Brushes.SolidColorBrushes.TeamColors[missionTargetMapUnit.Team.Name],
                                                   position,
                                                   X.Prop(missionTargetMapUnit.DominationRadius), X.Prop(4f));
                        }

                        if (missionTargetMapUnit.DominatingTeam != null)
                        {
                            Primitives.Circle.Draw(renderTarget,
                                                   Brushes.SolidColorBrushes.TeamColors[missionTargetMapUnit.DominatingTeam.Name],
                                                   position,
                                                   X.Prop(missionTargetMapUnit.DominationRadius - 10f),
                                                   X.Prop(8f),
                                                   dashedStrokeStyle);
                        }
                    }
                    else
                    {
                        renderTarget.DrawText(
                            missionTargetMapUnit.Name + " (#" + missionTargetMapUnit.SequenceNumber + ")",
                            missionTargetTextFormat,
                            new SharpDX.Mathematics.Interop.RawRectangleF(position.X, position.Y - X.Prop(20f), position.X + 100f, position.Y + 40f),
                            Brushes.SolidColorBrushes.MissionTarget,
                            DrawTextOptions.NoSnap);

                        foreach (Flattiverse.Vector tempHint in missionTargetMapUnit.Hints)
                        {
                            Flattiverse.Vector hint = tempHint * 20f;

                            renderTarget.DrawLine(
                                new SharpDX.Mathematics.Interop.RawVector2(position.X, position.Y),
                                new SharpDX.Mathematics.Interop.RawVector2(position.X + hint.X, position.Y + hint.Y),
                                Brushes.SolidColorBrushes.White, 2f, dashedStrokeStyle);
                        }
                    }
                    break;

                case MoonMapUnit moonMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Moon, position, radius);
                    break;

                case NebulaMapUnit nebulaMapUnit:
                    // TODO: Nebula color handling
                    break;

                case ParticlesPowerUpMapUnit particlesPowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.ParticlesPowerUp, position, radius);
                    break;

                case PixelMapUnit pixelMapUnit:
                    // Skip this for now
                    // Unused anyway
                    break;

                case PlanetMapUnit planetMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Planet, position, radius);
                    break;

                // TODO: Same handling as playership needed
                case PlayerBaseMapUnit playerBaseMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.DarkGreen, position, radius);
                    break;

                case PlayerDroneMapUnit playerDroneMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.DarkGreen, position, radius);
                    break;

                case PlayerPlatformMapUnit playerPlatformMapUnit:
                    break;

                case PlayerProbeMapUnit playerProbeMapUnit:
                    break;

                case PlayerShipMapUnit playerShipMapUnit:
                    float penThicknessBars = 2f;

                    using (SharpDX.DirectWrite.TextLayout textLayout = new SharpDX.DirectWrite.TextLayout(parent.DirectWriteFactory, playerShipMapUnit.Name, missionTargetTextFormat, 100f, 20f))
                    {
                        float halfWidth = textLayout.Metrics.Width / 2f;
                        renderTarget.DrawTextLayout(new SharpDX.Mathematics.Interop.RawVector2(position.X - halfWidth, position.Y + radius + Y.Prop(penThicknessBars + 2f)),
                                                    textLayout,
                                                    Brushes.SolidColorBrushes.TeamColors[playerShipMapUnit.TeamName], SharpDX.Direct2D1.DrawTextOptions.NoSnap);
                    }

                    if (playerShipMapUnit.Hull > 0f)
                    {
                        Primitives.Arc.Draw(renderTarget,
                                            Brushes.SolidColorBrushes.OrangeRed,
                                            position,
                                            radius - X.Prop(penThicknessBars),
                                            270f,
                                            360f * playerShipMapUnit.Hull,
                                            X.Prop(penThicknessBars));
                    }

                    if (playerShipMapUnit.Shield > 0.01f)
                    {
                        Primitives.Arc.Draw(renderTarget,
                                            Brushes.SolidColorBrushes.CadetBlue,
                                            position,
                                            radius - X.Prop(penThicknessBars * 3f),
                                            270f,
                                            360f * playerShipMapUnit.Shield,
                                            X.Prop(penThicknessBars));
                    }

                    if (playerShipMapUnit.IsOwnShip)
                    {
                        Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.LightBlue, position, radius);

                        if (currentShip.Name == playerShipMapUnit.Name)
                        {
                            Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Red, position, X.Prop(currentShip.MaxShootRadius));
                        }

                        #region Health, Energy, Shield

                        if (playerShipMapUnit.Energy > 0f)
                        {
                            Primitives.Arc.Draw(renderTarget,
                                                Brushes.SolidColorBrushes.BlueViolet,
                                                position,
                                                radius - X.Prop(penThicknessBars * 2f),
                                                270f,
                                                360f * playerShipMapUnit.Energy,
                                                X.Prop(penThicknessBars));
                        }

                        float weaponLoadPercentage = playerShipMapUnit.CurrentShots / playerShipMapUnit.MaxShots;

                        weaponLoadPercentage = weaponLoadPercentage < 0.01f ? 0.0f : weaponLoadPercentage;

                        if (weaponLoadPercentage > 0f)
                        {
                            Primitives.Arc.Draw(renderTarget,
                                                Brushes.SolidColorBrushes.LightGoldenrodYellow,
                                                position,
                                                radius + X.Prop(penThicknessBars),
                                                270f,
                                                360f * weaponLoadPercentage,
                                                X.Prop(penThicknessBars));
                        }
                        #endregion
                    }
                    else
                    {
                        Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.IndianRed, position, radius);
                    }
                    break;

                case QuadDamagePowerUpMapUnit quadDamagePowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.QuadDamagePowerUp, position, radius);
                    break;

                case ShieldPowerUpMapUnit shieldPowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.ShieldPowerUp, position, radius);
                    break;

                case ShotMapUnit shotMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Shot, position, radius);
                    break;

                case ShotProductionPowerUpMapUnit shotProductionPowerUpMapUnit:
                    Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.ShotProductionPowerUp, position, radius);
                    break;

                case SpaceJellyFishMapUnit spaceJellyFishMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.SpaceJellyFish, position, radius);
                    break;

                case SpaceJellyFishSlimeMapUnit spaceJellyFishSlimeMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.SpaceJellyFishSlime, position, radius, 1f, dashedStrokeStyle);
                    break;

                case StormCommencingWhirlMapUnit stormCommencingWhirlMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.StormCommencingWhirl, position, radius, 1f, dashedStrokeStyle);
                    break;

                case StormMapUnit stormMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Storm, position, radius);
                    break;

                case StormWhirlMapUnit stormWhirlMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.StormWhirl, position, radius);
                    break;

                case SunMapUnit sunMapUnit:
                    for (int c = 0; c < sunMapUnit.CoronaInfos.Length; c++)
                    {
                        Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.LightYellow, position, X.Prop(sunMapUnit.CoronaInfos[c].Radius), 1f, dashedStrokeStyle);
                    }

                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Sun, position, radius);
                    break;

                case SwitchMapUnit switchMapUnit:
                    if (switchMapUnit.Switched)
                    {
                        Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Red, position, radius);
                    }
                    else
                    {
                        Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Green, position, radius, 1f, dashedStrokeStyle);
                    }
                    break;

                case TotalRefreshPowerUpMapUnit totalRefreshPowerUpMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.TotalRefreshPowerUp, position, radius);
                    break;

                case UnknownMapUnit unknownMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.Unknown, position, radius);
                    break;

                case WormHoleMapUnit wormHoleMapUnit:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.WormHole, position, radius);
                    break;

                default:
                    Primitives.Circle.Draw(renderTarget, Brushes.SolidColorBrushes.White, position, radius);
                    break;
                }
            }
        }
コード例 #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="windowBounds"></param>
        /// <param name="renderTarget"></param>
        public override void Render(Size2F windowBounds, WindowRenderTarget renderTarget)
        {
            viewCenterX += (destinationViewCenterX - viewCenterX) / 5f;
            viewCenterY += (destinationViewCenterY - viewCenterY) / 5f;

            RectangleF sourceRect;

            Map map = null;
            PlayerShipMapUnit shipUnit = null;

            if (currentShip != null && currentShip.IsAlive && mapManager.TryGetPlayerUnit(currentShip.Universe.Name, currentShip.Name, out map, out shipUnit))
            {
                sourceRect = getSourceRectangleF(shipUnit.Position.X, shipUnit.Position.Y, scale, windowBounds.Width, windowBounds.Height);
            }
            else
            {
                sourceRect = getSourceRectangleF(viewCenterX, viewCenterY, scale, windowBounds.Width, windowBounds.Height);
            }

            X = new Transformator(sourceRect.Left, sourceRect.Right, 0, windowBounds.Width);
            Y = new Transformator(sourceRect.Top, sourceRect.Bottom, 0, windowBounds.Height);

            // TODO: Default Universe muss gesetzt werden falls ein Schiff nicht am Leben ist

            List <MapUnit> unitList;

            if (((map != null && mapManager.TryGetUnits(map, sourceRect, out unitList)) ||
                 mapManager.TryGetUnits(currentShip.Universe.Name, sourceRect, out unitList)) &&
                unitList.Count > 0)
            {
                drawUnits(renderTarget, unitList);

                // TODO: Draw HUD
                //if (shipUnit != null)
                //{
                //    renderTarget.DrawRectangle(
                //        new SharpDX.Mathematics.Interop.RawRectangleF(
                //            windowBounds.Width / 2f - 50f,
                //            windowBounds.Height - 20f,
                //            windowBounds.Width / 2f + 50f,
                //            windowBounds.Height),
                //        Brushes.SolidColorBrushes.White);

                //    renderTarget.FillRectangle(
                //        new SharpDX.Mathematics.Interop.RawRectangleF(
                //            windowBounds.Width / 2f - 49f,
                //            windowBounds.Height - 19f,
                //            (windowBounds.Width / 2f - 49f) + 98f * shipUnit.Energy,
                //            windowBounds.Height - 1f),
                //        Brushes.SolidColorBrushes.Violet);
                //}

                // TODO: Temp Klick Position
                if (currentShip != null && currentShip.IsAlive)
                {
                    Flattiverse.Vector pos = currentShip.DesiredPosition;

                    if (pos != null)
                    {
                        Primitives.Circle.Fill(renderTarget, Brushes.SolidColorBrushes.White, new SharpDX.Vector2(X[pos.X], Y[pos.Y]), 2f);
                    }
                }

                if (showScoreBoard)
                {
                    scoreBoard.Draw(SCOREBOARD_PADDING, SCOREBOARD_PADDING, windowBounds.Width - SCOREBOARD_PADDING * 2f, windowBounds.Height - SCOREBOARD_PADDING * 2f, renderTarget);
                }

                //MapPathfinder mapPathfinder = ship.MapPathfinder;

                //if (mapPathfinder != null)
                //{
                //    MapSectionRaster[] rasters = ship.MapPathfinder.Rasters;

                //    for (int i = 0; i < rasters.Length; i++)
                //    {
                //        MapSectionRasterTile[] tiles = rasters[i].Tiles;

                //        for (int t = 0; t < tiles.Length; t++)
                //        {
                //            var tile = tiles[t];

                //            if ((tile.Status & MapSectionRasterTileStatus.Blocked) == MapSectionRasterTileStatus.Blocked)
                //            {
                //                SharpDX.Mathematics.Interop.RawRectangleF rectangleF = new SharpDX.Mathematics.Interop.RawRectangleF(
                //                X[tile.X - rasters[i].TileSize / 2f],
                //                Y[tile.Y - rasters[i].TileSize / 2f],
                //                X[tile.X + rasters[i].TileSize / 2f],
                //                Y[tile.Y + rasters[i].TileSize / 2f]);

                //                renderTarget.DrawRectangle(rectangleF, Brushes.SolidColorBrushes.White);

                //                renderTarget.DrawRectangle(rectangleF, Brushes.SolidColorBrushes.RedHalfTransparent);
                //            }
                //        }
                //    }
                //}
            }
        }