Subversion Repositories AndroidProjects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1671 chris 1
package com.gebauz.bauzoid.menu;
2
 
3
import com.gebauz.bauzoid.game.Game;
4
import com.gebauz.bauzoid.graphics.sprite.Sprite;
5
import com.gebauz.bauzoid.graphics.sprite.SpriteInstance;
6
import com.gebauz.bauzoid.parser.ScanException;
7
import com.gebauz.bauzoid.parser.Tokenizer;
8
 
9
/** Implements a Button using an Image and Text.
10
 *
11
 * This kind of button has several semantic changes over the regular Button class:
12
 * - position, size, align refer to the image used
13
 * - The text has its own position (relative to the upper-left edge of the Image)
14
 * - The text has its own alignment
15
 *
16
 *
17
 * @author chiu
18
 *
19
 */
20
public class ImageButton extends Button
21
{
22
        // Constants========================================================================================
23
 
24
        // Embedded Types===================================================================================
25
 
26
        // Fields===========================================================================================
27
 
28
        private String mTextureName = "";
29
        private String mPushTextureName = "";
30
 
31
        private Sprite mImageSprite = null;
32
        private SpriteInstance mImage = null;
33
        private Sprite mPushImageSprite = null;
34
        private SpriteInstance mPushImage = null;
35
 
36
        // Methods==========================================================================================
37
 
38
        public ImageButton(Game game, Menu parent, String name)
39
        {
40
                super(game, parent, name);
41
        }
42
 
43
        @Override
44
        public void init()
45
        {
46
                super.init();
47
 
48
                //mImage = new Sprite(getGame().getGraphics(), new Texture(Gdx.files.internal(mTextureName)));
49
                mImageSprite = new Sprite(getGame().getGraphics(), mTextureName);
50
                mImageSprite.init();
51
                mImage = mImageSprite.createSpriteInstance(0);
52
                Image.setSpriteProperties(mImage, this);
53
 
54
                if (!mPushTextureName.isEmpty())
55
                {
56
                        //mPushImage = new Sprite(getGame().getGraphics(), new Texture(Gdx.files.internal(mPushTextureName)));
57
                        mPushImageSprite = new Sprite(getGame().getGraphics(), mPushTextureName);
58
                        mPushImageSprite.init();
59
                        mPushImage = mPushImageSprite.createSpriteInstance(0);
60
 
61
                        if (mPushImage != null)
62
                                Image.setSpriteProperties(mPushImage, this);
63
                }
64
        }
65
 
66
        @Override
67
        public void exit()
68
        {
69
                if (mImageSprite != null)
70
                {
71
                        mImageSprite.dispose();
72
                        mImageSprite = null;
73
                }
74
                mImage = null;
75
 
76
                if (mPushImageSprite != null)
77
                {
78
                        mPushImageSprite.dispose();
79
                        mPushImageSprite = null;
80
                }
81
                mPushImage = null;
82
 
83
                super.exit();
84
        }
85
 
86
        @Override
87
        public void update(float deltaTime)
88
        {
89
                super.update(deltaTime);
90
 
91
                //mImage.update(deltaTime);             
92
                Image.setSpriteProperties(mImage, this);
93
                if (mPushImage != null)
94
                {
95
                        Image.setSpriteProperties(mPushImage, this);
96
                        //mPushImage.update(deltaTime);
97
                }
98
        }
99
 
100
        @Override
101
        public void render()
102
        {
103
                if (isButtonDown() && (mPushImage != null))
104
                        mPushImage.render();
105
                else
106
                        mImage.render();
107
 
108
                super.render();
109
        }
110
 
111
        public boolean parseLine(String identifier, Tokenizer tokenizer) throws ScanException  
112
        {
113
                if (identifier.equalsIgnoreCase("texture"))
114
                {
115
                        mTextureName = MenuUtil.parseString(tokenizer);
116
                }
117
                else if (identifier.equalsIgnoreCase("pushTexture"))
118
                {
119
                        mPushTextureName = MenuUtil.parseString(tokenizer);
120
                }
121
                else
122
                {
123
                        return super.parseLine(identifier, tokenizer);
124
                }              
125
                return true;
126
        }
127
 
128
        // Getters/Setters==================================================================================
129
 
130
}