mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
Add proportionality support for GameUI panels (#35)
* Add proportionality support for GameUI panels * Add Android platform define * Fix button wrong state on fast clicking Co-authored-by: JusicP <slender87844@gmail.com>
This commit is contained in:
@@ -145,9 +145,15 @@ void MessageBox::ApplySchemeSettings(IScheme *pScheme)
|
||||
int wide, tall;
|
||||
m_pMessageLabel->GetContentSize(wide, tall);
|
||||
m_pMessageLabel->SetSize(wide, tall);
|
||||
|
||||
int indent = 100;
|
||||
if (IsProportional())
|
||||
{
|
||||
indent = scheme()->GetProportionalScaledValueEx(GetScheme(), 100);
|
||||
}
|
||||
|
||||
wide += 100;
|
||||
tall += 100;
|
||||
wide += indent;
|
||||
tall += indent;
|
||||
SetSize(wide, tall);
|
||||
|
||||
if ( m_bShowMessageBoxOverCursor )
|
||||
@@ -243,7 +249,7 @@ void MessageBox::ShowWindow(Frame *pFrameOver)
|
||||
// Purpose: Put the text and OK buttons in correct place
|
||||
//-----------------------------------------------------------------------------
|
||||
void MessageBox::PerformLayout()
|
||||
{
|
||||
{
|
||||
int x, y, wide, tall;
|
||||
GetClientArea(x, y, wide, tall);
|
||||
wide += x;
|
||||
@@ -255,38 +261,51 @@ void MessageBox::PerformLayout()
|
||||
int oldWide, oldTall;
|
||||
m_pOkButton->GetSize(oldWide, oldTall);
|
||||
|
||||
// calc proportionality scale
|
||||
float scale = 1;
|
||||
if (IsProportional())
|
||||
{
|
||||
int screenW, screenH;
|
||||
surface()->GetScreenSize(screenW, screenH);
|
||||
|
||||
int proW, proH;
|
||||
surface()->GetProportionalBase(proW, proH);
|
||||
|
||||
scale = ((float)(screenH) / (float)(proH));
|
||||
}
|
||||
|
||||
int btnWide, btnTall;
|
||||
m_pOkButton->GetContentSize(btnWide, btnTall);
|
||||
btnWide = max(oldWide, btnWide + 10);
|
||||
btnTall = max(oldTall, btnTall + 10);
|
||||
btnWide = max(oldWide, btnWide + 10 * scale);
|
||||
btnTall = max(oldTall, btnTall + 10 * scale);
|
||||
m_pOkButton->SetSize(btnWide, btnTall);
|
||||
|
||||
|
||||
int btnWide2 = 0, btnTall2 = 0;
|
||||
if ( m_pCancelButton->IsVisible() )
|
||||
{
|
||||
m_pCancelButton->GetSize(oldWide, oldTall);
|
||||
|
||||
m_pCancelButton->GetContentSize(btnWide2, btnTall2);
|
||||
btnWide2 = max(oldWide, btnWide2 + 10);
|
||||
btnTall2 = max(oldTall, btnTall2 + 10);
|
||||
m_pCancelButton->SetSize(btnWide2, btnTall2);
|
||||
btnWide2 = max(oldWide, btnWide2 + 10 * scale);
|
||||
btnTall2 = max(oldTall, btnTall2 + 10 * scale);
|
||||
m_pCancelButton->SetSize(btnWide2, boxTall);
|
||||
}
|
||||
|
||||
boxWidth = max(boxWidth, m_pMessageLabel->GetWide() + 100);
|
||||
boxWidth = max(boxWidth, (btnWide + btnWide2) * 2 + 30);
|
||||
boxWidth = max(boxWidth, m_pMessageLabel->GetWide() + 100 * scale);
|
||||
boxWidth = max(boxWidth, (btnWide + btnWide2) * 2 + 30 * scale);
|
||||
SetSize(boxWidth, boxTall);
|
||||
|
||||
GetSize(boxWidth, boxTall);
|
||||
|
||||
m_pMessageLabel->SetPos((wide/2)-(m_pMessageLabel->GetWide()/2) + x, y + 5 );
|
||||
m_pMessageLabel->SetPos((wide/2)-(m_pMessageLabel->GetWide()/2) + x, y + 5 * scale);
|
||||
if ( !m_pCancelButton->IsVisible() )
|
||||
{
|
||||
m_pOkButton->SetPos((wide/2)-(m_pOkButton->GetWide()/2) + x, tall - m_pOkButton->GetTall() - 15);
|
||||
m_pOkButton->SetPos((wide/2)-(m_pOkButton->GetWide()/2) + x, tall - m_pOkButton->GetTall() - 15 * scale);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pOkButton->SetPos((wide/4)-(m_pOkButton->GetWide()/2) + x, tall - m_pOkButton->GetTall() - 15);
|
||||
m_pCancelButton->SetPos((3*wide/4)-(m_pOkButton->GetWide()/2) + x, tall - m_pOkButton->GetTall() - 15);
|
||||
m_pOkButton->SetPos((wide/4)-(m_pOkButton->GetWide()/2) + x, tall - m_pOkButton->GetTall() - 15 * scale);
|
||||
m_pCancelButton->SetPos((3*wide/4)-(m_pOkButton->GetWide()/2) + x, tall - m_pOkButton->GetTall() - 15 * scale);
|
||||
}
|
||||
|
||||
BaseClass::PerformLayout();
|
||||
|
||||
Reference in New Issue
Block a user