Esempio n. 1
0
        public static GameObject Create(ShieldCategory.Type type, int _Index, float posX = 0.0f, float posY = 0.0f)
        {
            ShieldFactory pFactory = ShieldFactory.PrivGetInstance();

            Debug.Assert(pFactory != null);

            GameObject pGameObj = null;

            switch (type)
            {
            case ShieldCategory.Type.Brick:
                pGameObj = new ShieldBrick(GameObject.Name.ShieldBrick, GameSprite.Name.Brick, _Index, posX, posY);
                break;

            case ShieldCategory.Type.LeftBottom:
                pGameObj = new ShieldBrick(GameObject.Name.ShieldBrick, GameSprite.Name.BrickLeft_Bottom, _Index, posX, posY);
                break;

            case ShieldCategory.Type.LeftTop0:
                pGameObj = new ShieldBrick(GameObject.Name.ShieldBrick, GameSprite.Name.BrickLeft_Top0, _Index, posX, posY);
                break;

            case ShieldCategory.Type.LeftTop1:
                pGameObj = new ShieldBrick(GameObject.Name.ShieldBrick, GameSprite.Name.BrickLeft_Top1, _Index, posX, posY);
                break;

            case ShieldCategory.Type.RightBottom:
                pGameObj = new ShieldBrick(GameObject.Name.ShieldBrick, GameSprite.Name.BrickRight_Bottom, _Index, posX, posY);
                break;

            case ShieldCategory.Type.RightTop0:
                pGameObj = new ShieldBrick(GameObject.Name.ShieldBrick, GameSprite.Name.BrickRight_Top0, _Index, posX, posY);
                break;

            case ShieldCategory.Type.RightTop1:
                pGameObj = new ShieldBrick(GameObject.Name.ShieldBrick, GameSprite.Name.BrickRight_Top1, _Index, posX, posY);
                break;

            case ShieldCategory.Type.Column:
                pGameObj = new ShieldColumn(GameObject.Name.ShieldColumn, GameSprite.Name.NullObject, _Index, posX, posY);
                break;

            case ShieldCategory.Type.Group:
                pGameObj = new ShieldGroup(GameObject.Name.ShieldRoot, GameSprite.Name.NullObject, _Index, posX, posY);
                break;

            default:
                Debug.Assert(false);
                break;
            }
            Debug.Assert(pGameObj != null);


            // Attach to SpriteBatch
            if (pGameObj.type == Component.Container.LEAF)
            {
                pFactory.pParent.Add(pGameObj);
                pGameObj.ActivateGameSprite(pFactory.pShieldSpriteBatch);
            }
            pGameObj.ActivateCollisionSprite(pFactory.pBoxSpriteBatch);
            return(pGameObj);
        }