Exemplo n.º 1
0
 // checks Overlap against any other AABB when called
 public bool CheckOverlap(AABBCollider other)
 {
     if (min.x > other.max.x)
     {
         return(false);
     }
     if (max.x < other.min.x)
     {
         return(false);
     }
     if (min.y > other.max.y)
     {
         return(false);
     }
     if (max.y < other.min.y)
     {
         return(false);
     }
     if (min.z > other.max.z)
     {
         return(false);
     }
     if (max.z < other.min.z)
     {
         return(false);
     }
     return(true);
 }
Exemplo n.º 2
0
 public Backpacker(SpriteSheet spriteSheet, int index)
     : base()
 {
     m_actionManager = new SingleActionManager();
     m_sprite        = new Sprite(Globals.TheGame, spriteSheet, Transform);
     m_sprite.Origin = new Vector2(0.5f, 1.0f);
     m_collider      = new AABBCollider(this, new AABB(m_sprite));
     m_currentState  = BackpackerState.Idle;
 }
Exemplo n.º 3
0
    public static AABBCollider MakeBoxCenter(float _x, float _y, float _width, float _height)
    {
        AABBCollider box = new AABBCollider();

        box.x1 = _x - _width / 2;
        box.x2 = _x + _width / 2;
        box.y1 = _y - _height / 2;
        box.y2 = _y + _height / 2;

        return(box);
    }
Exemplo n.º 4
0
    public static AABBCollider MakeBoxTLCorner(float _x, float _y, float _width, float _height)
    {
        AABBCollider box = new AABBCollider();

        box.x1 = _x;
        box.x2 = _x + _width;
        box.y1 = _y - _height;
        box.y2 = _y;

        return(box);
    }
Exemplo n.º 5
0
 private void InitAABBColliders()
 {
     {
         ColliderCategory colliderCategory = ColliderCategory.Actor | ColliderCategory.Player;
         ColliderCategory collidesWith     = ColliderCategory.Terrain | ColliderCategory.Bullet | ColliderCategory.Trigger;
         AABBCollider     playerCollider   = new AABBCollider(null, "PlayerCollider", new Vector2(0), 0.6f, 2.0f, colliderCategory, collidesWith);
         AABBColliders.Add("PlayerCollider", playerCollider);
     }
     {
         ColliderCategory colliderCategory = ColliderCategory.Actor | ColliderCategory.Creature;
         ColliderCategory collidesWith     = ColliderCategory.Terrain | ColliderCategory.Bullet | ColliderCategory.Trigger;
         AABBCollider     playerCollider   = new AABBCollider(null, "TurretCollider", new Vector2(0), 0.75f, 0.8f, colliderCategory, collidesWith);
         AABBColliders.Add("TurretCollider", playerCollider);
     }
 }
Exemplo n.º 6
0
        public void Initialize(Entity owner)
        {
            playerSprite = owner.GetComponent <AnimatedSprite>();
            Vector2 extension = new Vector2(playerSprite.Width * 0.5f, playerSprite.Height);

            playerCollider          = new AABBCollider(extension);
            playerCollider.IsStatic = false;
            //playerCollider.RemoveFromActiveColliders();
            playerCollider.Initialize(owner);

            this.owner = owner;


            Gravity = new Vector2(0, -9.8f);
        }
