class MainMenuButtonEffect : ScriptedWidgetEventHandler { reference float speed; reference float amount; protected float m_textProportion; protected float m_textProportion2; protected ButtonWidget m_root; protected ref AnimatorTimer m_anim; // ----------------------------------------------------------- void MainMenuButtonEffect() { if ( GetGame() ) { GetGame().GetUpdateQueue(CALL_CATEGORY_GUI).Insert(this.Update); } m_anim = new AnimatorTimer(); } // ----------------------------------------------------------- void ~MainMenuButtonEffect() { if ( GetGame() && GetGame().GetUpdateQueue(CALL_CATEGORY_GUI) ) { GetGame().GetUpdateQueue(CALL_CATEGORY_GUI).Remove(this.Update); } } // ----------------------------------------------------------- void OnWidgetScriptInit(ButtonWidget w) { m_root = w; m_root.SetHandler(this); } // ----------------------------------------------------------- protected void Update(float tDelta) { m_anim.Tick(tDelta); float p = amount * m_anim.GetValue(); //m_root.SetTextProportion( m_textProportion + (p * 0.5) ); m_root.SetTextOffset( p * 4, 0 ); float c = 1.0 - m_anim.GetValue(); m_root.SetTextColor(ARGBF(1, 1, c, c)); } // ----------------------------------------------------------- override bool OnFocus(Widget w, int x, int y) { //if ( !m_anim.IsRunning() ) m_textProportion = m_root.GetTextProportion(); if ( !m_anim.IsRunning() ) { m_root.GetPos( m_textProportion, m_textProportion2 ); } m_anim.Animate(1.0, speed); return false; } // ----------------------------------------------------------- override bool OnFocusLost(Widget w, int x, int y) { m_anim.Animate(0.0, speed); return false; } };