/// <summary> /// Hotel is going to be notified because there can only be one item registered in the listener /// Hotel will "notify" humans and locationtypes /// </summary> /// <param name="evt"></param> public void Notify(HotelEvent evt) { // Sometimes we have more destinations List <LocationType> destination = new List <LocationType>(); // The visitor we have found from the list Visitor visitor = null; // We search on basis off the event enumeration switch (evt.EventType) { // When visitor wants to checkin case HotelEventType.CHECK_IN: visitor = CreateVisitor(evt.Data); // Giving visitor a location visitor.GetCurrentEvent(evt); // Visitor mag starten visitor.PathToLocationType(); break; case HotelEventType.GOTO_CINEMA: case HotelEventType.GOTO_FITNESS: case HotelEventType.CHECK_OUT: visitor = lobby.SearchVisitor(evt.Data); if (visitor != null) { visitor.GetCurrentEvent(evt); visitor.PathToLocationType(); } break; // When cinema is going to start case HotelEventType.START_CINEMA: List <LocationType> cinema = new List <LocationType>(); foreach (var item in Facilities) { if (item is Cinema) { cinema.Add(item); } } foreach (var item in cinema) { foreach (var cinemaEvt in evt.Data) { if (cinemaEvt.Value == item.ID.ToString()) { (item as Cinema).StartMovie(); } } } break; // When someone wants to go to a restaurant to eat case HotelEventType.NEED_FOOD: visitor = lobby.SearchVisitor(evt.Data); if (visitor != null) { //Console.WriteLine("eten" + visitor.ID); visitor.GetCurrentEvent(evt); visitor.PathToLocationType(); } break; // When there is an evacuation case HotelEventType.EVACUATE: foreach (var item in lobby.Visitors) { item.GetCurrentEvent(evt); item.PathToLocationType(); } foreach (var item in lobby.Cleaners) { item.GetCurrentEvent(evt); item.CreateGraph(lobby); item.SetWalkingStatus(); } elevator.EmergencyShutdown(); break; // When there is a room to be cleaned case HotelEventType.CLEANING_EMERGENCY: lobby.AddDirtyRoom(evt.Data); break; default: break; } }