Exemplo n.º 7
0
        private void InitDirtBlocks()
        {
            ShaderInfo.Material dirtMaterial;
            dirtMaterial.Emissive  = new Color(50, 45, 40, 255);
            dirtMaterial.Diffuse   = new Color(100, 150, 100, 255);
            dirtMaterial.Specular  = new Color(255, 255, 255, 255);
            dirtMaterial.Shininess = 0.8f;
            TileLightingInfo dirtLighting = new TileLightingInfo("DirtTilesNormal", "DirtTextureNormal", dirtMaterial);

            int       x          = 0;
            int       y          = 0;
            const int spriteSize = 16;
            const int spacing    = 2;

            foreach (Facing f in (Facing[])Enum.GetValues(typeof(Facing)))
            {
                for (int i = 0; i < 3; i++)
                {
                    int startX = (spacing / 2) + (spriteSize + spacing) * x;
                    int startY = (spacing / 2) + (spriteSize + spacing) * y;

                    Renderable r = new Renderable(null, "DirtBlockNone", "DirtTiles", new Vector2(7.5f), new Vector2(0), new Vector2(1), 16, 16, startX, startY, 0.1f);
                    r.Drawable.ShaderInfo = dirtLighting;
                    r.DrawBatched         = true;
                    ColliderCategory colliderCategory = ColliderCategory.Terrain;
                    ColliderCategory collidesWith     = ColliderCategory.All & ~ColliderCategory.Trigger;
                    AABBCollider     c = new AABBCollider(null, "DirtBlock" + i, new Vector2(0), 0.5f, 0.5f, colliderCategory, collidesWith);
                    Entity           e = new Entity();
                    e.Components.Add(r);
                    e.Components.Add(c);
                    AddBlock(Material.Dirt, Shape.Block, f, e);

                    x++;
                    if (x > 6)
                    {
                        x = 0;
                        y++;
                    }
                }
            }
        }
 public bool CollisionX(AABBCollider _other)
 {
     return(_other.x2 >= x1 && _other.x1 <= x2);
 }
