def __init__(self, name: str, age: int, startingPlace: place.Place, needTypes: [need_type.NeedType], diseaseTypes: [disease_type.DiseaseType], behaviour: person_behaviour.PersonBehaviour, socialBehaviour: float): self.name: str = name self.age: int = age self.travelData = None self.currentPosition: place.Place = startingPlace self.currentDestination: place.Place = startingPlace self.task: schedule.ScheduleItem = None self.needs: Dict[need_type.NeedType, float] = {} for needType in needTypes: self.needs[needType] = random.uniform(0, 1) self.diseases: Dict[disease_type.DiseaseType, disease.Disease] = {} for diseaseType in diseaseTypes: self.diseases[diseaseType] = disease.Disease(diseaseType) self.behaviour: person_behaviour.PersonBehaviour = behaviour self.socialBehaviour: float = socialBehaviour self.friends = set() self.friends0 = set()
def trySatisfy(self, person, needValue, now): workplace = self.workplaces[person] if workplace.isOpen(now): return schedule.ScheduleItem( workplace, now.now(), now.now() + random.uniform(2 * time.HOUR, 4 * time.HOUR), self) else: return None
def trySatisfy(self, person, needValue, now): distmap = self.grid.getDistanceMap() nearparks = distmap.getNearPlaces(person.currentPosition.x, person.currentPosition.y, place_characteristics.SubType.PARK) for (pos, _, __) in nearparks: x, y = pos if self.grid.get(x, y).isOpen(now): return schedule.ScheduleItem( self.grid.get(x, y), now.now(), now.now() + random.uniform(time.HOUR, 2 * time.HOUR), self) return None
def trySatisfy(self, person, needValue, now): if person in self.gatherings and self.gatherings[ person].stop < now.now() - 30 * time.MINUTE: return self.gatherings[person] startTime = now.now() duration = random.uniform(time.HOUR, 3 * time.HOUR) endTime = startTime + duration possiblePlaces = [self.sleep.homes[person] ] + [p for p in self.massEvents if p.isOpen(now)] date = schedule.ScheduleItem(random.choice(possiblePlaces), startTime, endTime, self) for p in person.friends: self.gatherings[p] = date return date
def trySatisfy(self, person, needValue, now): return schedule.ScheduleItem( self.homes[person], now.now(), now.now() + random.uniform(2 * time.HOUR, 4 * time.HOUR), self)