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); } }
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); }