Exemplo n.º 9
0
        public Entity SelectEntity(int i)
        {
            Entity e = new Entity();

            switch (i)
            {
            case (0):
            {
                e = new Entity(true, "Block");
                e.Tags.Add("Terrain");
                ShaderInfo.Material material;
                material.Emissive  = new Color(0, 0, 0, 255);
                material.Diffuse   = new Color(100, 150, 100, 255);
                material.Specular  = new Color(255, 255, 255, 255);
                material.Shininess = 0.8f;
                LightingInfo lighting = new LightingInfo("DirtNormal", material);
                Renderable   r        = new Renderable(e, "Block", "Dirt", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
                r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
                r.Drawable.ShaderInfo = lighting;
                AABBCollider c = new AABBCollider(e, "", new Vector2(0), 1, 1, ColliderCategory.Terrain, ColliderCategory.Terrain);
                e.Components.Add(r);
                e.Components.Add(c);
            }
            break;

            case (1):
            {
                e = new Entity(true, "Grass");
                e.Tags.Add("Terrain");
                ShaderInfo.Material material;
                material.Emissive  = new Color(0, 0, 0, 255);
                material.Diffuse   = new Color(100, 150, 100, 255);
                material.Specular  = new Color(255, 255, 255, 255);
                material.Shininess = 0.8f;
                LightingInfo lighting = new LightingInfo("DirtNormal", material);
                Renderable   r        = new Renderable(e, "Block", "grass", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
                r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
                r.Drawable.ShaderInfo = lighting;
                AABBCollider c = new AABBCollider(e, "", new Vector2(0), 1, 1, ColliderCategory.Terrain, ColliderCategory.Terrain);
                e.Components.Add(r);
                e.Components.Add(c);
            }
            break;

            case (2):
            {
                e = new Entity(true, "Slope");
                e.Tags.Add("Terrain");
                ShaderInfo.Material material;
                material.Emissive  = new Color(0, 0, 0, 255);
                material.Diffuse   = new Color(100, 150, 100, 255);
                material.Specular  = new Color(255, 255, 255, 255);
                material.Shininess = 0.8f;
                LightingInfo lighting = new LightingInfo("DirtNormal", material);
                Renderable   r        = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
                r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
                r.Drawable.ShaderInfo = lighting;
                Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, -0.5f, 0.5f, -0.3f);
                e.Components.Add(r);
                e.Components.Add(p);
            }
            break;

            case (3):
            {
                e = new Entity(true, "Slope");
                e.Tags.Add("Terrain");
                ShaderInfo.Material material;
                material.Emissive  = new Color(0, 0, 0, 255);
                material.Diffuse   = new Color(100, 150, 100, 255);
                material.Specular  = new Color(255, 255, 255, 255);
                material.Shininess = 0.8f;
                LightingInfo lighting = new LightingInfo("DirtNormal", material);
                Renderable   r        = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
                r.Drawable.AddAnimation(32, 0, 1, 30, Animation.OnEnd.Loop, 0);
                r.Drawable.ShaderInfo = lighting;
                Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, -0.5f, -0.5f);
                e.Components.Add(r);
                e.Components.Add(p);
            }
            break;

            case (4):
            {
                e = new Entity(true, "Slope");
                e.Tags.Add("Terrain");
                ShaderInfo.Material material;
                material.Emissive  = new Color(0, 0, 0, 255);
                material.Diffuse   = new Color(100, 150, 100, 255);
                material.Specular  = new Color(255, 255, 255, 255);
                material.Shininess = 0.8f;
                LightingInfo lighting = new LightingInfo("DirtNormal", material);
                Renderable   r        = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
                r.Drawable.AddAnimation(64, 0, 1, 30, Animation.OnEnd.Loop, 0);
                r.Drawable.ShaderInfo = lighting;
                Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, -0.5f, 0.5f);
                e.Components.Add(r);
                e.Components.Add(p);
            }
            break;

            case (5):
            {
                e = new Entity(true, "Slope");
                e.Tags.Add("Terrain");
                ShaderInfo.Material material;
                material.Emissive  = new Color(0, 0, 0, 255);
                material.Diffuse   = new Color(100, 150, 100, 255);
                material.Specular  = new Color(255, 255, 255, 255);
                material.Shininess = 0.8f;
                LightingInfo lighting = new LightingInfo("DirtNormal", material);
                Renderable   r        = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
                r.Drawable.AddAnimation(96, 0, 1, 30, Animation.OnEnd.Loop, 0);
                r.Drawable.ShaderInfo = lighting;
                Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, -0.5f, 0.5f, 0.5f);
                e.Components.Add(r);
                e.Components.Add(p);
            }
            break;

            case (6):
            {
                e = new Entity(true, "Platform");
                e.Tags.Add("Terrain");
                ShaderInfo.Material material;
                material.Emissive  = new Color(0, 0, 0, 255);
                material.Diffuse   = new Color(100, 150, 100, 255);
                material.Specular  = new Color(255, 255, 255, 255);
                material.Shininess = 0.8f;
                LightingInfo lighting = new LightingInfo("DirtNormal", material);
                Renderable   r        = new Renderable(e, "Block", "grass", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
                r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
                r.Drawable.ShaderInfo = lighting;
                Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, 0.5f, -0.3f);
                e.Components.Add(r);
                e.Components.Add(p);
            }
            break;

            case (7):
            {
                e = new Entity(true, "Emptyblock");
                e.Tags.Add("Terrain");
                ShaderInfo.Material material;
                material.Emissive  = new Color(0, 0, 0, 255);
                material.Diffuse   = new Color(100, 150, 100, 255);
                material.Specular  = new Color(255, 255, 255, 255);
                material.Shininess = 0.8f;
                LightingInfo lighting = new LightingInfo("DirtNormal", material);
                Renderable   r        = new Renderable(e, "Block", "Dirt", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
                r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
                r.Drawable.ShaderInfo = lighting;
                e.Components.Add(r);
            }
            break;
            }

            e.Position = new Vector2(position.X, position.Y);

            return(e);
        }
Exemplo n.º 10
0
 public bool Collision(AABBCollider other)
 {
     return(CollisionX(other) && CollisionY(other));
 }
Exemplo n.º 11
0
 public bool CollisionY(AABBCollider other)
 {
     return(other.y2 > y1 && other.y1 < y2);
 }
Exemplo n.º 12
0
    /*public Vector2 BoxCenter
     * {
     *  get
     *  {
     *      return new Vector2((x1 - x2) / 2, (y1 - y2) / 2);
     *  }
     * }*/

    public bool CollisionX(AABBCollider other)
    {
        return(other.x2 > x1 && other.x1 < x2);
    }
