From 44d9d278adc21c2461ae66efcd21acef9c9fdb8a Mon Sep 17 00:00:00 2001 From: "Sergei Ivanov (Districh)" Date: Wed, 16 Oct 2024 18:03:42 +0300 Subject: [PATCH 1/5] Update the ui_button code --- src/fheroes2/gui/ui_button.cpp | 137 ++++++++------------------------- src/fheroes2/gui/ui_button.h | 123 +++++++++++++++++++++-------- 2 files changed, 125 insertions(+), 135 deletions(-) diff --git a/src/fheroes2/gui/ui_button.cpp b/src/fheroes2/gui/ui_button.cpp index 52498427041..ad8348340a9 100644 --- a/src/fheroes2/gui/ui_button.cpp +++ b/src/fheroes2/gui/ui_button.cpp @@ -267,16 +267,6 @@ namespace namespace fheroes2 { - ButtonBase::ButtonBase( const int32_t offsetX, const int32_t offsetY ) - : _offsetX( offsetX ) - , _offsetY( offsetY ) - , _isPressed( false ) - , _isEnabled( true ) - , _isVisible( true ) - , _releasedSprite( nullptr ) - , _disabledSprite() - {} - bool ButtonBase::press() { if ( !isEnabled() ) { @@ -343,7 +333,7 @@ namespace fheroes2 return true; } - bool ButtonBase::drawOnPress( Display & output ) + bool ButtonBase::drawOnPress() { if ( isPressed() ) { return false; @@ -354,13 +344,14 @@ namespace fheroes2 } if ( isVisible() ) { + Display & output = Display::instance(); draw( output ); output.render( area() ); } return true; } - bool ButtonBase::drawOnRelease( Display & output ) + bool ButtonBase::drawOnRelease() { if ( !isPressed() ) { return false; @@ -371,6 +362,7 @@ namespace fheroes2 } if ( isVisible() ) { + Display & output = Display::instance(); draw( output ); output.render( area() ); } @@ -380,7 +372,7 @@ namespace fheroes2 Rect ButtonBase::area() const { const Sprite & sprite = isPressed() ? _getPressed() : _getReleased(); - return Rect( _offsetX + sprite.x(), _offsetY + sprite.y(), sprite.width(), sprite.height() ); + return { _offsetX + sprite.x(), _offsetY + sprite.y(), sprite.width(), sprite.height() }; } const Sprite & ButtonBase::_getDisabled() const @@ -392,34 +384,7 @@ namespace fheroes2 ApplyPalette( *_disabledSprite, PAL::GetPalette( PAL::PaletteType::DARKENING ) ); } - return *_disabledSprite.get(); - } - - Button::Button( int32_t offsetX, int32_t offsetY ) - : ButtonBase( offsetX, offsetY ) - , _icnId( -1 ) - , _releasedIndex( 0 ) - , _pressedIndex( 0 ) - {} - - Button::Button( int32_t offsetX, int32_t offsetY, int icnId, uint32_t releasedIndex, uint32_t pressedIndex ) - : ButtonBase( offsetX, offsetY ) - , _icnId( icnId ) - , _releasedIndex( releasedIndex ) - , _pressedIndex( pressedIndex ) - {} - - void Button::setICNInfo( int icnId, uint32_t releasedIndex, uint32_t pressedIndex ) - { - _icnId = icnId; - _releasedIndex = releasedIndex; - _pressedIndex = pressedIndex; - } - - void Button::setICNIndexes( const uint32_t releasedIndex, const uint32_t pressedIndex ) - { - _releasedIndex = releasedIndex; - _pressedIndex = pressedIndex; + return *_disabledSprite; } const Sprite & Button::_getPressed() const @@ -432,24 +397,6 @@ namespace fheroes2 return AGG::GetICN( _icnId, _releasedIndex ); } - ButtonSprite::ButtonSprite( int32_t offsetX, int32_t offsetY ) - : ButtonBase( offsetX, offsetY ) - {} - - ButtonSprite::ButtonSprite( int32_t offsetX, int32_t offsetY, Sprite released, Sprite pressed, Sprite disabled ) - : ButtonBase( offsetX, offsetY ) - , _released( std::move( released ) ) - , _pressed( std::move( pressed ) ) - , _disabled( std::move( disabled ) ) - {} - - void ButtonSprite::setSprite( const Sprite & released, const Sprite & pressed, const Sprite & disabled ) - { - _released = released; - _pressed = pressed; - _disabled = disabled; - } - const Sprite & ButtonSprite::_getPressed() const { return _pressed; @@ -469,7 +416,7 @@ namespace fheroes2 return _disabled; } - ButtonGroup::ButtonGroup( const Rect & area, int buttonTypes ) + ButtonGroup::ButtonGroup( const Rect & area /* = Rect() */, const int buttonTypes /* = 0 */ ) { const bool isEvilInterface = Settings::Get().isEvilInterfaceEnabled(); @@ -518,60 +465,39 @@ namespace fheroes2 } } - ButtonGroup::~ButtonGroup() - { - for ( size_t i = 0; i < _button.size(); ++i ) { - delete _button[i]; - } - - _button.clear(); - _value.clear(); - } - - void ButtonGroup::createButton( int32_t offsetX, int32_t offsetY, int icnId, uint32_t releasedIndex, uint32_t pressedIndex, int returnValue ) + void ButtonGroup::createButton( const int32_t offsetX, const int32_t offsetY, const int icnId, const uint32_t releasedIndex, const uint32_t pressedIndex, + const int returnValue ) { - _button.push_back( new Button( offsetX, offsetY, icnId, releasedIndex, pressedIndex ) ); + _button.push_back( std::make_unique