示例#1
0
        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;
        }
示例#2
0
        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)));
        }
示例#3
0
        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;
        }
示例#4
0
        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));
        }
示例#5
0
 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;
 }