public EvilCow(World world, Vector2 initPos, Player player)
            : base(world, initPos, player)
        {
            this.setHealth(1200);
            mPlayer = player;
            mAnimationPlayer = new SpriteAnimationPlayer();
            mAnimationPlayer.SetAnimationToPlay(lightningCowAnimation);

            mFixture = FixtureFactory.AttachRectangle(90f * Camera.kPixelsToUnits, 90f * Camera.kPixelsToUnits, 1f, new Vector2(0, 0), new Body(mPhysicsWorld));
            mFixture.Body.BodyType = BodyType.Dynamic;
            mFixture.CollisionCategories = Category.Cat4;
            mFixture.CollidesWith = Category.All & ~Category.Cat3;
            mFixture.Body.OnCollision += monsterOnCollision;

            //Correct for meters vs pixels
            mFixture.Body.Position = new Vector2(mPosition.X, mPosition.Y);
            //mFixture.Body.UserData = "Monster";
            mFixture.Body.UserData = "Monster";
            mFixture.UserData = "Monster";

            //mTimeSinceCall = 10000; //so that they call upon spawning
            //mCallFrequency = 10000; //how often cow moos, in ms
            justSpawned = true;
            mMooVolume = .4f;
            mThunderVolume = .3f;

            //Init direction
            getNextDirection(mPlayer);

            /*
            //mBody = BodyFactory.CreateRectangle(mPhysicsWorld, 3f, 3f, .0125f);

            mFixture = FixtureFactory.AttachRectangle(3f, 3f, .0125f, new Vector2(0,0), new Body(mPhysicsWorld));
            mFixture.Body.BodyType = BodyType.Dynamic;
            mFixture.UserData = "EvilCow";
            mFixture.Body.UserData = "EvilCow";
            mFixture.CollisionCategories = Category.Cat3;
            mFixture.Body.OnCollision += monsterOnCollision;*/
        }
        //this is never called. We need it for physics object
        public Soul(World world, Vector2 initPos)
            : base(world, initPos)
        {
            mSpriteAnimPlayer = new SpriteAnimationPlayer();
            mSpriteAnimPlayer.SetAnimationToPlay(mSoulAnimation);

            mFixture = FixtureFactory.AttachRectangle(30 * Camera.kPixelsToUnits, 30 * Camera.kPixelsToUnits,
                1f, // density
                kFrameSizeInPixels / 2 * Camera.kPixelsToUnits, // offset
                new Body(mPhysicsWorld));
            mFixture.Body.CollisionCategories = Category.Cat30;
            mFixture.Body.CollidesWith        = Category.All;// &~Category.Cat31;
            mFixture.CollisionCategories      = Category.Cat30;
            mFixture.CollidesWith             = Category.All;//& ~Category.Cat31;
            mFixture.Body.OnCollision        += soulOnCollision;
            mFixture.Body.BodyType            = BodyType.Static;

            mFixture.UserData      = "Soul";
            mFixture.Body.UserData = "Soul";

            mFixture.Body.Position = mPosition;
            mFloatie = 0;
        }
        //this is never called. We need it for physics object
        //*/
        public Player(World world, Vector2 initPos)
            : base(world, initPos)
        {
            mRadius = 1f;

            //mBody = BodyFactory.CreateRectangle(mPhysicsWorld, 1f, 1f, 1f);
               // mBody.BodyType = BodyType.Dynamic;

            mFixture = FixtureFactory.AttachRectangle(30 * Camera.kPixelsToUnits, 50 * Camera.kPixelsToUnits, 1f, new Vector2(0f, 0f), new Body(mPhysicsWorld));
            mFixture.Body.CollisionCategories = Category.Cat1;
            mFixture.Body.CollidesWith        = Category.All & ~Category.Cat1 & ~Category.Cat2;
            mFixture.CollisionCategories      = Category.Cat1;
            mFixture.CollidesWith             = Category.All & ~Category.Cat1 & ~Category.Cat2;
            mFixture.Body.OnCollision        += playerOnCollision;
            mFixture.Body.BodyType            = BodyType.Dynamic;

            mFixture.UserData      = "Player";
            mFixture.Body.UserData = "Player";
            //mBody.UserData = "Player";

            mSpriteAnimPlayer = new SpriteAnimationPlayer();
            mSpriteAnimPlayer.SetAnimationToPlay(mBlinkingAnimation);
        }
 protected void HandleStun(GameTime gameTime, SpriteAnimationPlayer player, SpriteAnimation normal, SpriteAnimation pain)
 {
     if (mStunTimeout > 0)
     {
         mStunTimeout -= (float)gameTime.ElapsedGameTime.TotalSeconds;
         if (player.GetAnimationToPlay() != pain)
         {
             player.SetAnimationToPlay(pain);
         }
     }
     else
     {
         if (player.GetAnimationToPlay() != normal)
         {
             player.SetAnimationToPlay(normal);
         }
     }
 }