private void RemoveFightEventListeners(int companionDefinitionId, int fightId, bool status) { List <EventCategory> list = new List <EventCategory>(); Dictionary <EventCategory, List <int> > dictionary = status ? m_companionsPerCategoryInvalidatingStatus : m_companionsPerCategoryInvalidatingView; foreach (KeyValuePair <EventCategory, List <int> > item in dictionary) { for (int num = item.Value.Count - 1; num >= 0; num--) { if (item.Value[num] == companionDefinitionId) { item.Value.RemoveAt(num); break; } } if (item.Value.Count == 0) { list.Add(item.Key); } } foreach (EventCategory item2 in list) { if (status) { FightLogicExecutor.RemoveListenerUpdateStatus(fightId, OnCastingValidityUpdated, item2); } else { FightLogicExecutor.RemoveListenerUpdateView(fightId, OnCastingValidityViewUpdated, item2); } dictionary.Remove(item2); } }