public void UpdatePlatforms()
        {
            // We need to duplicate everything to control updates of the launch data manually.
            LaunchingSegment = new TurnData(_currentTurn.CurrentTurn.Turn, _currentTurn.CurrentTurn.Impulse);

            LaunchingUnitPosition = _hexVectorUtility.CloneHexVector <HexGridCoordinate>(_launchingUnit.Position);
            TargetUnitPosition    = _hexVectorUtility.CloneHexVector <HexGridCoordinate>(_targetUnit.Position);

            LaunchingUnitVelocity = _hexVectorUtility.CloneHexVector <RawHexVector>(_launchingUnit.Vectors);
            TargetUnitVelocity    = _hexVectorUtility.CloneHexVector <RawHexVector>(_targetUnit.Vectors);

            CrossingVector = _hexGridCalculator.GetCrossingVector(LaunchingUnitVelocity, TargetUnitVelocity);

            TargetDistance = _hexGridCalculator.GetDistance(LaunchingUnitPosition, TargetUnitPosition);
            CourseOffset   = 0;
            if (AvidVector.IsNullOrZero(TargetDistance))
            {
                TargetDistance = _hexGridCalculator.GetVectorFromBacktracking(LaunchingUnitVelocity, TargetUnitVelocity);
                OnVerificationRequired();
            }
            else
            {
                SubmitBearingVerificationResult(TargetDistance);
            }
        }
Exemple #2
0
        private HexGridCoordinate VectorToCoordinate(RawHexVector vector)
        {
            var result = _hexVectorUtility.CloneHexVector <HexGridCoordinate>(vector);

            _hexVectorUtility.ConsolidateVector(result);
            EliminateBeComponent(result);

            return(result);
        }
        public void TestVectorCloning()
        {
            var vectorA = new RawHexVector();

            vectorA.AddComponent(HexAxis.B, 5);
            vectorA.AddComponent(HexAxis.F, 2);

            var hexVector = _utilityLibrary.CloneHexVector <HexVector>(vectorA);

            TestChecksUtility.CheckComponent(hexVector.PrimaryComponent, HexAxis.B, 5);
            TestChecksUtility.CheckComponent(hexVector.SecondaryComponent, HexAxis.F, 2);

            // Cloning does not consolidate vectors. It copies them as they are, so we can't test grid
            // coordinates copy on vector A.
            var vectorB = new RawHexVector();

            vectorB.AddComponent(HexAxis.C, 5);
            vectorB.AddComponent(HexAxis.A, 2);
            var gridCoordinate = _utilityLibrary.CloneHexVector <HexGridCoordinate>(vectorB);

            gridCoordinate.CfCoordinate.Should().Be(5);
            gridCoordinate.DaCoordinate.Should().Be(1);
        }