#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( 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); }