Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.bauzoid.menu;
import com.gebauz.bauzoid.game.Game;
import com.gebauz.bauzoid.graphics.sprite.Sprite;
import com.gebauz.bauzoid.graphics.sprite.SpriteInstance;
import com.gebauz.bauzoid.parser.ScanException;
import com.gebauz.bauzoid.parser.Tokenizer;
/** Implements a Button using an Image and Text.
*
* This kind of button has several semantic changes over the regular Button class:
* - position, size, align refer to the image used
* - The text has its own position (relative to the upper-left edge of the Image)
* - The text has its own alignment
*
*
* @author chiu
*
*/
public class ImageButton
extends Button
{
// Constants========================================================================================
// Embedded Types===================================================================================
// Fields===========================================================================================
private String mTextureName =
"";
private String mPushTextureName =
"";
private Sprite mImageSprite =
null;
private SpriteInstance mImage =
null;
private Sprite mPushImageSprite =
null;
private SpriteInstance mPushImage =
null;
// Methods==========================================================================================
public ImageButton
(Game game,
Menu parent,
String name
)
{
super(game, parent, name
);
}
@
Override
public void init
()
{
super.
init();
//mImage = new Sprite(getGame().getGraphics(), new Texture(Gdx.files.internal(mTextureName)));
mImageSprite =
new Sprite
(getGame
().
getGraphics(), mTextureName
);
mImageSprite.
init();
mImage = mImageSprite.
createSpriteInstance(0);
Image.
setSpriteProperties(mImage,
this);
if (!mPushTextureName.
isEmpty())
{
//mPushImage = new Sprite(getGame().getGraphics(), new Texture(Gdx.files.internal(mPushTextureName)));
mPushImageSprite =
new Sprite
(getGame
().
getGraphics(), mPushTextureName
);
mPushImageSprite.
init();
mPushImage = mPushImageSprite.
createSpriteInstance(0);
if (mPushImage
!=
null)
Image.
setSpriteProperties(mPushImage,
this);
}
}
@
Override
public void exit
()
{
if (mImageSprite
!=
null)
{
mImageSprite.
dispose();
mImageSprite =
null;
}
mImage =
null;
if (mPushImageSprite
!=
null)
{
mPushImageSprite.
dispose();
mPushImageSprite =
null;
}
mPushImage =
null;
super.
exit();
}
@
Override
public void update
(float deltaTime
)
{
super.
update(deltaTime
);
//mImage.update(deltaTime);
Image.
setSpriteProperties(mImage,
this);
if (mPushImage
!=
null)
{
Image.
setSpriteProperties(mPushImage,
this);
//mPushImage.update(deltaTime);
}
}
@
Override
public void render
()
{
if (isButtonDown
() && (mPushImage
!=
null))
mPushImage.
render();
else
mImage.
render();
super.
render();
}
public boolean parseLine
(String identifier, Tokenizer tokenizer
) throws ScanException
{
if (identifier.
equalsIgnoreCase("texture"))
{
mTextureName = MenuUtil.
parseString(tokenizer
);
}
else if (identifier.
equalsIgnoreCase("pushTexture"))
{
mPushTextureName = MenuUtil.
parseString(tokenizer
);
}
else
{
return super.
parseLine(identifier, tokenizer
);
}
return true;
}
// Getters/Setters==================================================================================
}