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); } }
public void AvidPathingTest21() { var launchWindow = new AvidVector(AvidDirection.FA, AvidRing.Blue, false, 27); var crossingVector = new AvidVector(AvidDirection.EF, AvidRing.Blue, true, 20); var result = ServiceFactory.Library.AvidCalculator.GetPossibleLaunchWindows(2, launchWindow, crossingVector); result.Length.Should().Be(1); result.Should().Contain(new AvidWindow(AvidDirection.EF, AvidRing.Blue, true)); }
public void UpdateVector(AvidVector vector, bool isVisible) { IsVisible = !AvidWindow.IsNullOrZero(vector) && isVisible; Magnitude = vector != null ? vector.Magnitude : 0; Window = vector; OnPropertyChanged(Properties.IsVisible); OnPropertyChanged(Properties.Magnitude); OnPropertyChanged(Properties.Window); }
public void AvidPathingTest19() { var launchWindow = new AvidVector(AvidDirection.BC, AvidRing.Ember, true, 27); var crossingVector = new AvidVector(AvidDirection.E, AvidRing.Green, true, 20); var result = ServiceFactory.Library.AvidCalculator.GetPossibleLaunchWindows(2, launchWindow, crossingVector); result.Length.Should().Be(3); result.Should().Contain(new AvidWindow(AvidDirection.B, AvidRing.Green, true)); result.Should().Contain(new AvidWindow(AvidDirection.C, AvidRing.Green, true)); result.Should().Contain(new AvidWindow(AvidDirection.CD, AvidRing.Blue, true)); }
public void AvidPathingTest6() { var launchWindow = new AvidVector(AvidDirection.Undefined, AvidRing.Magenta, true, 27); var crossingVector = new AvidVector(AvidDirection.Undefined, AvidRing.Magenta, false, 20); var result = ServiceFactory.Library.AvidCalculator.GetPossibleLaunchWindows(1, launchWindow, crossingVector); result.Length.Should().Be(6); result.Should().Contain(new AvidWindow(AvidDirection.A, AvidRing.Green, true)); result.Should().Contain(new AvidWindow(AvidDirection.B, AvidRing.Green, true)); result.Should().Contain(new AvidWindow(AvidDirection.C, AvidRing.Green, true)); result.Should().Contain(new AvidWindow(AvidDirection.D, AvidRing.Green, true)); result.Should().Contain(new AvidWindow(AvidDirection.E, AvidRing.Green, true)); result.Should().Contain(new AvidWindow(AvidDirection.F, AvidRing.Green, true)); }
private void CreateOrUpdateVector(AvidVector originalVector, ref IAvidMark targetVector, int categoryId, bool underlined) { string markText = originalVector != null?originalVector.Magnitude.ToString("D") : string.Empty; AvidWindow position = originalVector ?? new AvidWindow(); if (targetVector == null) { targetVector = _elementBoard.AddMark(categoryId, markText, originalVector != null, underlined, position); } else { targetVector.Text = markText; targetVector.Window = position; targetVector.Visible = !AvidWindow.IsNullOrZero(position); } }
public AvidVector ProjectVectorToAvid(HexVector vector) { var result = new AvidVector { Magnitude = _rangeAltitudeTable.GetDistance(vector) }; if (result.Magnitude == 0) { return(result); } result.Ring = _rangeAltitudeTable.GetRing(vector); result.AbovePlane = result.Ring == AvidRing.Ember || vector.VerticalComponent.Direction == HexAxis.Up; result.Direction = CalculateDirection(vector, result.Ring); return(result); }
public void SubmitBearingVerificationResult(AvidWindow verificationResult) { if (verificationResult == null) { OnVerificationRequired(); return; } var vectorResult = verificationResult as AvidVector; int magnitude = vectorResult != null ? vectorResult.Magnitude : 0; TargetDistance = new AvidVector(verificationResult.Direction, verificationResult.Ring, verificationResult.AbovePlane, magnitude); CourseOffset = _avidCalculator.GetCourseOffset(TargetDistance, CrossingVector); OnVectorsUpdated(); UpdateFiringSolution(null, null, null); }
public static bool IsNullOrZero(AvidVector vector) { return(AvidWindow.IsNullOrZero(vector) || vector.Magnitude == 0); }
private void CreateOrUpdateVelocityVectors(AvidVector targetVector, AvidVector crossingVector) { CreateOrUpdateVector(targetVector, ref _targetVectorMark, VectorsCategory, false); CreateOrUpdateVector(crossingVector, ref _crossingVectorMark, VectorsCategory, true); }
public static bool IsNullOrZero(AvidVector vector) { return AvidWindow.IsNullOrZero(vector) || vector.Magnitude == 0; }