Exemplo n.º 13
0
        public LevelEditor()
        {
            indicator = new Entity();
            entities  = new List <Entity>();
            index     = 0;
            editing   = false;
            gridLock  = false;

            Entity e = new Entity(true, "Block");

            e.Tags.Add("Terrain");
            Renderable r = new Renderable(e, "Block", "testSheet", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);

            r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
            AABBCollider c = new AABBCollider(e, "", new Vector2(0), 1, 1, ColliderCategory.Terrain, ColliderCategory.Terrain);

            e.Components.Add(r);
            e.Components.Add(c);
            entities.Add(e);

            e = new Entity(true, "Block");
            e.Tags.Add("Terrain");
            r = new Renderable(e, "Block", "grass", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
            r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
            c = new AABBCollider(e, "", new Vector2(0), 1, 1, ColliderCategory.Terrain, ColliderCategory.Terrain);
            e.Components.Add(r);
            e.Components.Add(c);
            entities.Add(e);

            e = new Entity(true, "Slope");
            e.Tags.Add("Terrain");
            r = new Renderable(e, "Slock", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
            r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
            Platform p = new Platform(e, new Vector2(0), 1, 1, 0, 0, -0.5f, 0.5f, -0.3f);

            e.Components.Add(r);
            e.Components.Add(p);
            entities.Add(e);

            e = new Entity(true, "Slope");
            e.Tags.Add("Terrain");
            r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
            r.Drawable.AddAnimation(32, 0, 1, 30, Animation.OnEnd.Loop, 0);
            p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, -0.5f, -0.3f);
            e.Components.Add(r);
            e.Components.Add(p);
            entities.Add(e);

            e = new Entity(true, "Slope");
            e.Tags.Add("Terrain");
            r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
            r.Drawable.AddAnimation(64, 0, 1, 30, Animation.OnEnd.Loop, 0);
            p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, -0.5f, 0.3f);
            e.Components.Add(r);
            e.Components.Add(p);
            entities.Add(e);

            e = new Entity(true, "Slope");
            e.Tags.Add("Terrain");
            r = new Renderable(e, "Slope", "tempSlope", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
            r.Drawable.AddAnimation(96, 0, 1, 30, Animation.OnEnd.Loop, 0);
            p = new Platform(e, new Vector2(0), 1, 1, 0, 0, -0.5f, 0.5f, 0.3f);
            e.Components.Add(r);
            e.Components.Add(p);
            entities.Add(e);

            e = new Entity(true, "Platform");
            e.Tags.Add("Terrain");
            r = new Renderable(e, "Block", "grass", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
            r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
            p = new Platform(e, new Vector2(0), 1, 1, 0, 0, 0.5f, 0.5f, -0.3f);
            e.Components.Add(r);
            e.Components.Add(p);
            entities.Add(e);

            e = new Entity(true, "Emptyblock");
            e.Tags.Add("Terrain");
            r = new Renderable(e, "Block", "testSheet", new Vector2(16), new Vector2(0), new Vector2(1), 32, 32, 0, 0, 0.1f);
            r.Drawable.AddAnimation(0, 0, 1, 30, Animation.OnEnd.Loop, 0);
            e.Components.Add(r);
            entities.Add(e);
        }
Exemplo n.º 14
0
 private void Start()
 {
     coll1 = box1.GetComponent <AABBCollider>();
     coll2 = box2.GetComponent <AABBCollider>();
 }
Exemplo n.º 15
0
        public FatZombie()
        {
            m_physics       = new PhysicsComponent(Globals.TheGame, Transform);
            m_sprite        = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_phat", 1, 12), Transform);
            m_sprite.Origin = new Vector2(0.5f, 1);
            m_loot          = Loot.GenerateLoot(12);

            ObjectState.BeginAction   = delegate() { m_actionManager.StartNew(m_full); };
            ObjectState.StandbyAction = delegate() { m_actionManager.Stop(); m_sprite.SetFrame(0); };
            ObjectState.DestroyAction = delegate() { m_destructible.ClearHitEvents(); Backpacker.HitPlayerColliders.Remove(m_collider); };

            m_collider = new AABBCollider(this, new AABB(m_sprite));
            Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); });

            m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, HP);

            m_impactBox = new AABB(new Transform(Transform, true), new Vector2(72, 67));
            m_impactBox.Transform.Position = new Vector2(13, -70);
            m_shurikenReceiver             = new ShurikenReceiver(Transform, m_impactBox, 10);
            m_hitAnimation = new HitAnimation(World.baseEffect);
            m_measurer     = new AABBMeasurer(new AABB(new Transform(Transform, true), new Vector2(50, 50)));

            m_full        = new SpriteSheetAnimation(m_sprite, 0, 1, 0.7f, -1);
            m_noHead1     = new SpriteSheetAnimation(m_sprite, 2, 3, 0.7f, -1);
            m_noHead2     = new SpriteSheetAnimation(m_sprite, 4, 5, 0.7f, -1);
            m_noRightArm  = new SpriteSheetAnimation(m_sprite, 6, 7, 0.7f, -1);
            m_noLeftArm   = new SpriteSheetAnimation(m_sprite, 8, 9, 0.7f, -1);
            m_noShoulders = new SpriteSheetAnimation(m_sprite, 10, 11, 0.7f, -1);

            m_actionManager = new SingleActionManager();
            m_actionManager.StartNew(m_full);


            //_projections = new BodyPart[]
            //{
            //    null,
            //    new BodyPart(this, new Vector2(0, -55), "bp_fatshoulders"),
            //    new BodyPart(this, new Vector2(-15, -75), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(-15, -75), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(-30, -100), "bp_fathead2"),
            //    new BodyPart(this, new Vector2(-30, -115), "bp_fathead1"),
            //};

            //_destroyProjections = new BodyPart[] {
            //    new BodyPart(this, new Vector2(0, -45), "bp_fatupperb"),
            //    new BodyPart(this, new Vector2(0, -10), "bp_fatlowerb"),
            //};
            m_bodyParts = new ParticleSystem(Globals.TheGame, 7);

            m_head1 = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fathead1"), new Transform(Transform, true));
            m_head1.Transform.Position = new Vector2(-30, -110);
            m_bodyParts.AddParticle(m_head1);

            m_head2 = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fathead2"), new Transform(Transform, true));
            m_head2.Transform.Position = new Vector2(-30, -100);
            m_bodyParts.AddParticle(m_head2);

            m_shoulders = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatshoulders"), new Transform(Transform, true));
            m_shoulders.Transform.Position = new Vector2(0, -80);
            m_bodyParts.AddParticle(m_shoulders);

            m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armL.Transform.Position = new Vector2(-15, -75);
            m_bodyParts.AddParticle(m_armL);

            m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armR.Transform.Position = new Vector2(-15, -75);
            m_bodyParts.AddParticle(m_armR);

            m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatupperb"), new Transform(Transform, true));
            m_upperB.Transform.Position = new Vector2(15, -65);
            m_bodyParts.AddParticle(m_upperB);

            m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_fatlowerb"), new Transform(Transform, true));
            m_lowerB.Transform.Position = new Vector2(15, -27);
            m_bodyParts.AddParticle(m_lowerB);

            ///
            ///Hit events
            ///
            m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit);
            m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit);

            ///
            /// Health events
            ///
            m_destructible.AddHealthEvent(7, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noHead1);
                m_head1.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(6, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noHead2);
                m_head2.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(5, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noRightArm);
                m_armR.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(4, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noLeftArm);
                m_armL.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(3, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noShoulders);
                m_shoulders.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(0, false, new MethodAction(delegate()
            {
                m_upperB.Pop(-1.1f, 500, true);
                m_lowerB.Pop(-1.1f, 500, true);
                ObjectState.Destroy();
            }));

            ObjectState.Begin();
        }
 public bool CollisionY(AABBCollider _other)
 {
     return(_other.y2 >= y1 && _other.y1 <= y2);
 }
        //        public Tpl_PogoZombie()
        //    : base(typeof(PogoZombie), "e_pz")
        //{
        //    _hp = 3;
        //    _speed = 2.4f;
        //    _jumpForce = 25;
        //    _appearanceRate = 30;
        //}

        public PogoZombie() : base()
        {
            m_jumpForce = Globals.Random.Next(-JumpForceInterval, JumpForceInterval + 1) + JumpForce;

            m_sprite        = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_pogo", 1, 8), Transform);
            m_sprite.Origin = new Vector2(0.5f, 1.0f);
            m_physics       = new PhysicsComponent(Globals.TheGame, Transform);
            m_loot          = Loot.GenerateLoot(12);

            m_currentFrame = 0;

            ObjectState.BeginAction = delegate()
            {
                m_sprite.SetFrame(m_currentFrame);
            };
            ObjectState.StandbyAction = delegate()
            {
                m_sprite.SetFrame(m_currentFrame + 1);
            };
            ObjectState.DestroyAction = delegate()
            {
                m_destructible.ClearHitEvents();
                Backpacker.HitPlayerColliders.Remove(m_collider);
            };

            m_collider = new AABBCollider(this, new AABB(m_sprite));
            Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); });

            m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, 4);
            m_hitAnimation = new HitAnimation(World.baseEffect);
            m_impactBox    = new AABB(new Transform(Transform, true), new Vector2(20, 60));
            m_impactBox.Transform.Position = new Vector2(5, -54);
            m_shurikenReceiver             = new ShurikenReceiver(Transform, m_impactBox, 5);
            m_measurer = new AABBMeasurer(m_impactBox);

            //_projections = new BodyPart[] {
            //    null,
            //    new BodyPart(this, new Vector2(0, -65), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(-10, -55), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(15, -75), "bp_basezombiehead"),
            //};

            //_destroyProjections = new BodyPart[]
            //{
            //    new BodyPart(this, new Vector2(10, -50), "bp_basezombieupperb"),
            //    new BodyPart(this, new Vector2(10, -50), "bp_pogostick"),
            //    new BodyPart(this, new Vector2(10, -10), "bp_basezombielowerb")
            //};

            ///
            ///	Body parts
            ///

            m_bodyParts = new ParticleSystem(Globals.TheGame, 6);

            m_head = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiehead"), new Transform(Transform, true));
            m_head.Transform.Position = new Vector2(7, -97);
            m_bodyParts.AddParticle(m_head);

            m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armR.Transform.Position = new Vector2(-20, -70);
            m_bodyParts.AddParticle(m_armR);

            m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombielowerb"), new Transform(Transform, true));
            m_lowerB.Transform.Position = new Vector2(0, -40);
            m_bodyParts.AddParticle(m_lowerB);

            m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombieupperb"), new Transform(Transform, true));
            m_upperB.Transform.Position = new Vector2(0, -65);
            m_bodyParts.AddParticle(m_upperB);

            m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armL.Transform.Position = new Vector2(-20, -70);
            m_bodyParts.AddParticle(m_armL);

            m_pogoStick = new BodyPart(TextureLibrary.GetSpriteSheet("bp_pogostick"), new Transform(Transform, true));
            m_pogoStick.Transform.Position = new Vector2(-6, -40);
            m_bodyParts.AddParticle(m_pogoStick);

            ///
            ///Hit events
            ///
            m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit);
            m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit);

            ///
            /// Health events
            ///
            m_destructible.AddHealthEvent(3, false, new MethodAction(delegate()
            {
                m_currentFrame = 2;
                m_sprite.SetFrame(m_currentFrame);
                m_head.Pop(-1.1f, 800, true);
            }));
            m_destructible.AddHealthEvent(2, false, new MethodAction(delegate()
            {
                m_currentFrame = 4;
                m_sprite.SetFrame(m_currentFrame);
                m_armL.Pop(-1.1f, 800, true);
            }));
            m_destructible.AddHealthEvent(1, false, new MethodAction(delegate()
            {
                m_currentFrame = 6;
                m_sprite.SetFrame(m_currentFrame);
                m_armR.Pop(-1.1f, 800, true);
            }));
            m_destructible.AddHealthEvent(0, false, new MethodAction(delegate()
            {
                m_upperB.Pop(-1.1f, 800, true);
                m_lowerB.Pop(-1.1f, 800, true);
                m_pogoStick.Pop(-1.1f, 200, true);
                ObjectState.Destroy();
            }));

            ObjectState.Begin();
        }
