class IconsContainer: Container { protected ref map m_EntitiesMap = new map; void IconsContainer( LayoutHolder parent ) { } override void UnfocusAll() { for ( int i = 0; i < Count(); i++ ) { for ( int j = 0; j < ITEMS_IN_ROW; j++ ) { Get( i ).GetMainWidget().FindAnyWidget( "Cursor" + j ).Show( false ); } } for ( i = 0; i < m_EntitiesMap.Count(); ++i ) { m_EntitiesMap.GetElement(i).SetActive(false); } } int GetItemCount() { return m_EntitiesMap.Count(); } void AddItem( Icon icon ) { if( !m_EntitiesMap.Contains( icon.GetObject().GetID() ) ) { m_EntitiesMap.Insert( icon.GetObject().GetID(), icon); } } Icon GetIcon( int entity_id ) { return m_EntitiesMap.Get( entity_id ); } Icon GetIconByIndex( int index ) { if( index < m_EntitiesMap.Count() && index > -1 ) return m_EntitiesMap.GetElement( index ); return null; } void RemoveItem( Icon icon ) { if( icon ) { Icon icon_copy = icon; // for some reason garbage collector collects icon too soon, so copy has to be made if( icon.GetObject() ) m_EntitiesMap.Remove( icon.GetObject().GetID() ); else { int ix = m_EntitiesMap.GetKeyByValue( icon ); if( m_EntitiesMap.Contains( ix ) ) m_EntitiesMap.Remove( ix ); else delete icon; } } } void RemoveItem( int entity ) { m_EntitiesMap.Remove( entity ); } bool ContainsEntity( EntityAI entity ) { return m_EntitiesMap.Contains( entity.GetID() ); } void UpdateItemsTemperature() { if( !ItemManager.GetInstance().IsDragging() ) { for( int i = 0; i < m_EntitiesMap.Count(); i++ ) { Icon icon = m_EntitiesMap.GetElement(i); icon.SetTemperature(); } } } override void Refresh() { super.Refresh(); for( int i = 0; i < m_EntitiesMap.Count(); i++ ) { m_EntitiesMap.GetElement(i).Refresh(); } } }