public void Fire(IActivityTarget target)
        {
            foreach (var person in target.People) {
                Fire (person);
            }

            if (target.People.Length > 0) {
                target.People = new Person[]{ };
            }
        }
        public void AddWorkerToTarget(IActivityTarget target, Person person)
        {
            var people = new List<Person> ();

            people.AddRange (
                (from p in target.People
                where p.Id == person.Id
                    select p
                ).ToArray()
            );
            people.Add (person);
            target.People = people.ToArray ();
        }
 public int Hire(Tile tile, int numberOfWorkersToHire, ActivityType employmentType, IActivityTarget target)
 {
     if (numberOfWorkersToHire > tile.TotalInactive)
         return 0;
     else {
         //tile.Workers += numberOfWorkersToHire;
         int numberOfWorkersHired = 0;
         foreach (var person in tile.People) {
             if (person.CanWork && !person.IsActive
                 && numberOfWorkersHired < numberOfWorkersToHire) {
                 Hire (tile, person, employmentType, target);
                 numberOfWorkersHired++;
             }
         }
         return numberOfWorkersHired;
     }
 }
        public void Hire(Tile tile, Person person, ActivityType employmentType, IActivityTarget target)
        {
            person.ActivityType = employmentType;
            person.ActivityTarget = target;

            AddWorkerToTarget (target, person);
        }