Exemplo n.º 18
0
        public BasicZombie()
            : base()
        {
            m_physics       = new PhysicsComponent(Globals.TheGame, Transform);
            m_sprite        = new Sprite(Globals.TheGame, TextureLibrary.GetSpriteSheet("zombie_base", 1, 8), Transform);
            m_sprite.Origin = new Vector2(0.5f, 1.0f);
            m_loot          = Loot.GenerateLoot(4);

            ObjectState.BeginAction = delegate()
            {
                m_actionManager.StartNew(m_full);
            };
            ObjectState.StandbyAction = delegate()
            {
                m_actionManager.Stop();
                m_sprite.SetFrame(0);
            };
            ObjectState.DestroyAction = delegate()
            {
                m_destructible.ClearHitEvents();
                Backpacker.HitPlayerColliders.Remove(m_collider);
            };

            m_collider = new AABBCollider(this, new AABB(m_sprite));
            Backpacker.HitPlayerColliders.Add(m_collider, delegate(Collider other) { m_physics.Throw(10.0f, -10.0f, 0.1f); });
            m_destructible = new DestructibleComponent(Transform, m_collider, m_collider.AABB, HP);


            m_impactBox = new AABB(new Transform(Transform, true), new Vector2(22, 42));
            m_impactBox.Transform.Position = new Vector2(13, -44);
            m_measurer         = new AABBMeasurer(m_impactBox);
            m_shurikenReceiver = new ShurikenReceiver(Transform, m_impactBox, 5);
            m_hitAnimation     = new HitAnimation(World.baseEffect);

            m_full       = new SpriteSheetAnimation(m_sprite, 0, 1, 0.5f, -1);
            m_noHead     = new SpriteSheetAnimation(m_sprite, 2, 3, 0.5f, -1);
            m_noLeftArm  = new SpriteSheetAnimation(m_sprite, 4, 5, 0.5f, -1);
            m_noRightArm = new SpriteSheetAnimation(m_sprite, 6, 7, 0.5f, -1);

            m_actionManager = new SingleActionManager();

            //Transform headTransform = new Transform(Transform, true
            //_projections = new BodyPart[] {
            //    null,
            //    new BodyPart(this, new Vector2(0, -65), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(-10, -55), "bp_basezombiearm"),
            //    new BodyPart(this, new Vector2(15, -75), "bp_basezombiehead"),
            // new BodyPart(this, new Vector2(10, -50), "bp_basezombieupperb"),
            //   new BodyPart(this, new Vector2(10, -10), "bp_basezombielowerb")
            //};


            ///
            /// Body Parts
            ///
            m_bodyParts = new ParticleSystem(Globals.TheGame, 5);

            m_head = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiehead"), new Transform(Transform, true));
            m_head.Transform.Position = new Vector2(5, -50);
            m_bodyParts.AddParticle(m_head);

            m_armL = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armL.Transform.Position = new Vector2(5, -30);
            m_bodyParts.AddParticle(m_armL);

            m_armR = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombiearm"), new Transform(Transform, true));
            m_armR.Transform.Position = new Vector2(-5, -30);
            m_bodyParts.AddParticle(m_armR);

            m_upperB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombieupperb"), new Transform(Transform, true));
            m_upperB.Transform.Position = new Vector2(0, -30);
            m_bodyParts.AddParticle(m_upperB);

            m_lowerB = new BodyPart(TextureLibrary.GetSpriteSheet("bp_basezombielowerb"), new Transform(Transform, true));
            m_lowerB.Transform.Position = new Vector2(0, -10);
            m_bodyParts.AddParticle(m_lowerB);

            ///
            ///Hit events
            ///
            m_destructible.SetHitEvent(AttackType.Shuriken, OnShurikenHit);
            m_destructible.SetHitEvent(AttackType.Slash, OnSliceHit);

            ///
            /// Health events
            ///
            m_destructible.AddHealthEvent(3, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noHead);
                m_head.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(2, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noLeftArm);
                m_armL.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(1, false, new MethodAction(delegate()
            {
                m_actionManager.StartNew(m_noRightArm);
                m_armR.Pop(-1.1f, 500, true);
            }));
            m_destructible.AddHealthEvent(0, false, new MethodAction(delegate()
            {
                m_upperB.Pop(-1.1f, 500, true);
                m_lowerB.Pop(-1.1f, 500, true);
                ObjectState.Destroy();
            }));

            ObjectState.Begin();
        }
Exemplo n.º 19
0
 public void AddCollider(AABBCollider collider)
 {
     m_colliders.Add(collider);
 }