#include "coineditorblock.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() / size_divisor; _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 != nullptr && !hidden ) { _amount_text->render(); } } void CoinEditorBlock::updateSizeAndPosition() { MarioBlock::updateSizeAndPosition(); auto block_size = getDoubleRect().second; _amount_text->setPos( getPos() + block_size - block_size / size_divisor ); _amount_text->updateSizeAndPosition(); } void CoinEditorBlock::addOne() { if ( _amount < max_amount ) { _amount++; updateText(); } } void CoinEditorBlock::subtractOne() { if ( _amount > 1 ) { _amount--; updateText(); } } void CoinEditorBlock::setAmount( int amount ) { if ( amount < 1 ) { amount = 1; } else if ( amount > max_amount ) { amount = max_amount; } _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() const { return _amount; } void CoinEditorBlock::setData( uint8_t data ) { setAmount( data ); }