コード例 #1
0
        public void StraightUnbuffered()
        {
            var pattern  = new StraightPattern(stopSearchLayer: Layers.WALL);
            var provider = new UnbufferedTargetProvider(pattern, Layers.REAL, Faction.Any);
            var entity   = World.Global.SpawnEntity(entityFactory, new IntVector2(0, 0));
            var target   = provider.GetTargets(new IntVector2(3, 0), new IntVector2(-1, 0)).Single();

            Assert.AreSame(target.transform, entity.GetTransform());
            var wall  = World.Global.SpawnEntity(wallFactory, new IntVector2(1, 0));
            int count = provider.GetTargets(new IntVector2(3, 0), new IntVector2(-1, 0)).Count();

            Assert.AreEqual(count, 0);
        }
コード例 #2
0
        public void Shoot(IntVector2 position, IntVector2 direction)
        {
            var targets = _provider.GetTargets(position, direction);

            foreach (var target in targets)
            {
                target.transform.entity.TryBeAttacked(null, _attack, direction);
                target.transform.entity.TryBePushed(_push, direction);
            }
        }
コード例 #3
0
ファイル: Bow.cs プロジェクト: AntonC9018/hopper.cs
        public static void Attack(Transform ownerTransform, IntVector2 direction)
        {
            // 1. get the attack (for now, get it from the owner
            ownerTransform.entity.GetStats().GetLazy(Core.Stat.Attack.Index, out var attack);
            // 2. get the targets
            foreach (var context in TargetProvider.GetTargets(ownerTransform.position, direction))
            {
                context.transform.entity.TryBeAttacked(null, attack, direction);
            }

            if (ownerTransform.entity.TryGetRangedWeapon(out var weapon))
            {
                weapon.GetBowComponent()._isCharged = false;
            }
        }