profileoptionsui.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. class ProfileOptionsUI extends ScriptedWidgetEventHandler
  2. {
  3. void ~ProfileOptionsUI()
  4. {
  5. Deattach();
  6. }
  7. void Attach(int profileOption, array<Widget> widget_array)
  8. {
  9. m_profileOption = profileOption;
  10. m_widget_array = new array<Widget>;
  11. m_widget_array = widget_array;
  12. for (int i = 0; i < m_widget_array.Count(); i++)
  13. {
  14. m_widget = m_widget_array.Get(i);
  15. if (m_widget)
  16. {
  17. m_widget.SetHandler(this);
  18. Init();
  19. }
  20. }
  21. }
  22. void Deattach()
  23. {
  24. //m_profileOption = NULL;
  25. if (m_widget_array && m_widget_array.Count() > 0)
  26. {
  27. for (int i = 0; i < m_widget_array.Count(); i++)
  28. {
  29. m_widget = m_widget_array.Get(i);
  30. if (m_widget)
  31. {
  32. m_widget.SetHandler(NULL);
  33. m_widget = NULL;
  34. }
  35. }
  36. }
  37. }
  38. void Init()
  39. {
  40. int state;
  41. ButtonWidget button;
  42. if ( Class.CastTo(button, m_widget) )
  43. {
  44. state = m_widget_array.Find(m_widget);
  45. button.SetState( g_Game.GetProfileOption(m_profileOption) == state ); //works for bool values only!!!
  46. }
  47. }
  48. void SetValue()
  49. {
  50. int state;
  51. ButtonWidget button;
  52. if ( Class.CastTo(button, m_widget) )
  53. {
  54. state = m_widget_array.Find(m_widget);
  55. SetButtonStates( state );
  56. }
  57. }
  58. override bool OnClick(Widget w, int x, int y, int button)
  59. {
  60. super.OnClick(w, x, y, button);
  61. m_widget = w;
  62. SetValue();
  63. return false;
  64. }
  65. //TODO check for unnescessary duplicate methods
  66. void SetButtonStates(int index)
  67. {
  68. ButtonWidget button;
  69. for (int i = 0; i < m_widget_array.Count(); i++)
  70. {
  71. button = ButtonWidget.Cast( m_widget_array.Get(i) );
  72. if (button)
  73. {
  74. button.SetState( i == index );
  75. }
  76. }
  77. }
  78. array<Widget> GetWidgetArray()
  79. {
  80. return m_widget_array;
  81. }
  82. int GetProfileOption()
  83. {
  84. return m_profileOption;
  85. }
  86. int m_profileOption;
  87. Widget m_widget;
  88. ref array<Widget> m_widget_array;
  89. }