public Action <IRoom> this[RoomEventType eventType] { get { if (isActiveAndEnabled) { if (_actions == null) { _actions = new EnumActionDictionary <RoomEventType, IRoom>(); foreach (var listener in _roomEventsListeners.GetCachedComponets <IRoomEventListener>()) { foreach (var roomEvent in StructsExtentions.GetEnumValues <RoomEventType>()) { if (listener[roomEvent] != null) { _actions[roomEvent] += listener[roomEvent]; } } } } return(_actions[eventType]); } return(null); } }
public override void AddWall(Orientation orientation, Collider2D collider) { if (_collidersCollection == null) { _collidersCollection = new Dictionary <Orientation, ICollection <Collider2D> > (StructsExtentions.EnumLength <Orientation>()); } _collidersCollection.Add(orientation, new List <Collider2D>(byte.MaxValue) { collider }); }
public RoomEventListenerCollector(bool listenAllRooms, IEnumerable <IRoomEventListener> listeners) { ShouldListenAllRooms = listenAllRooms; _actions = new EnumActionDictionary <RoomEventType, IRoom>(); foreach (var listener in listeners) { foreach (var key in StructsExtentions.GetEnumValues <RoomEventType>()) { if (listener[key] != null) { _actions[key] += listener[key]; } } } }