public UnitModel() { Position = new HexGridCoordinate(); Vectors = RawHexVector.Zero; _attachedShellstars = new List<IShellstarModel>(); _hexVectorUtility = ServiceFactory.Library.HexVectorUtility; _hexGridCalculator = ServiceFactory.Library.HexGridCalculator; }
private void EliminateBeComponent(HexGridCoordinate position) { int beMagnitude = _hexVectorUtility.GetMagnitudeAlongCardinalDirection(position, HexAxis.B); if (beMagnitude == 0) { return; } position.CfCoordinate = position.CfCoordinate + beMagnitude; position.DaCoordinate = position.DaCoordinate - beMagnitude; _hexVectorUtility.EliminateComponentsAlongCardinalDirection(position, HexAxis.B); }
public HexGridCoordinate GetMapPosition(HexGridCoordinate targetPosition, TurnData turnData) { throw new NotImplementedException(); }
private void CheckVectorComponent(HexGridCoordinate testCoordinate, int expectedMagnitude, HexAxis positiveAxis, HexAxis negativeAxis) { if (expectedMagnitude == 0) { return; } testCoordinate.Components.Should().ContainSingle(hvc => hvc.Magnitude == Math.Abs(expectedMagnitude) && hvc.Direction == (expectedMagnitude < 0 ? negativeAxis : positiveAxis)); }
private void CheckDistance(HexGridCoordinate posA, HexGridCoordinate posB, int distance, AvidRing ring, AvidDirection direction, bool isAbovePlane) { var result = _calculator.GetDistance(posA, posB); result.Magnitude.Should().Be(distance); result.Ring.Should().Be(ring); result.Direction.Should().Be(direction); result.AbovePlane.Should().Be(isAbovePlane); }
private void CheckMovement(int initialCf, int initialDa, int initialAlt, HexAxis moveAxis, uint moveMagnitude, int finalCf, int finalDa, int finalAlt, int finalDaValue) { var coordinate = new HexGridCoordinate { CfCoordinate = initialCf, DaCoordinate = initialDa, Altitude = initialAlt }; _calculator.Move(coordinate, moveAxis, moveMagnitude); CheckCoord(coordinate, finalCf, finalDa, finalAlt, finalDaValue); }
private void CheckCoord(HexGridCoordinate testCoordinate, int cfCoord, int daCoord, int altitude, int daVectorMagnitude) { testCoordinate.CfCoordinate.Should().Be(cfCoord); testCoordinate.DaCoordinate.Should().Be(daCoord); testCoordinate.Altitude.Should().Be(altitude); //Checking vector components CheckVectorComponent(testCoordinate, cfCoord, HexAxis.C, HexAxis.F); CheckVectorComponent(testCoordinate, daVectorMagnitude, HexAxis.D, HexAxis.A); CheckVectorComponent(testCoordinate, altitude, HexAxis.Up, HexAxis.Down); }
public AvidVector GetDistance(HexGridCoordinate from, HexGridCoordinate to) { // Distance between objects on hex grid is the projection of relative positions // when these positions are expressed as hex grid vectors. return GetRelativeVectorProjection(from, to); }
public void Move(HexGridCoordinate position, HexAxis direction, uint distance) { position.AddComponent(new HexVectorComponent(direction, (int)distance)); _hexVectorUtility.ConsolidateVector(position); EliminateBeComponent(position); }