Ejemplo n.º 1
0
        BaseSprite LoadDonut(BaseSprite sprite, string texturedir, XElement part)
        {
            Donut f = new Donut(this);

            f.Initialize(Content);
            f.Rot      = sprite.Rot;
            f.Position = sprite.Position;
            return(f);
        }
Ejemplo n.º 2
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);
            if (CheckFlag(Flags.FADE_OUT))
            {
                float a = Colour.A / 255.0f;
                float d = JabMath.MoveTowards(a, 0.0f, gttf(gameTime) * 2.0f, 0.001f);
                Colour = Color.White * d;
                if (d == 0)
                {
                    RaiseFlag(Flags.DELETE);
                }
                return;
            }
            if (PosX > world.GetRightMaxPos() + 1000 || PosX < world.startPos.X - 1000)
            {
                Rot = 0.5f * JabMath.PI;
            }
            if (Math.Abs(Rot) > 0.45f * JabMath.PI)
            {
                deathTimer += gttf(gameTime) * 5.0f;
                while (deathTimer > 1.0f && numDonutsMade < 5)
                {
                    deathTimer -= 1.0f;
                    Donut d = new Donut(world);
                    AudioQueue.PlayOnce("Sounds/pop");
                    d.Initialize(BaseGame.Get.Content);
                    d.Position = Position + new Vector2(RandomFloatInRange(-0.5f, 0.5f) * Width, RandomFloatInRange(-0.5f, 0.5f) * Height);
                    d.Chosen   = true;
                    world.AddNode(d);
                    deathTimer -= 1.0f;
                    ++numDonutsMade;

                    float   oldWidth  = Body.Width;
                    float   oldHeight = Body.Height;
                    Vector2 oldPos    = Body.Position;
                    float   oldRot    = Body.Rot;


                    oldWidth  *= 0.9f;
                    oldHeight *= 0.9f;
                    Vector2 linearVelocity  = Body.LinearVelocity;
                    float   angularVelocity = Body.AngularVelocity;

                    Body.RaiseFlag(Flags.DELETE);
                    Body.CollisionGroup = Donut.DonutCollisionGroup;

                    Body                 = world.World.CreateBox(new Vector2(oldWidth, oldHeight), oldPos, JabActor.BodyType.DYNAMIC);
                    Body.Rot             = oldRot;
                    Body.LinearVelocity  = linearVelocity;
                    Body.AngularVelocity = angularVelocity;
                    //Sprite.Width = oldWidth;
                    //Sprite.Height = oldHeight;
                }
                if (numDonutsMade > 4)
                {
                    RaiseFlag(Flags.DELETE);
                }
                //Colour = Color.White * ((5.0f - numDonutsMade) / 5.0f);
            }

            Sprite.Width  = JabMath.MoveTowards(Sprite.Width, Body.Width, gttf(gameTime) * 1.0f);
            Sprite.Height = JabMath.MoveTowards(Sprite.Height, Body.Height, gttf(gameTime) * 1.0f);

            //   Body.LinearDamping = 0.15f;
            //   Body.AngularDamping = 0.3f;
        }