Exemple #1
0
        public IEntity AddBlock(XmlNode x, ContentManager content, GraphicsDevice graphics, CollisionDetection collisions)
        {
            bool isUnderworld = false;

            switch (type)
            {
            case ("questionblock"):
                QuestionBlock questionBlock = new QuestionBlock(content, graphics);
                if (x.HasChildNodes)
                {
                    for (int m = Constants.ZERO; m < x.ChildNodes.Count; m++)
                    {
                        IEntity childEntity = null;
                        XmlNode y           = x.ChildNodes[m];
                        GetAttributes(y);
                        if (tag.Equals("item"))
                        {
                            childEntity = AddItem(content, graphics);
                        }
                        else if (tag.Equals("block"))
                        {
                            childEntity = AddBlock(y, content, graphics, collisions);
                        }
                        entity = childEntity;
                        SetProperties(collisions);
                        questionBlock.AddContainedItem(childEntity);
                    }
                }
                GetAttributes(x);
                entity = questionBlock;
                break;

            case ("floorblock"):
                isUnderworld = false;
                entity       = new FloorBlock(content, graphics, isUnderworld);
                break;

            case ("underworldFloor"):
                isUnderworld = true;
                entity       = new FloorBlock(content, graphics, isUnderworld);
                break;

            case ("glassblock"):
                GlassBlock glassBlock = new GlassBlock(content, graphics);
                isGlass = true;
                if (x.HasChildNodes)
                {
                    for (int m = Constants.ZERO; m < x.ChildNodes.Count; m++)
                    {
                        IEntity childEntity = null;
                        XmlNode y           = x.ChildNodes[m];
                        GetAttributes(y);
                        if (tag.Equals("block"))
                        {
                            childEntity = AddBlock(y, content, graphics, collisions);
                        }
                        entity = childEntity;
                        SetProperties(collisions);
                        glassBlock.AddContainedItem(childEntity);
                    }
                }
                GetAttributes(x);
                entity = glassBlock;
                break;

            case ("brickblock"):
                isUnderworld = false;
                BrickBlock brickBlock = new BrickBlock(content, graphics, isUnderworld);
                if (x.HasChildNodes)
                {
                    for (int m = Constants.ZERO; m < x.ChildNodes.Count; m++)
                    {
                        IEntity childEntity = null;
                        XmlNode y           = x.ChildNodes[m];
                        GetAttributes(y);
                        if (tag.Equals("item"))
                        {
                            childEntity = AddItem(content, graphics);
                        }
                        else if (tag.Equals("block"))
                        {
                            childEntity = AddBlock(y, content, graphics, collisions);
                        }
                        entity = childEntity;
                        SetProperties(collisions);
                        brickBlock.AddContainedItem(childEntity);
                    }
                }
                GetAttributes(x);
                entity = brickBlock;
                break;

            case ("underworldBrick"):
                Underworld = true;
                BrickBlock underworldBrickBlock = new BrickBlock(content, graphics, Underworld);
                if (x.HasChildNodes)
                {
                    for (int m = Constants.ZERO; m < x.ChildNodes.Count; m++)
                    {
                        IEntity childEntity = null;
                        XmlNode y           = x.ChildNodes[m];
                        GetAttributes(y);
                        if (tag.Equals("item"))
                        {
                            childEntity = AddItem(content, graphics);
                        }
                        else if (tag.Equals("block"))
                        {
                            childEntity = AddBlock(y, content, graphics, collisions);
                        }
                        entity = childEntity;
                        SetProperties(collisions);
                        underworldBrickBlock.AddContainedItem(childEntity);
                    }
                }
                GetAttributes(x);
                entity = underworldBrickBlock;
                break;

            case ("warpPipe"):
                WarpPipe warpPipe = new WarpPipe(content, graphics, ExitPipe, Underworld, MiniGame);
                if (x.HasChildNodes)
                {
                    for (int m = Constants.ZERO; m < x.ChildNodes.Count; m++)
                    {
                        IEntity childEntity = null;
                        XmlNode y           = x.ChildNodes[m];
                        GetAttributes(y);
                        if (tag.Equals("enemy"))
                        {
                            childEntity = AddEnemy(content, graphics, peach);
                        }
                        else if (tag.Equals("block"))
                        {
                            childEntity = AddBlock(y, content, graphics, collisions);
                        }
                        entity = childEntity;
                        SetProperties(collisions);
                        warpPipe.AddContainedItem(childEntity);
                    }
                }
                GetAttributes(x);
                entity = warpPipe;
                break;

            case ("stairblock"):
                entity = new StairBlock(content, graphics);
                break;

            case ("usedblock"):
                entity = new UsedBlock(content, graphics);
                break;

            case ("hiddenblock"):
                isUnderworld = false;
                HiddenBlock hiddenBlock = new HiddenBlock(content, graphics);
                if (x.HasChildNodes)
                {
                    for (int m = Constants.ZERO; m < x.ChildNodes.Count; m++)
                    {
                        IEntity childEntity = null;
                        XmlNode y           = x.ChildNodes[m];
                        GetAttributes(y);
                        if (tag.Equals("item"))
                        {
                            childEntity = AddItem(content, graphics);
                        }
                        else if (tag.Equals("block"))
                        {
                            childEntity = AddBlock(y, content, graphics, collisions);
                        }
                        entity = childEntity;
                        SetProperties(collisions);
                        hiddenBlock.AddContainedItem(childEntity);
                    }
                }
                GetAttributes(x);
                entity = hiddenBlock;
                break;

            case ("pipe"):
                entity = new Pipe(content, graphics);
                break;

            case ("explodingBlock"):
                entity = new ExplodingBlock(content, graphics, isGlass);
                break;

            case ("exitPipe"):
                entity = new WarpPipe(content, graphics, ExitPipe, Underworld, MiniGame);
                break;

            default:
                break;
            }
            return(entity);
        }