public FightPointOfInterest(MapDimensions dimensions, ICombatant attacker, ICombatant defender) { var attackerPosition = dimensions.GetWorldPositionForGridPosition(attacker.Position); var defenderPosition = dimensions.GetWorldPositionForGridPosition(defender.Position); FocalPoint = MathUtils.Midpoint(attackerPosition, defenderPosition); Tolerance = 32f; }
public override IEnumerator SpecialAttack(FightPhase phase, MapDimensions dimensions, CombatantView receiverView, WeaponHitSeverity severity) { var receiver = phase.Receiver; var shoveEffects = phase.Effects.ReceiverEffects.OfType <Shove>().ToList(); if (shoveEffects.Any()) { Action <WeaponHitConnection> hitConnectedCallback = null; hitConnectedCallback = hit => { var destination = shoveEffects.First().GetDestination(receiver); var worldDestination = dimensions.GetWorldPositionForGridPosition(destination); var theirTransform = receiverView.transform; theirTransform .DOMove(worldDestination, 0.3f) .SetEase(Ease.OutCubic) .Play(); AttackConnectedSignal.RemoveListener(hitConnectedCallback); }; AttackConnectedSignal.AddListener(hitConnectedCallback); } yield return(StartCoroutine(Attack(receiver, severity))); }
public void HighlightPositions(IEnumerable <Vector2> positions, HighlightLevel level, MapDimensions dimensions) { var worldPositions = positions.Select(pos => dimensions.GetWorldPositionForGridPosition(pos)).ToList(); var highlights = worldPositions.Select(pos => CreateHighlight(pos, level)).ToHashSet(); _highlightsByLevel[level] = highlights; }
public Rect GetMapSpaceRect(MapDimensions dimensions) { var worldSpaceWidth = Width * dimensions.TileSize; var worldSpaceHeight = Height * dimensions.TileSize; var snappedPosition = dimensions.GetWorldPositionForGridPosition(dimensions.GetGridPositionForWorldPosition(transform.position)); if (Width % 2 == 0) { snappedPosition.x = snappedPosition.x + dimensions.TileSize / 2.0f; } if (Height % 2 == 0) { snappedPosition.y = snappedPosition.y + dimensions.TileSize / 2.0f; } var boundingOrigin = snappedPosition - new Vector3(worldSpaceWidth / 2.0f, worldSpaceHeight / 2.0f); var gridSpaceOrigin = dimensions.GetGridPositionForWorldPosition(boundingOrigin); return(new Rect(gridSpaceOrigin.x, gridSpaceOrigin.y, Width, Height)); }
public TilePointOfInterest(MapDimensions dimensions, Vector2 location) { FocalPoint = dimensions.GetWorldPositionForGridPosition(location); Tolerance = 1f; }
public CombatantPointOfInterest(MapDimensions dimensions, ICombatant combatant) { FocalPoint = dimensions.GetWorldPositionForGridPosition(combatant.Position); Tolerance = 1f; }