/// <summary> /// Performs all the actions every HTE /// </summary> public void PerformAllActions() { // Adding new guests foreach (var item in ArivingGuests) { ((Guest)item).RegisterAs(); item.SetPath(GetArea(typeof(Reception))); HotelMovables.Add(item); } ArivingGuests.Clear(); // Performing all actions lock (HotelMovables) { foreach (IMovable item in HotelMovables) { if (!(item is null)) { item.PerformAction(); } } } // Removing guests that have checked out foreach (var item in LeavingGuests) { HotelMovables.Remove(item); } LeavingGuests.Clear(); }
/// <summary> /// Handles checkin events and add the ariving guest to the list /// </summary> /// <param name="evt">The given event</param> public void Notify(HotelEvent evt) { if (evt.EventType.Equals(HotelEventType.CHECK_IN)) { string name = string.Empty; string request = string.Empty; int requestInt; int id = 0; if (!(evt.Data is null)) { foreach (var DataSet in evt.Data) { if (DataSet.Key.Contains("Gast")) { id = int.Parse(Regex.Match(DataSet.Key, @"\d+").Value); } } name = evt.Data.FirstOrDefault().Key; request = evt.Data.FirstOrDefault().Value; requestInt = int.Parse(Regex.Match(request, @"\d+").Value); } else { // Kill test events return; } Guest guest = new Guest(this, name, requestInt, new Point(0, HotelHeight), id) { Area = HotelAreas.Find(X => X.Position == new Point(0, HotelHeight)) }; guest.Area = HotelAreas.Find(X => X.Position == guest.Position); guest.Hotel = this; ArivingGuests.Add(guest); }