// // Created by Antoine Bartuccio on 06/06/2018. // #include "Visitor.h" #include "../SharedData/SharedData.h" #include GETTER(Visitor, char*, name); GETTER(Visitor, int, destination); GETTER(Visitor, int, id); void * runnable_Visitor(void * void_this){ Visitor *this = (Visitor*) void_this; SharedData * data = GET_INSTANCE(SharedData); Passenger * passenger = NEW(Passenger, (void*) this, VISITOR); AGENT_OPTIONS; this->passenger = (void*) passenger; passenger->visitor = this; printf("Bonjour, je suis %s et je souhaite rendre visite a %s\n", this->name, this->contact_name); printf("Bip, %s appel a l'interphone\n%s habite a l'etage %d\n", this->name, this->contact_name, (this->destination = data->use_call_box(data, this->contact_name))); data->main_building->go_to_floor(data->main_building, this->position, this->destination, passenger); data->decrement_active_passengers(data); return NULL; } void _free__Visitor(THIS(Visitor)){ if (this->name != NULL) free(this->name); if (this->contact_name != NULL) free(this->contact_name); if (this->passenger != NULL) free(this->passenger); free(this); } Visitor *_init_Visitor(int id, char* name, char * contact_name){ Visitor * new_visitor = malloc_or_die(sizeof(Visitor)); new_visitor->name = strdup(name); new_visitor->id = id; new_visitor->position = 0; new_visitor->destination = -1; new_visitor->passenger = NULL; if (contact_name != NULL) new_visitor->contact_name = strdup(contact_name); else new_visitor->contact_name = NULL; LINK_ALL(Visitor, new_visitor, get_name, get_destination, get_id, runnable ); return new_visitor; }