71 lines
1.8 KiB
C++
71 lines
1.8 KiB
C++
|
|
#include "coinblock.hpp"
|
||
|
|
#include "../objectids.hpp"
|
||
|
|
|
||
|
|
CoinEditorBlock::CoinEditorBlock( int x, int y, std::shared_ptr< SDLPP::Renderer > renderer ) :
|
||
|
|
MarioBlock( x, y, renderer, g_translucent_mod_texture, MOD_COIN_SRC, false, false ) {
|
||
|
|
setId(COIN_MODIFIER_ID);
|
||
|
|
auto mypos = getDoubleRect();
|
||
|
|
auto size = mypos.second.getX() / 1.5;
|
||
|
|
_amount_text = std::make_shared<SDLPP::TextRenderer>( mypos.first.getX() + mypos.second.getX() - size, mypos.first.getY() + mypos.second.getX() - size, size, size, renderer, "1", g_text_config );
|
||
|
|
setAlignment(SDLPP::OBJ_CENTER, SDLPP::OBJ_CENTER);
|
||
|
|
_amount_text->setAlignment(SDLPP::OBJ_CENTER, SDLPP::OBJ_CENTER);
|
||
|
|
}
|
||
|
|
|
||
|
|
void CoinEditorBlock::render() {
|
||
|
|
MarioBlock::render();
|
||
|
|
if ( _amount_text != NULL ) {
|
||
|
|
_amount_text->render();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void CoinEditorBlock::updateSizeAndPosition() {
|
||
|
|
MarioBlock::updateSizeAndPosition();
|
||
|
|
auto block_size = getDoubleRect().second;
|
||
|
|
_amount_text->setPos( getPos() + block_size - block_size / 1.5 );
|
||
|
|
_amount_text->updateSizeAndPosition();
|
||
|
|
}
|
||
|
|
|
||
|
|
void CoinEditorBlock::addOne() {
|
||
|
|
if(_amount < 15) {
|
||
|
|
_amount++;
|
||
|
|
updateText();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void CoinEditorBlock::subtractOne() {
|
||
|
|
if(_amount > 1) {
|
||
|
|
_amount--;
|
||
|
|
updateText();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void CoinEditorBlock::setAmount(int amount) {
|
||
|
|
if(amount < 1) {
|
||
|
|
amount = 1;
|
||
|
|
} else if(amount > 15) {
|
||
|
|
amount = 15;
|
||
|
|
}
|
||
|
|
_amount = amount;
|
||
|
|
updateText();
|
||
|
|
}
|
||
|
|
|
||
|
|
void CoinEditorBlock::updateText() {
|
||
|
|
_amount_text->changeText(std::to_string(_amount));
|
||
|
|
}
|
||
|
|
|
||
|
|
void CoinEditorBlock::onScrollUp() {
|
||
|
|
addOne();
|
||
|
|
}
|
||
|
|
|
||
|
|
void CoinEditorBlock::onScrollDown() {
|
||
|
|
subtractOne();
|
||
|
|
}
|
||
|
|
|
||
|
|
uint8_t CoinEditorBlock::getData() {
|
||
|
|
return _amount;
|
||
|
|
}
|
||
|
|
|
||
|
|
void CoinEditorBlock::setData(uint8_t data) {
|
||
|
|
setAmount(data);
|
||
|
|
}
|