mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-26 14:13:18 +00:00
major update
This was SVN commit r290.
This commit is contained in:
@@ -22,38 +22,26 @@ IGUIButtonBehavior::~IGUIButtonBehavior()
|
||||
|
||||
void IGUIButtonBehavior::HandleMessage(const SGUIMessage &Message)
|
||||
{
|
||||
// TODO Gee: easier access functions
|
||||
switch (Message.type)
|
||||
{
|
||||
case GUIM_PREPROCESS:
|
||||
m_Pressed = false;
|
||||
break;
|
||||
|
||||
/* case GUIM_POSTPROCESS:
|
||||
// Check if button has been pressed
|
||||
if (m_Pressed)
|
||||
{
|
||||
// Now check if mouse is released, that means
|
||||
// it's released outside, since GUIM_MOUSE_RELEASE_LEFT
|
||||
// would've handled m_Pressed and reset it already
|
||||
|
||||
// Get input structure
|
||||
/// if (GetGUI()->GetInput()->mRelease(NEMM_BUTTON1))
|
||||
{
|
||||
// Reset
|
||||
m_Pressed = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
*/
|
||||
case GUIM_MOUSE_PRESS_LEFT:
|
||||
if (!GetBaseSettings().m_Enabled)
|
||||
{
|
||||
bool enabled;
|
||||
GUI<bool>::GetSetting(this, "enabled", enabled);
|
||||
|
||||
if (!enabled)
|
||||
break;
|
||||
|
||||
m_Pressed = true;
|
||||
break;
|
||||
} break;
|
||||
|
||||
case GUIM_MOUSE_RELEASE_LEFT:
|
||||
if (!GetBaseSettings().m_Enabled)
|
||||
{
|
||||
bool enabled;
|
||||
GUI<bool>::GetSetting(this, "enabled", enabled);
|
||||
|
||||
if (!enabled)
|
||||
break;
|
||||
|
||||
if (m_Pressed)
|
||||
@@ -62,7 +50,7 @@ void IGUIButtonBehavior::HandleMessage(const SGUIMessage &Message)
|
||||
// BUTTON WAS CLICKED
|
||||
HandleMessage(GUIM_PRESSED);
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
|
||||
case GUIM_SETTINGS_UPDATED:
|
||||
// If it's hidden, then it can't be pressed
|
||||
@@ -74,3 +62,59 @@ void IGUIButtonBehavior::HandleMessage(const SGUIMessage &Message)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CColor IGUIButtonBehavior::ChooseColor()
|
||||
{
|
||||
CColor color, color_over, color_pressed, color_disabled;
|
||||
|
||||
// Yes, the object must possess these settings. They are standard
|
||||
GUI<CColor>::GetSetting(this, "textcolor", color);
|
||||
GUI<CColor>::GetSetting(this, "textcolor-over", color_over);
|
||||
GUI<CColor>::GetSetting(this, "textcolor-pressed", color_pressed);
|
||||
GUI<CColor>::GetSetting(this, "textcolor-disabled", color_disabled);
|
||||
|
||||
bool enabled;
|
||||
GUI<bool>::GetSetting(this, "enabled", enabled);
|
||||
|
||||
if (!enabled)
|
||||
{
|
||||
return GUI<>::FallBackColor(color_disabled, color);
|
||||
}
|
||||
else
|
||||
if (m_MouseHovering)
|
||||
{
|
||||
if (m_Pressed)
|
||||
return GUI<>::FallBackColor(color_pressed, color);
|
||||
else
|
||||
return GUI<>::FallBackColor(color_over, color);
|
||||
}
|
||||
else return color;
|
||||
}
|
||||
|
||||
void IGUIButtonBehavior::DrawButton(const CRect &rect,
|
||||
const float &z,
|
||||
const CStr &sprite,
|
||||
const CStr &sprite_over,
|
||||
const CStr &sprite_pressed,
|
||||
const CStr &sprite_disabled)
|
||||
{
|
||||
if (GetGUI())
|
||||
{
|
||||
bool enabled;
|
||||
GUI<bool>::GetSetting(this, "enabled", enabled);
|
||||
|
||||
if (!enabled)
|
||||
{
|
||||
GetGUI()->DrawSprite(GUI<>::FallBackSprite(sprite_disabled, sprite), z, rect);
|
||||
}
|
||||
else
|
||||
if (m_MouseHovering)
|
||||
{
|
||||
if (m_Pressed)
|
||||
GetGUI()->DrawSprite(GUI<>::FallBackSprite(sprite_pressed, sprite), z, rect);
|
||||
else
|
||||
GetGUI()->DrawSprite(GUI<>::FallBackSprite(sprite_over, sprite), z, rect);
|
||||
}
|
||||
else GetGUI()->DrawSprite(sprite, z, rect);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user