Beyond_Beyaan.Fleet.Move C# (CSharp) Метод

Move() публичный Метод

public Move ( float frameDeltaTime ) : bool
frameDeltaTime float
Результат bool
        public bool Move(float frameDeltaTime)
        {
            if (_travelNodes == null)
            {
                return false;
            }
            if (_remainingMoves > 0)
            {
                _adjacentSystem = null; //Left the system
                float amountToMove = frameDeltaTime * _maxSpeed * Galaxy.PARSEC_SIZE_IN_PIXELS;
                if (amountToMove > _remainingMoves)
                {
                    amountToMove = _remainingMoves;
                }
                _remainingMoves -= amountToMove;

                float xMov = (float)(Math.Cos(_travelNodes[0].Angle * (Math.PI / 180)) * amountToMove);
                float yMov = (float)(Math.Sin(_travelNodes[0].Angle * (Math.PI / 180)) * amountToMove);

                bool isLeftOfNode = _galaxyX <= _travelNodes[0].StarSystem.X;
                bool isTopOfNode = _galaxyY <= _travelNodes[0].StarSystem.Y;

                _galaxyX += xMov;
                _galaxyY += yMov;

                if ((_galaxyX > _travelNodes[0].StarSystem.X && isLeftOfNode) ||
                    (_galaxyX <= _travelNodes[0].StarSystem.X && !isLeftOfNode) ||
                    (_galaxyY > _travelNodes[0].StarSystem.Y && isTopOfNode) ||
                    (_galaxyY <= _travelNodes[0].StarSystem.Y && !isTopOfNode))
                {
                    //TODO: Carry over excess movement to next node

                    //It has arrived at destination
                    _galaxyX = _travelNodes[0].StarSystem.X;
                    _galaxyY = _travelNodes[0].StarSystem.Y;
                    _adjacentSystem = _travelNodes[0].StarSystem;
                    _travelNodes.RemoveAt(0);
                    if (_travelNodes.Count == 0)
                    {
                        _travelNodes = null;
                        _remainingMoves = 0;
                    }
                }
                else
                {
                    float x = _travelNodes[0].StarSystem.X - _galaxyX;
                    float y = _travelNodes[0].StarSystem.Y - _galaxyY;
                    _travelNodes[0].Length = (float)Math.Sqrt((x * x) + (y * y));
                    _travelNodes[0].Angle = (float)(Math.Atan2(y, x) * (180 / Math.PI));
                }
            }
            return _remainingMoves > 0;
        }