mirror of
				https://gitlab.com/klmp200/LO41.git
				synced 2025-10-31 01:03:05 +00:00 
			
		
		
		
	Le réparateur, j'ai pas testé lol
This commit is contained in:
		
							
								
								
									
										47
									
								
								ElevatorBreaker/ElevatorBreaker.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								ElevatorBreaker/ElevatorBreaker.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| // | ||||
| // Created by Antoine Bartuccio on 22/06/2018. | ||||
| // | ||||
|  | ||||
| #include <unistd.h> | ||||
|  | ||||
| #include "ElevatorBreaker.h" | ||||
| #include "../SharedData/SharedData.h" | ||||
|  | ||||
| SETTER(ElevatorBreaker, int, thread_number); | ||||
|  | ||||
| void _free__ElevatorBreaker(THIS(ElevatorBreaker)){ | ||||
| 	free(this); | ||||
| } | ||||
|  | ||||
| void * runnable_ElevatorBreaker(void * void_this){ | ||||
| 	ElevatorBreaker *this = (ElevatorBreaker*) void_this; | ||||
| 	Elevator *selected_elevator = NULL; | ||||
| 	SharedData *data = GET_INSTANCE(SharedData); | ||||
|  | ||||
| 	AGENT_OPTIONS | ||||
|  | ||||
| 	while (data->is_active_passengers_left(data)){ | ||||
| 		usleep(900000); | ||||
| 		// One chance out of two to break something | ||||
| 		if ((rand() % 101) > 50) { | ||||
| 			selected_elevator = data->get_main_building(data)->elevators[rand() % ELEVATOR_NB]; | ||||
| 			selected_elevator->damage(selected_elevator); | ||||
| 			printf("ALERTE : L'ascenseur %s est endommagé\n", selected_elevator->name); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	data->unregister_thread(data, this->thread_number); | ||||
| 	return NULL; | ||||
| } | ||||
|  | ||||
| ElevatorBreaker *_init_ElevatorBreaker(){ | ||||
| 	ElevatorBreaker *new_elevator_breaker = malloc_or_die(sizeof(ElevatorBreaker)); | ||||
| 	new_elevator_breaker->thread_number = -1; | ||||
|  | ||||
| 	LINK_ALL(ElevatorBreaker, new_elevator_breaker, | ||||
| 			 set_thread_number, | ||||
| 			 runnable | ||||
| 	) | ||||
|  | ||||
| 	return new_elevator_breaker; | ||||
| } | ||||
							
								
								
									
										22
									
								
								ElevatorBreaker/ElevatorBreaker.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								ElevatorBreaker/ElevatorBreaker.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| // | ||||
| // Created by Antoine Bartuccio on 22/06/2018. | ||||
| // | ||||
|  | ||||
| #ifndef LO41_ELEVATORBREAKER_H | ||||
| #define LO41_ELEVATORBREAKER_H | ||||
|  | ||||
| #include "../Objects.h" | ||||
|  | ||||
| typedef struct o_ElevatorBreaker { | ||||
| 	PRIVATE int thread_number; | ||||
|  | ||||
| 	PUBLIC void * (*runnable)(void * void_this); | ||||
| 	PUBLIC void (*set_thread_number)(_THIS(ElevatorBreaker), int data); | ||||
|  | ||||
| 	DESTRUCTOR(ElevatorBreaker); | ||||
|  | ||||
| } ElevatorBreaker; | ||||
|  | ||||
| ElevatorBreaker *_init_ElevatorBreaker(); | ||||
|  | ||||
| #endif //LO41_ELEVATORBREAKER_H | ||||
		Reference in New Issue
	
	Block a user