All pastes #631591 Raw Edit

Someone

public text v1 · immutable
#631591 ·published 2007-07-24 03:22 UTC
rendered paste body
foreach (Sprite sprite in mSprites)
                    {
                        if (sprite.CollisionAxisAlignedRectangle == null || ball.CollisionCircle == null)
                            continue;

                        if (!sprite.Name.Equals("dead") &&
                            ball.CollisionCircle.CollideAgainstBounce(sprite.CollisionAxisAlignedRectangle, 0, 1, 1) &&
                            sprite.Z == 0)
                        {

                            float yvel = ball.YVelocity;
                            GemsData.soundBank.PlayCue("pop");

                            bool dead = false;
                            bool squelch = false;

                            if (sprite.Name.StartsWith("brush"))
                            {
                                string[] color = sprite.Name.Split('-');

                                BallStates state = ball_state;

                                switch (color[1])
                                {
                                    case "green":
                                        ChangeState(BallStates.GREEN);
                                        break;

                                    case "red":
                                        ChangeState(BallStates.RED);
                                        break;

                                    case "brown":
                                        ChangeState(BallStates.BROWN);
                                        break;

                                    case "lblue":
                                        ChangeState(BallStates.LBLUE);
                                        break;

                                    case "blue":
                                        ChangeState(BallStates.BLUE);
                                        break;

                                    case "purple":
                                        ChangeState(BallStates.PURPLE);
                                        break;

                                    case "yellow":
                                        ChangeState(BallStates.YELLOW);
                                        break;
                                }

                                if (state != ball_state)
                                    GemsData.soundBank.PlayCue("color-change");
                            }
                            else
                            {
                                if (!sprite.Name.StartsWith("wall"))
                                {
                                    string[] name = sprite.Name.Split('-');

                                    switch (name[0])
                                    {
                                        case "red":
                                            if (ball_state == BallStates.RED)
                                            {
                                                dead = true;
                                                GemsData.score += brick_score;
                                            }
                                            break;

                                        case "green":
                                            if (ball_state == BallStates.GREEN)
                                            {
                                                dead = true;
                                                GemsData.score += brick_score;
                                            }
                                            break;

                                        case "lblue":
                                            if (ball_state == BallStates.LBLUE)
                                            {
                                                dead = true;
                                                GemsData.score += brick_score;
                                            }
                                            break;

                                        case "brown":
                                            if (ball_state == BallStates.BROWN)
                                            {
                                                dead = true;
                                                GemsData.score += brick_score;
                                            }
                                            break;

                                        case "blue":
                                            if (ball_state == BallStates.BLUE)
                                            {
                                                dead = true;
                                                GemsData.score += brick_score;
                                            }
                                            break;

                                        case "purple":
                                            if (ball_state == BallStates.PURPLE)
                                            {
                                                dead = true;
                                                GemsData.score += brick_score;
                                            }
                                            break;

                                        case "arrow":
                                            flip = !flip;
                                            dead = true;
                                            color_count++;
                                            break;

                                        case "lock":
                                            if (ball_state == BallStates.YELLOW)
                                            {
                                                if (has_key)
                                                {
                                                    GemsData.soundBank.PlayCue("unlock");
                                                    has_key = false;
                                                    dead = true;
                                                    color_count++;
                                                    squelch = true;
                                                    inv_key.Visible = false;
                                                    GemsData.score += lock_score;
                                                }
                                            }
                                            break;

                                        case "key":
                                            if (ball_state == BallStates.YELLOW)
                                            {
                                                if (!has_key)
                                                {
                                                    GemsData.soundBank.PlayCue("keys");
                                                    has_key = true;
                                                    dead = true;
                                                    color_count++;
                                                    squelch = true;
                                                    inv_key.Visible = true;
                                                    GemsData.score += key_score;
                                                }
                                            }
                                            break;

                                        case "diamond":
                                            if (color_count <= 0)
                                            {
                                                dead = true;
                                                squelch = true;

                                                GemsData.soundBank.PlayCue("diamond");
                                                diamond_count--;
                                                GemsData.score += diamond_score;

                                                if (diamond_count == 0)
                                                    GemsData.soundBank.PlayCue("win");
                                            }
                                            break;

                                        case "skull":

                                            if (GemsData.lives == 0)
                                            {
                                                // Gameover stuff here
                                            }
                                            else
                                                GemsData.lives--;

                                            start = false;

                                            GemsData.soundBank.PlayCue("death");

                                            SpriteManager.RemoveSprite(ball);
                                            
                                            ball = SpriteManager.AddSprite("Assets/Gfx/ball.png");
                                            mSprites.Add(ball);
                                            PlaceBall();
                                            GemsData.score = (GemsData.score - 500 < 0) ? 0 : GemsData.score - 500;
                                            get_ready.Visible = true;
                                            goto main_loop_start;
                                    }

                                    if (GemsData.score >= GemsData.life_goal)
                                    {
                                        GemsData.life_goal += 10000;
                                        GemsData.lives++;
                                        GemsData.soundBank.PlayCue("1up");
                                    }
                                }

                                if (dead)
                                {
                                    color_count--;

                                    sprite.RotationYVelocity = 5;
                                    sprite.Name = "dead";

                                    if (FlatRedBallServices.Random.Next() % 2 == 0)
                                        sprite.CustomBehavior += new SpriteCustomBehavior(DestroyBlockOut);
                                    else
                                        sprite.CustomBehavior += new SpriteCustomBehavior(DestroyBlockIn);

                                    if (!squelch)
                                        GemsData.soundBank.PlayCue("brick-death");
                                }
                            }
                        }
                    }