/// <summary> /// Finds a level subevents for certain subevent. /// </summary> /// <param name="levelSubevents">Level subevents pack in which to search for an desired value.</param> /// <param name="desiredEvent">Desired value.</param> /// <param name="isPackContainsOnlyDesiredEvent">Condition to find level subevent with only desired value.</param> /// <returns>Level subevent contains desired value or null if unable to find.</returns> public static Dictionary <EventType, AbstractSdkEventV1[]> FindSubeventPackForEvent( this IEnumerable <Dictionary <EventType, AbstractSdkEventV1[]> > levelSubevents, AbstractSdkEventV1 desiredEvent, bool isPackContainsOnlyDesiredEvent = true ) { if (desiredEvent == null) { return(null); } foreach (Dictionary <EventType, AbstractSdkEventV1[]> packedSubevent in levelSubevents) { if (packedSubevent == null) { continue; } foreach (AbstractSdkEventV1[] unpackedEventsArray in packedSubevent.Values) { bool searchCondition = isPackContainsOnlyDesiredEvent ? (unpackedEventsArray.Contains(desiredEvent) && unpackedEventsArray.Length == 1) : unpackedEventsArray.Contains(desiredEvent); if (searchCondition) { return(packedSubevent); } } } return(null); }
public static ProxyPackageInfoV1 FindPackageForSubEvent( this AbstractSdkEventV1 desiredEvent, IEnumerable <ProxyPackageInfoV1> packages ) { Dictionary <EventType, AbstractSdkEventV1[]> subEventPack = packages.GetAllLuEvents().GetAllLevelSubevents().FindSubeventPackForEvent(desiredEvent); Dictionary <int, LuEvent> luEvent = packages.GetAllLuEvents().FindLuEventForEventsPack(subEventPack); return(packages.FindPackageForLuEvent(luEvent)); }