#include "StdAfx.h" #include "PushButton.h" #include "UIEvent.h" #include "UIImage.h" #include "UIContainer.h" #include "FontAgent.h" #include "SoundSystem.h" cPushButton::cPushButton( eUINodeType type ) : cButton( type ) { mPressed = false; mHovered = false; mUpColor = mDefaultColor; mDownColor = mDefaultColor; mProcessEnable = false; } cPushButton::~cPushButton() { } void cPushButton::Hide() { cUINode::Hide(); } /// ÁÖÀÇ»çÇ× : void cPushButton::OnRender( cUIFontItemKeeper* pKeeper ) { /// À̹ÌÁö ·»´õ¸µ if( mpImage ) mpImage->Draw(); if( mPressed ) pKeeper->AddFontItem( cFontAgent::eFont_UI, const_cast(mText.Cstr()), mTextPosX, mTextPosY+1, mDownColor, mOutLine ); else pKeeper->AddFontItem( cFontAgent::eFont_UI, const_cast(mText.Cstr()), mTextPosX, mTextPosY, mUpColor, mOutLine ); } /// ÁÖÀÇ»çÇ× : È£¹ö ³ëµå À̺¥Æ® ¹ÞÀ½ void cPushButton::OnMouseMove( const cUIPos& ) { } /// ÁÖÀÇ»çÇ× : void cPushButton::OnMouseHovered( const cUIPos& pos ) { cUINode::OnMouseHovered( pos ); mHovered = true; if( mPressed ) { mpImage->SetTextureRect( (unsigned short)mDownOverPos.mX, (unsigned short)mDownOverPos.mY, (unsigned short)(mDownOverPos.mX + mOriginalTexWidth), (unsigned short)(mDownOverPos.mY + mOriginalTexHeight) ); } else { mpImage->SetTextureRect( (unsigned short)mUpOverPos.mX, (unsigned short)mUpOverPos.mY, (unsigned short)(mUpOverPos.mX + mOriginalTexWidth), (unsigned short)(mUpOverPos.mY + mOriginalTexHeight) ); } } /// ÁÖÀÇ»çÇ× : void cPushButton::OnMouseLeft( const cUIPos& pos ) { cUINode::OnMouseLeft( pos ); mHovered = false; if( mPressed ) { mpImage->SetTextureRect( (unsigned short)mDownPos.mX, (unsigned short)mDownPos.mY, (unsigned short)(mDownPos.mX + mOriginalTexWidth), (unsigned short)(mDownPos.mY + mOriginalTexHeight) ); } else { mpImage->SetTextureRect( (unsigned short)mUpPos.mX, (unsigned short)mUpPos.mY, (unsigned short)(mUpPos.mX + mOriginalTexWidth), (unsigned short)(mUpPos.mY + mOriginalTexHeight) ); } } /// ÁÖÀÇ»çÇ× : void cPushButton::OnLButtonDown( const cUIPos& pos, bool ctrl, bool alt, bool shift ) { cUINode::OnLButtonDown( pos, ctrl, alt, shift ); mPressed = !mPressed; if( mPressed ) { SOUNDSYS->Play2DSound( mDownSoundIdx ); mpImage->SetTextureRect( (unsigned short)mDownOverPos.mX, (unsigned short)mDownOverPos.mY, (unsigned short)(mDownOverPos.mX + mOriginalTexWidth), (unsigned short)(mDownOverPos.mY + mOriginalTexHeight) ); } else { SOUNDSYS->Play2DSound( mUpSoundIdx ); mpImage->SetTextureRect( (unsigned short)mUpOverPos.mX, (unsigned short)mUpOverPos.mY, (unsigned short)(mUpOverPos.mX + mOriginalTexWidth), (unsigned short)(mUpOverPos.mY + mOriginalTexHeight) ); } /// À̺¥Æ® ¹ß»ý cUIEvent event; event.mType = eUIEVENT_PUSHBUTTON_PRESSED; event.mpCaller = this; event.mID = mID; mpParent->HandleEvent( event ); } /// ÁÖÀÇ»çÇ× : void cPushButton::OnLButtonDoubleClick( const cUIPos& pos ) { /// cPushButton ÀÇ OnLButtonDown ÄÝ OnLButtonDown( pos, 0, 0, 0 ); } /// ÁÖÀÇ»çÇ× : void cPushButton::OnLButtonUp( const cUIPos& ) { } /// ÁÖÀÇ»çÇ× : void cPushButton::SetPress( bool press ) { mPressed = press; /// ´­·È´ÂÁö ¾È´­·Ç´ÂÁö ÆÇ´ÜÇØ¼­ ¼Ò½º À̹ÌÁö ¹Ù²Þ if( mPressed ) { mpImage->SetTextureRect( (unsigned short)mDownPos.mX, (unsigned short)mDownPos.mY, (unsigned short)(mDownPos.mX + mOriginalTexWidth), (unsigned short)(mDownPos.mY + mOriginalTexHeight) ); } else { mpImage->SetTextureRect( (unsigned short)mUpPos.mX, (unsigned short)mUpPos.mY, (unsigned short)(mUpPos.mX + mOriginalTexWidth), (unsigned short)(mUpPos.mY + mOriginalTexHeight) ); } }