iconscontainer.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. class IconsContainer: Container
  2. {
  3. protected ref map<int, ref Icon> m_EntitiesMap = new map<int, ref Icon>;
  4. void IconsContainer( LayoutHolder parent )
  5. {
  6. }
  7. override void UnfocusAll()
  8. {
  9. for ( int i = 0; i < Count(); i++ )
  10. {
  11. for ( int j = 0; j < ITEMS_IN_ROW; j++ )
  12. {
  13. Get( i ).GetMainWidget().FindAnyWidget( "Cursor" + j ).Show( false );
  14. }
  15. }
  16. for ( i = 0; i < m_EntitiesMap.Count(); ++i )
  17. {
  18. m_EntitiesMap.GetElement(i).SetActive(false);
  19. }
  20. }
  21. int GetItemCount()
  22. {
  23. return m_EntitiesMap.Count();
  24. }
  25. void AddItem( Icon icon )
  26. {
  27. if( !m_EntitiesMap.Contains( icon.GetObject().GetID() ) )
  28. {
  29. m_EntitiesMap.Insert( icon.GetObject().GetID(), icon);
  30. }
  31. }
  32. Icon GetIcon( int entity_id )
  33. {
  34. return m_EntitiesMap.Get( entity_id );
  35. }
  36. Icon GetIconByIndex( int index )
  37. {
  38. if( index < m_EntitiesMap.Count() && index > -1 )
  39. return m_EntitiesMap.GetElement( index );
  40. return null;
  41. }
  42. void RemoveItem( Icon icon )
  43. {
  44. if( icon )
  45. {
  46. Icon icon_copy = icon; // for some reason garbage collector collects icon too soon, so copy has to be made
  47. if( icon.GetObject() )
  48. m_EntitiesMap.Remove( icon.GetObject().GetID() );
  49. else
  50. {
  51. int ix = m_EntitiesMap.GetKeyByValue( icon );
  52. if( m_EntitiesMap.Contains( ix ) )
  53. m_EntitiesMap.Remove( ix );
  54. else
  55. delete icon;
  56. }
  57. }
  58. }
  59. void RemoveItem( int entity )
  60. {
  61. m_EntitiesMap.Remove( entity );
  62. }
  63. bool ContainsEntity( EntityAI entity )
  64. {
  65. return m_EntitiesMap.Contains( entity.GetID() );
  66. }
  67. void UpdateItemsTemperature()
  68. {
  69. if( !ItemManager.GetInstance().IsDragging() )
  70. {
  71. for( int i = 0; i < m_EntitiesMap.Count(); i++ )
  72. {
  73. Icon icon = m_EntitiesMap.GetElement(i);
  74. icon.SetTemperature();
  75. }
  76. }
  77. }
  78. override void Refresh()
  79. {
  80. super.Refresh();
  81. for( int i = 0; i < m_EntitiesMap.Count(); i++ )
  82. {
  83. m_EntitiesMap.GetElement(i).Refresh();
  84. }
  85. }
  86. }