Пример #1
0
        public Bat(Vector2 position, PhysicObj target) : base(position, target)
        {
            height = 0;

            Animation anim = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("Ennemy1/ennemy1"), 8, 0.1f, 32, 0, 0, 0);

            anim.reset();
            addAnimation(anim);

            Animation attackAnimation = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("Ennemy1/ennemy1attack"), 6, 0.1f, 32, 0, 0, 0);

            attackAnimation.isLooping = false;
            addAnimation(attackAnimation);

            Bloodbender.ptr.shadowsRendering.addShadow(new Shadow(this));

            velocity = 50;

            fixture = createOctogoneFixture(16f, 16f, Vector2.Zero, new AdditionalFixtureData(this, HitboxType.BOUND));
            Radius  = 32f;
            //add method to be called on collision, different denpending of fixture
            addFixtureToCheckedCollision(fixture);

            IComponent comp = new FollowBehaviorComponent(this, target, 32);

            addComponent(comp);

            cacAttack = true;
        }
Пример #2
0
        public GangMinion(Vector2 position, GangChef chef, PhysicObj target) : base(position, target)
        {
            height     = 0;
            lifePoints = 2;

            Animation anim = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("GangMinion/goblinrun"), 5, 0.1f, 0, 0, 0, 0);

            anim.reset();
            addAnimation(anim);

            Animation attackAnimation = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("GangMinion/goblinattack"), 7, 0.1f, 0, 0, 0, 0);

            attackAnimation.isLooping = false;
            addAnimation(attackAnimation);

            Animation scaredAnimation = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("GangMinion/goblinrunscream"), 5, 0.1f, 0, 0, 0, 0);

            //scaredAnimation.isLooping = false;
            addAnimation(scaredAnimation);

            Bloodbender.ptr.shadowsRendering.addShadow(new Shadow(this));

            scale = new Vector2(1.35f, 1.35f);

            this.chef = chef;

            velocity = 35;
            fixture  = createOctogoneFixture(40f, 40f, Vector2.Zero, new AdditionalFixtureData(this, HitboxType.BOUND));
            Radius   = 50f;
            //add method to be called on collision, different denpending of fixture
            addFixtureToCheckedCollision(fixture);

            fixture.OnCollision += Collision;

            followBehavior = new FollowBehaviorComponent(this, chef.node, 3);
            addComponent(followBehavior);

            distanceAttackWithTarget = 250;

            canAttack             = true;
            canGenerateProjectile = false;
            canBeHitByPlayer      = false;
            canBeHitByProjectile  = false;

            bloodSpawner.scaleRef = 1.25f;
        }
Пример #3
0
        public PartnerFar(Vector2 position, PhysicObj target) : base(position, target)
        {
            height = 0;

            Animation anim = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("Pair/coursePair2"), 7, 0.1f, 0, 0, 0, 0);

            anim.reset();
            addAnimation(anim);

            Animation attackAnimation = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("Pair/attackPair2"), 7, 0.075f, 0, 0, 0, 0);

            attackAnimation.isLooping = false;
            addAnimation(attackAnimation);

            Bloodbender.ptr.shadowsRendering.addShadow(new Shadow(this));

            fixture  = createOctogoneFixture(50f, 50f, Vector2.Zero, new AdditionalFixtureData(this, HitboxType.BOUND));
            Radius   = 50f;
            velocity = _initialVelocity;

            addFixtureToCheckedCollision(fixture);

            _node = new PhysicObj(new Vector2(position.X, position.Y), PathFinderNodeType.CENTER);
            _node.createOctogoneFixture(10, 10, Vector2.Zero, new AdditionalFixtureData(_node, HitboxType.BOUND)).IsSensor = true;
            _node.Radius = 10.0f;

            IComponent comp = new KeepDistanceComponent(300, Bloodbender.ptr.player, _node, this);

            _node.addComponent(comp);

            IComponent comp2 = new FollowBehaviorComponent(this, _node, 0);

            addComponent(comp2);

            distanceAttackWithTarget = 400;

            canAttack             = true;
            canGenerateProjectile = true;
            canBeHitByPlayer      = false;
            canBeHitByProjectile  = false;
        }
Пример #4
0
        public PartnerClose(Vector2 position, PhysicObj target) : base(position, target)
        {
            height = 0;

            Animation anim = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("Pair/coursePair1"), 7, 0.1f, 0, 0, 0, 0);

            anim.reset();
            addAnimation(anim);

            Animation attackAnimation = new Animation(Bloodbender.ptr.Content.Load <Texture2D>("Pair/attackPair1"), 9, 0.075f, 0, 0, 0, 0);

            attackAnimation.isLooping = false;
            addAnimation(attackAnimation);

            Bloodbender.ptr.shadowsRendering.addShadow(new Shadow(this));

            fixture  = createOctogoneFixture(50f, 50f, Vector2.Zero, new AdditionalFixtureData(this, HitboxType.BOUND));
            Radius   = 50f;
            velocity = 30;

            fixture.OnCollision += Collision;

            addFixtureToCheckedCollision(fixture);

            Partner = null;

            IComponent comp = new FollowBehaviorComponent(this, target, 40f);

            addComponent(comp);

            distanceAttackWithTarget = 50;
            lifePoints            = 2;
            canAttack             = true;
            canGenerateProjectile = false;
            canBeHitByPlayer      = false;
            canBeHitByProjectile  = true;
            cacAttack             = true;
        }