#include "coineditorblock.hpp" #include "../objectids.hpp" CoinEditorBlock::CoinEditorBlock(int x, int y, std::shared_ptr 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( 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); }